-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogicscript.l
More file actions
61 lines (45 loc) · 1.87 KB
/
logicscript.l
File metadata and controls
61 lines (45 loc) · 1.87 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
%{
#include "logicscript.tab.h"
#include <stdlib.h>
#include <string.h>
%}
%%
[ \t\r\n]+ { /* ignore whitespace */ }
let { return LET; }
print { return PRINT; }
print_red { return PRINT_RED; }
print_green { return PRINT_GREEN; }
print_blue { return PRINT_BLUE; }
print_yellow { return PRINT_YELLOW; }
if { return IF; }
else { return ELSE; }
true { yylval.num = 1; return BOOL; }
false { yylval.num = 0; return BOOL; }
AND { return AND; }
OR { return OR; }
[nN][oO][tT] { return NOT; }
">=" { return GE; }
"<=" { return LE; }
"==" { return EQ; }
"!=" { return NE; }
">" { return '>'; }
"<" { return '<'; }
"+" { return '+'; }
"-" { return '-'; }
"*" { return '*'; }
"/" { return '/'; }
"%" { return '%'; }
"(" { return '('; }
")" { return ')'; }
"{" { return '{'; }
"}" { return '}'; }
";" { return ';'; }
"=" { return '='; }
[0-9]+ { yylval.num = atoi(yytext); return NUM; }
[a-zA-Z_][a-zA-Z0-9_]* {
yylval.id = strdup(yytext);
return ID;
}
. { return yytext[0]; }
%%
int yywrap(void) { return 1; }