X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=lexer%2Fmain.c;h=19fc34f8763db78ec958d8d31b7d4e656090b0c8;hb=28280a4c443c55a4e1689a151e5ca2cdf699b184;hp=8122023c63a6a6ded748ea99eda9cfba89d1e840;hpb=a2ddf6fa81ecebe495d16e59af7575d384bfaf37;p=TP_AL_C.git diff --git a/lexer/main.c b/lexer/main.c index 8122023..19fc34f 100644 --- a/lexer/main.c +++ b/lexer/main.c @@ -3,10 +3,13 @@ #include #include -FILE *source, *target = NULL; +#define TOKEN_MAX_LENGTH 50 +#define TOKEN_LIST_MAX 500 + +FILE *source = NULL, *target = NULL; char c; unsigned int i = 0; -char tokenValue[50]; +char tokenValue[TOKEN_MAX_LENGTH]; enum TokenType { MOTCLE, SECTION, @@ -16,6 +19,7 @@ enum TokenType { FIN } tokenType; const char* tokenTypestr[] = { "MOTCLE", "SECTION", "SSECTION", "NPARA", "MOT", "FIN" }; +const char* tokenList[TOKEN_LIST_MAX]; /* It looks silly to check for each characters but for debugging, it's just the way to go */ bool istAlpha() { @@ -87,7 +91,7 @@ init: } MC1: - // FIXME: Partial match need a rewind in the characters extraction from the file + // FIXME: Partial match need a rewind in the characters extraction from the file if (c == Titre[j] && j < strlen(Titre) - 1) { c = fgetc(source); tokenValue[i] = c; @@ -248,6 +252,8 @@ int main (int argc, char const *argv[]) { return -1; } + int tokenFound = 0; + do { c = fgetc(source); // lecture du caractere suivant du fichier source tokenValue[i] = c; @@ -262,6 +268,8 @@ int main (int argc, char const *argv[]) { } else { printf ("Token type found: %s\n", tokenTypestr[tokenType]); } + tokenList[tokenFound] = tokenTypestr[tokenType]; + tokenFound++; // reinit tokenValue i = 0; memset(tokenValue, 0, sizeof(tokenValue));