diff --git a/labs/04/lexAnalyzer.l b/labs/04/lexAnalyzer.l new file mode 100644 index 0000000..8b2b9e2 --- /dev/null +++ b/labs/04/lexAnalyzer.l @@ -0,0 +1,33 @@ +%{ +#include +%} + +%% +"//".* { printf("COMMENT\n"); } +"f" { printf("floatdcl\n"); } +"i" { printf("intdcl\n"); } +"p" { printf("print\n"); } +[a-zA-Z] { printf("id\n"); } +[0-9]+\.[0-9]+ { printf("fnum\n"); } +[0-9]+ { printf("inum\n"); } +"=" { printf("assign\n"); } +"+" { printf("plus\n"); } +"-" { printf("minus\n"); } +"*" { printf("multiply\n"); } +"/" { printf("divide\n"); } +[ \t\n]+ { /* empty spaces */ } +. { printf("UNKOWN CHAR '%s'\n", yytext); } +%% + +int main(int argc, char **argv) { + if(argc > 1) { + FILE *file = fopen(argv[1], "r"); + if(!file) { + perror("[!] Couldnt open file"); + return 1; + } + yyin = file; + } + yylex(); + return 0; +} \ No newline at end of file