diff --git a/labs/04/lex_analaizer.l b/labs/04/lex_analaizer.l new file mode 100644 index 0000000..08ab2bd --- /dev/null +++ b/labs/04/lex_analaizer.l @@ -0,0 +1,36 @@ +%{ +#include +int yywrap(void) { return 1; } +%} + +%% + +"//".* printf("COMMENT"); +f printf("floatdcl "); +i printf("intdcl "); +p printf("print "); +[a-eg-hj-oq-z] printf("id "); +[0-9]+ printf("inum "); +[0-9]*\.[0-9]+ printf("fnum "); += printf("assign "); +\+ printf("plus "); +\- printf("substraction\n"); +\* printf("multiplication\n"); +\/ printf("division\n"); +[ \t]+ /* ignore spaces */ +\n printf("\n"); + +%% + +int main(int argc, char **argv) { + if (argc > 1) { + FILE *fp = fopen(argv[1], "r"); + if (!fp) { + perror("File open failed"); + return 1; + } + yyin = fp; + } + yylex(); + return 0; +} \ No newline at end of file