-
Notifications
You must be signed in to change notification settings - Fork 0
/
lexer.l
48 lines (42 loc) · 1.57 KB
/
lexer.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
%{
#include <string.h>
#include <parser_helper.h>
#include "parser.h"
#define SAVE_TOKEN yylval.string = strdup(yytext)
int linenum;
%}
%option noyywrap
%%
[ \t] ;
\n linenum++;
"let" return TLET;
"mut" return TMUT;
"if" return TIF;
"else" return TELSE;
"while" return TWHILE;
"continue" return TCONTINUE;
"i32"|"bool" SAVE_TOKEN; return TTYPE;
"true" return TTRUE;
"false" return TFALSE;
"==" return TEQUALTO;
"!=" return TNOTEQUAL;
"<" return TLESSTHAN;
">" return TGREATERTHAN;
"<=" return TLESSOREQ;
">=" return TGREATEROREQ;
"=" return TEQUAL;
";" return TSTMT;
"+" return TPLUS;
"-" return TMINUS;
"*" return TMULTIPLY;
"/" return TDIVIDE;
"%" return TMOD;
"(" return TLPAREN;
")" return TRPAREN;
":" return TCOLON;
"{" return TLBRACE;
"}" return TRBRACE;
[a-zA-Z_][a-zA-Z0-9_]* SAVE_TOKEN; return TIDENTIFIER;
[0-9]+ SAVE_TOKEN; return TINTEGER;
. printf("Error - Unrecognised token %s\n", yytext); yyterminate();
%%