X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCC.lex;h=91f8bf319fe1566b56b659e3a41b4774686e552f;hb=ac3b73ef0556ed8a71ff7c5ce6702ba32f9b8ce1;hp=7785550391c404e85d0c53e24b5ef0b4ce249652;hpb=163f5f51d71510315430a335201ce0f1a7d71acb;p=fw%2Fsdcc diff --git a/src/SDCC.lex b/src/SDCC.lex index 77855503..91f8bf31 100644 --- a/src/SDCC.lex +++ b/src/SDCC.lex @@ -1,6 +1,6 @@ /*----------------------------------------------------------------------- - SDCC.lex - lexical analyser for use with sdcc ( a freeware compiler for - 8/16 bit microcontrollers) + SDCC.lex - lexical analyser for use with sdcc (free open source + compiler for 8/16 bit microcontrollers) Written by : Sandeep Dutta . sandeep.dutta@usa.net (1997) This program is free software; you can redistribute it and/or modify it @@ -23,8 +23,7 @@ -------------------------------------------------------------------------*/ D [0-9] -L [a-zA-Z_] -L_DOLL [a-zA-Z_$] +L [a-zA-Z_$] H [a-fA-F0-9] E [Ee][+-]?{D}+ FS (f|F|l|L) @@ -58,6 +57,7 @@ int lexLineno = 1; static struct dbuf_s asmbuff; /* reusable _asm buffer */ /* forward declarations */ +int yyerror(char *s); static const char *stringLiteral(void); static void count(void); static void count_char(int); @@ -191,15 +191,13 @@ _?"_asm" { "__overlay" { count(); TKEYWORD(OVERLAY); } "inline" { count(); TKEYWORD99(INLINE); } "restrict" { count(); TKEYWORD99(RESTRICT); } -{L}({L}|{D})* { count(); return(check_type()); } -{L_DOLL}({L_DOLL}|{D})* { - if (options.dollars_in_ident) +{L}({L}|{D})* { + if (!options.dollars_in_ident && strchr(yytext, '$')) { - count(); - return(check_type()); + yyerror("stray '$' in program"); } - else - REJECT; + count(); + return(check_type()); } 0[xX]{H}+{IS}? { count(); yylval.val = constVal(yytext); return(CONSTANT); } 0[0-7]*{IS}? { count(); yylval.val = constVal(yytext); return(CONSTANT); }