diff options
Diffstat (limited to 'sem1/osc/miniproject/cnasm/regn.l')
-rw-r--r-- | sem1/osc/miniproject/cnasm/regn.l | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/sem1/osc/miniproject/cnasm/regn.l b/sem1/osc/miniproject/cnasm/regn.l new file mode 100644 index 0000000..00876d6 --- /dev/null +++ b/sem1/osc/miniproject/cnasm/regn.l @@ -0,0 +1,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 |