diff options
author | Flavian Kaufmann <flavian@flaviankaufmann.ch> | 2025-05-22 13:42:33 +0200 |
---|---|---|
committer | Flavian Kaufmann <flavian@flaviankaufmann.ch> | 2025-05-22 13:42:33 +0200 |
commit | a80f818de34a631b4b1c9c9e866c6f43de07d816 (patch) | |
tree | 4a157c098cc44e7ee709775ab28a5856f3d2c259 /src | |
parent | 6ef8829451871b534572d47312ae255dee088588 (diff) | |
download | imp-a80f818de34a631b4b1c9c9e866c6f43de07d816.tar.gz imp-a80f818de34a631b4b1c9c9e866c6f43de07d816.zip |
support for comments
Diffstat (limited to 'src')
-rw-r--r-- | src/lexer.l | 83 |
1 files changed, 42 insertions, 41 deletions
diff --git a/src/lexer.l b/src/lexer.l index 285cbf7..8a8c5b7 100644 --- a/src/lexer.l +++ b/src/lexer.l @@ -10,46 +10,47 @@ WHITESPACE [ \t\r\n]+ %% -"skip" { return T_SKIP; } -"if" { return T_IF; } -"then" { return T_THEN; } -"else" { return T_ELSE; } -"end" { return T_END; } -"while" { return T_WHILE; } -"do" { return T_DO; } -"var" { return T_VAR; } -"in" { return T_IN; } -"procedure" { return T_PROC; } -"begin" { return T_BEGIN; } - -"(" { return T_LPAREN; } -")" { return T_RPAREN; } -";" { return T_SEM; } -"," { return T_COM; } -":=" { return T_ASSIGN; } - -"+" { return T_PLUS; } -"-" { return T_MINUS; } -"*" { return T_STAR; } - -"or" { return T_OR; } -"and" { return T_AND; } -"not" { return T_NOT; } - -"=" { return T_EQ; } -"#" { return T_NE; } -"<=" { return T_LE; } -"<" { return T_LT; } -">=" { return T_GE; } -">" { return T_GT; } - -"true" { return T_TRUE; } -"false" { return T_FALSE; } - -{DIGIT}+ { yylval.num = atoi(yytext); return T_NUM; } -{IDENT} { yylval.id = strdup(yytext); return T_ID; } - -{WHITESPACE} { } -. { fprintf(stderr, "Unknown char: %s\n", yytext); } +\/\*([^*]|\*+[^*/])*\*+\/ { /* ignore comments */ } +"skip" { return T_SKIP; } +"if" { return T_IF; } +"then" { return T_THEN; } +"else" { return T_ELSE; } +"end" { return T_END; } +"while" { return T_WHILE; } +"do" { return T_DO; } +"var" { return T_VAR; } +"in" { return T_IN; } +"procedure" { return T_PROC; } +"begin" { return T_BEGIN; } + +"(" { return T_LPAREN; } +")" { return T_RPAREN; } +";" { return T_SEM; } +"," { return T_COM; } +":=" { return T_ASSIGN; } + +"+" { return T_PLUS; } +"-" { return T_MINUS; } +"*" { return T_STAR; } + +"or" { return T_OR; } +"and" { return T_AND; } +"not" { return T_NOT; } + +"=" { return T_EQ; } +"#" { return T_NE; } +"<=" { return T_LE; } +"<" { return T_LT; } +">=" { return T_GE; } +">" { return T_GT; } + +"true" { return T_TRUE; } +"false" { return T_FALSE; } + +{DIGIT}+ { yylval.num = atoi(yytext); return T_NUM; } +{IDENT} { yylval.id = strdup(yytext); return T_ID; } + +{WHITESPACE} { /* ignore whitespace */ } +. { fprintf(stderr, "Unknown char: %s\n", yytext); } %% |