-
Notifications
You must be signed in to change notification settings - Fork 1
/
tb.l
39 lines (34 loc) · 1.18 KB
/
tb.l
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
%{
#include <stdlib.h>
#include "tb.h"
#include "tb.tab.h"
void yyerror(char *);
%}
%%
"LET" { return LET; }
"IF" { return IF; }
"THEN" { return THEN; }
"PRINT" { return PRINT; }
"GOTO" { return GOTO; }
"INPUT" { return INPUT; }
"END" { return END; }
"<" { return LT; }
"<=" { return LE; }
">" { return GT; }
">=" { return GE; }
"==" { return EQ; }
"!=" { return NE; }
\r?\n\r? { return CR; }
[A-Z] { yylval.var = yytext[0]; return VARIABLE; }
[-+]?(([1-9][0-9]*)|0) { yylval.num = atoi(yytext); return INTEGER; }
[-+]?[0-9]*\.[0-9]+ { yylval.dec = atof(yytext); return DECIMAL; }
[-+*/=(),] { return *yytext; }
[ \t]+ { /* Ignore whitespace. */ }
. {
yyerror("[Parsing Error] Unknown syntax.");
fprintf(stdout, "%s\n", yytext);
}
%%
int yywrap(void) {
return 1;
}