From ad2bc056ae684f8de57f2ff880e51440d07ee04a Mon Sep 17 00:00:00 2001 From: Julian T Date: Thu, 24 Oct 2019 07:51:51 +0200 Subject: Simple calculator assignment --- sem1/osc/mm11/regn/regn.l | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 sem1/osc/mm11/regn/regn.l (limited to 'sem1/osc/mm11/regn/regn.l') diff --git a/sem1/osc/mm11/regn/regn.l b/sem1/osc/mm11/regn/regn.l new file mode 100644 index 0000000..bbaadb8 --- /dev/null +++ b/sem1/osc/mm11/regn/regn.l @@ -0,0 +1,40 @@ +%{ +#include +#include +#include "symtab.h" +#include "regn.tab.h" +%} + +realtal ([0-9]+|([0-9]*\.[0-9]+))([eE][-+]?[0-9]+)? +var_begin let +op_log log +op_exp exp +op_sqrt sqrt +var [A-Za-z][A-Za-z0-9]* + +%% +{realtal} {yylval.dval = atof(yytext); + return TAL;} +{var_begin} {return VAR_BEGIN;} +{op_log} {return LOG;} +{op_exp} {return EXP;} +{op_sqrt} {return SQRT;} + +{var} {yylval.string = strdup(yytext); return VAR;} + +[ \t] ; + + +'$' {return 0;} + +\n|. {return yytext[0];} + +%% + +void init_sym() +{ + int i; + for (i = 0; i < HASHSIZE; i++) + symbolarray[i] = NULL; +} + -- cgit v1.2.3