-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompiler.l
51 lines (49 loc) · 1.62 KB
/
compiler.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
40
41
42
43
44
45
46
47
48
49
50
51
%{
#include "compiler.h"
#include "compiler.tab.h"
#include <stdio.h>
#include <string.h>
%}
%%
\[[^\]]*\] ;
[_a-z]+ { yylval.str = strdup(yytext); return ID; }
[_a-z]+[0-9]+ { printf("Error: nierozpoznany napis\n"); exit(0);}
[0-9]+ { yylval.num = atoll(yytext); return NUM; }
"DECLARE" { return DECLARE; }
"IN" { return IN; }
"END" { return END; }
"IF" { return IF; }
"ELSE" { return ELSE; }
"ENDIF" { return ENDIF; }
"FOR" { return FOR; }
"ENDFOR" { return ENDFOR; }
"DOWN" { return DOWN; }
"FROM" { return FROM; }
"TO" { return TO; }
"THEN" { return THEN; }
"WHILE" { return WHILE; }
"ENDWHILE" { return ENDWHILE; }
"DO" { return DO; }
"GET" { return GET; }
"PUT" { return PUT; }
"=" { return EQUAL; }
"+" { return ADD; }
"-" { return SUB; }
"*" { return MULT; }
"/" { return DIV; }
"%" { return MOD; }
"!=" { return DIFF; }
";" { return SEMICOLON; }
":=" { return ASSIGN; }
"<" { return LESS; }
">" { return MORE; }
"<=" { return LESS_EQUAL; }
">=" { return MORE_EQUAL; }
"(" { return LEFT_PAR; }
")" { return RIGHT_PAR; }
[ \t\n] ;
. {printf("Nierozpoznany ciag znakow."); exit(1);}
%%
int yywrap(void) {
return 1;
}