diff --git a/parser/c_compiler/lexer.l b/parser/c_compiler/lexer.l --- a/parser/c_compiler/lexer.l +++ b/parser/c_compiler/lexer.l @@ -1,151 +1,150 @@ %{ - #include - #include "parser.h" - int column = 0; - int c; + #include + #include "parser.h" + int column = 0; + int c; %} -D [0-9] -L [a-zA-Z_] -H [a-fA-F0-9] -E [Ee][+-]?{D}+ -FS (f|F|l|L) -IS (u|U|l|L)* +D [0-9] +L [a-zA-Z_] +H [a-fA-F0-9] +E [Ee][+-]?{D}+ +FS (f|F|l|L) +IS (u|U|l|L)* %% -"/*" { comment(); } -"#include <" { c = input(); while ( c != '>') c = input(); } -"#include \"" { c = input(); while ( c != '\"') c = input(); } +"/*" { comment(); } +"#include <" { c = input(); while ( c != '>') c = input(); } +"#include \"" { c = input(); while ( c != '\"') c = input(); } -"auto" { count(); return(AUTO); } -"break" { count(); return(BREAK); } -"case" { count(); return(CASE); } -"char" { count(); return(CHAR); } -"const" { count(); return(CONST); } -"continue" { count(); return(CONTINUE); } -"default" { count(); return(DEFAULT); } -"do" { count(); return(DO); } -"double" { count(); return(DOUBLE); } -"else" { count(); return(ELSE); } -"enum" { count(); return(ENUM); } -"extern" { count(); return(EXTERN); } -"float" { count(); return(FLOAT); } -"for" { count(); return(FOR); } -"goto" { count(); return(GOTO); } -"if" { count(); return(IF); } -"int" { count(); return(INT); } -"long" { count(); return(LONG); } -"register" { count(); return(REGISTER); } -"return" { count(); return(RETURN); } -"short" { count(); return(SHORT); } -"signed" { count(); return(SIGNED); } -"sizeof" { count(); return(SIZEOF); } -"static" { count(); return(STATIC); } -"struct" { count(); return(STRUCT); } -"switch" { count(); return(SWITCH); } -"typedef" { count(); return(TYPEDEF); } -"union" { count(); return(UNION); } -"unsigned" { count(); return(UNSIGNED); } -"void" { count(); return(VOID); } -"volatile" { count(); return(VOLATILE); } -"while" { count(); return(WHILE); } +"auto" { count(); return(AUTO); } +"break" { count(); return(BREAK); } +"case" { count(); return(CASE); } +"char" { count(); return(CHAR); } +"const" { count(); return(CONST); } +"continue" { count(); return(CONTINUE); } +"default" { count(); return(DEFAULT); } +"do" { count(); return(DO); } +"double" { count(); return(DOUBLE); } +"else" { count(); return(ELSE); } +"enum" { count(); return(ENUM); } +"extern" { count(); return(EXTERN); } +"float" { count(); return(FLOAT); } +"for" { count(); return(FOR); } +"goto" { count(); return(GOTO); } +"if" { count(); return(IF); } +"int" { count(); return(INT); } +"long" { count(); return(LONG); } +"register" { count(); return(REGISTER); } +"return" { count(); return(RETURN); } +"short" { count(); return(SHORT); } +"signed" { count(); return(SIGNED); } +"sizeof" { count(); return(SIZEOF); } +"static" { count(); return(STATIC); } +"struct" { count(); return(STRUCT); } +"switch" { count(); return(SWITCH); } +"typedef" { count(); return(TYPEDEF); } +"union" { count(); return(UNION); } +"unsigned" { count(); return(UNSIGNED); } +"void" { count(); return(VOID); } +"volatile" { count(); return(VOLATILE); } +"while" { count(); return(WHILE); } -{L}({L}|{D})* { count(); return(check_type()); } -0[xX]{H}+{IS}? { count(); return(CONSTANT); } -0{D}+{IS}? { count(); return(CONSTANT); } -{D}+{IS}? { count(); return(CONSTANT); } -'(\\.|[^\\'])+' { count(); return(CONSTANT); } +{L}({L}|{D})* { count(); return(check_type()); } +0[xX]{H}+{IS}? { count(); return(CONSTANT); } +0{D}+{IS}? { count(); return(CONSTANT); } +{D}+{IS}? { count(); return(CONSTANT); } +'(\\.|[^\\'])+' { count(); return(CONSTANT); } -{D}+{E}{FS}? { count(); return(CONSTANT); } -{D}*"."{D}+({E})?{FS}? { count(); return(CONSTANT); } -{D}+"."{D}*({E})?{FS}? { count(); return(CONSTANT); } - -\"(\\.|[^\\"])*\" { count(); return(STRING_LITERAL); } +{D}+{E}{FS}? { count(); return(CONSTANT); } +{D}*"."{D}+({E})?{FS}? { count(); return(CONSTANT); } +{D}+"."{D}*({E})?{FS}? { count(); return(CONSTANT); } -">>=" { count(); return(RIGHT_ASSIGN); } -"<<=" { count(); return(LEFT_ASSIGN); } -"+=" { count(); return(ADD_ASSIGN); } -"-=" { count(); return(SUB_ASSIGN); } -"*=" { count(); return(MUL_ASSIGN); } -"/=" { count(); return(DIV_ASSIGN); } -"%=" { count(); return(MOD_ASSIGN); } -"&=" { count(); return(AND_ASSIGN); } -"^=" { count(); return(XOR_ASSIGN); } -"|=" { count(); return(OR_ASSIGN); } -">>" { count(); return(RIGHT_OP); } -"<<" { count(); return(LEFT_OP); } -"++" { count(); return(INC_OP); } -"--" { count(); return(DEC_OP); } -"->" { count(); return(PTR_OP); } -"&&" { count(); return(AND_OP); } -"||" { count(); return(OR_OP); } -"<=" { count(); return(LE_OP); } -">=" { count(); return(GE_OP); } -"==" { count(); return(EQ_OP); } -"!=" { count(); return(NE_OP); } -";" { count(); return(';'); } -"{" { count(); return('{'); } -"}" { count(); return('}'); } -"," { count(); return(','); } -":" { count(); return(':'); } -"=" { count(); return('='); } -"(" { count(); return('('); } -")" { count(); return(')'); } -"[" { count(); return('['); } -"]" { count(); return(']'); } -"." { count(); return('.'); } -"&" { count(); return('&'); } -"!" { count(); return('!'); } -"~" { count(); return('~'); } -"-" { count(); return('-'); } -"+" { count(); return('+'); } -"*" { count(); return('*'); } -"/" { count(); return('/'); } -"%" { count(); return('%'); } -"<" { count(); return('<'); } -">" { count(); return('>'); } -"^" { count(); return('^'); } -"|" { count(); return('|'); } -"?" { count(); return('?'); } +\"(\\.|[^\\"])*\" { count(); return(STRING_LITERAL); } -[ \t\v\n\f] { count(); } -. { printf ("Unknown Token: %s\n", yytext); } +">>=" { count(); return(RIGHT_ASSIGN); } +"<<=" { count(); return(LEFT_ASSIGN); } +"+=" { count(); return(ADD_ASSIGN); } +"-=" { count(); return(SUB_ASSIGN); } +"*=" { count(); return(MUL_ASSIGN); } +"/=" { count(); return(DIV_ASSIGN); } +"%=" { count(); return(MOD_ASSIGN); } +"&=" { count(); return(AND_ASSIGN); } +"^=" { count(); return(XOR_ASSIGN); } +"|=" { count(); return(OR_ASSIGN); } +">>" { count(); return(RIGHT_OP); } +"<<" { count(); return(LEFT_OP); } +"++" { count(); return(INC_OP); } +"--" { count(); return(DEC_OP); } +"->" { count(); return(PTR_OP); } +"&&" { count(); return(AND_OP); } +"||" { count(); return(OR_OP); } +"<=" { count(); return(LE_OP); } +">=" { count(); return(GE_OP); } +"==" { count(); return(EQ_OP); } +"!=" { count(); return(NE_OP); } +";" { count(); return(';'); } +"{" { count(); return('{'); } +"}" { count(); return('}'); } +"," { count(); return(','); } +":" { count(); return(':'); } +"=" { count(); return('='); } +"(" { count(); return('('); } +")" { count(); return(')'); } +"[" { count(); return('['); } +"]" { count(); return(']'); } +"." { count(); return('.'); } +"&" { count(); return('&'); } +"!" { count(); return('!'); } +"~" { count(); return('~'); } +"-" { count(); return('-'); } +"+" { count(); return('+'); } +"*" { count(); return('*'); } +"/" { count(); return('/'); } +"%" { count(); return('%'); } +"<" { count(); return('<'); } +">" { count(); return('>'); } +"^" { count(); return('^'); } +"|" { count(); return('|'); } +"?" { count(); return('?'); } +[ \t\v\n\f] { count(); } +. { printf ("Unknown Token: %s\n", yytext); } %% int yywrap() { - /* stop after eof */ - return 1; + /* stop after eof */ + return 1; } int count() { - int i; + int i; - for (i = 0; yytext[i] != '\0'; i++) - if (yytext[i] == '\n') - column = 0; - else if (yytext[i] == '\t') - column += 4 - (column % 4); - else - column++; + for (i = 0; yytext[i] != '\0'; i++) + if (yytext[i] == '\n') + column = 0; + else if (yytext[i] == '\t') + column += 4 - (column % 4); + else + column++; - return column; + return column; } int check_type() { - return IDENTIFIER; + return IDENTIFIER; } -void comment() +void comment() { - int c; + int c; - c = input(); - do { - while ( c != '*') - c = input(); - c=input(); - } while(c != '/'); + c = input(); + do { + while ( c != '*') + c = input(); + c=input(); + } while(c != '/'); }