X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=lexer%2Flexical_analyzer.c;h=0d6a7284abb35cb064fd40885d980bfb8c9a74f0;hb=15ad4b5ab7b62ce2e966730ccd1932877d658b66;hp=42ab960eab1287665d4802d77a2532a4dcde2723;hpb=e70feb8ccefed05878cb3f714ea34ad8f8d8ddfa;p=TP_AL_C.git diff --git a/lexer/lexical_analyzer.c b/lexer/lexical_analyzer.c index 42ab960..0d6a728 100644 --- a/lexer/lexical_analyzer.c +++ b/lexer/lexical_analyzer.c @@ -22,7 +22,7 @@ static bool isAlphaNum() { c == L'\''|| c == L'#' || \ c == L'0' || c == L'1' || c == L'2' || c == L'3' || c == L'4' || c == L'5' || c == L'6' || \ c == L'7' || c == L'8' || c == L'9' || \ - // FIXME: Accentued characters (aka multibytes characters) support is still buggy + //FIXME: Accentued characters (aka multibytes characters) support is still buggy c == L'à' || c == L'â' || c == L'ç' || c == L'è' || c == L'é' || c == L'î' || c == L'ô' || \ c == L'ù' || c == L'û' || \ c == L'À' || c == L'Â' || c == L'Ç' || c == L'È' || c == L'É' || c == L'Î' || c == L'Ô' || \ @@ -47,6 +47,7 @@ static bool isEOF() { } int scanner() { + tokenValue[0] = 0; unsigned int i = 0; wchar_t m[6]; @@ -69,6 +70,7 @@ init: } if (isAlphaNum()) { token[tokenFound].value[i] = c; + tokenValue[i] = c; i++; c = fgetwc(source); goto M1; @@ -81,11 +83,13 @@ init: MC1: if (c == L'A' && !wcscmp(fgetws(m, 6, source), L"uteur")) { wcscpy((wchar_t*)token[tokenFound].value, L">Auteur"); + wcscpy((wchar_t*)tokenValue, L">Auteur"); c = fgetwc(source); goto MC2; } if (c == L'T' && !wcscmp(fgetws(m, 5, source), L"itre")) { wcscpy((wchar_t*)token[tokenFound].value, L">Titre"); + wcscpy((wchar_t*)tokenValue, L">Titre"); c = fgetwc(source); goto MC2; } @@ -118,6 +122,7 @@ SSECTION: M1: if (isAlphaNum()) { token[tokenFound].value[i] = c; + tokenValue[i] = c; i++; c = fgetwc(source); goto M1; @@ -138,6 +143,7 @@ initLV1: } if (isAlphaNum()) { token[tokenFound].value[i] = c; + tokenValue[i] = c; i++; c = fgetwc(source); goto M1; @@ -181,6 +187,8 @@ NPARA: return EXIT_SUCCESS; MOT: + token[tokenFound].value[i] = 0; + tokenValue[i] = 0; tokenType = MOT; return EXIT_SUCCESS; @@ -201,14 +209,15 @@ FIN: error: if (tokenType == MOT || tokenType == MOTCLE) { fwprintf(stderr, L"%s error with token type: %s and value: %ls\n", - __func__, - tokenTypestr[tokenType], - token[tokenFound].value); + __func__, + tokenTypestr[tokenType], + token[tokenFound].value); } else { fwprintf(stderr, L"%s error with token type: %s\n", - __func__, - tokenTypestr[tokenType]); + __func__, + tokenTypestr[tokenType]); } + fflush(stderr); tokenType = FIN; exit(EXIT_FAILURE); }