aboutsummaryrefslogtreecommitdiff
path: root/sem1/osc/miniproject/cnasm/regn.l
blob: 00876d620fd1690e751989aeba5bfd8903ffe1ea (plain)
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 <math.h>
#include <string.h>
#include "regn.tab.h"
#include "ast.h"
%}

id		[a-zA-Z0-9_;]([^\n=><(){}])*
if		if[ \t]*
else	else[ \t]*
for		for[ \t]*
while	while[ \t]*

%%

{if} {return IFF;};
{else} {return EELSE;};
{for} {return FFOR;};
{while} {return WHILE;};
"(" {return LP;};
")" {return RP;};
"{" {return LCP;};
"}" {return RCP;};
"<" {yylval.cmp = CLT; return CMP;};
">" {yylval.cmp = CGT; return CMP;};
"=" {yylval.cmp = CEQ; return CMP;};
"!=" {yylval.cmp = CNEQ; return CMP;};
{id} {yylval.string = strdup(yytext);return ID;};
[1-9][0-9]* {yylval.string = yytext;return NO;};



[ \t\n] ;

.           {return yytext[0];} 

%%

// TODO match normal assembler