%{ #include %} %option noyywrap %option array %option yylineno WHITESPACE [\ \t\v\r\n] COMMENT \/\/[^\n]+ NUMBERS [0-9]+ STRING \"[\ !#-~]*\" IDENTIFIERS [A-Za-z_][A-Za-z0-9_]* %% {WHITESPACE}+ { /* Eliminate whitespace */ } {COMMENT} { /* Eliminate comments */ } "func" { /*printf("FUNC\n");*/ return FUNC; } "print" { /*printf("PRINT\n");*/ return PRINT; } "return" { /*printf("RETURN\n");*/ return RETURN; } "begin" { /*printf("OPENBLOCK\n");*/ return OPENBLOCK; } "end" { /*printf("CLOSEBLOCK\n");*/ return CLOSEBLOCK; } "continue" { /*printf("CONTINUE\n");*/ return CONTINUE; } "if" { /*printf("IF\n");*/ return IF; } "then" { /*printf("THEN\n");*/ return THEN; } "else" { /*printf("ELSE\n");*/ return ELSE; } "while" { /*printf("WHILE\n");*/ return WHILE; } "do" { /*printf("DO\n");*/ return DO; } "var" { /*printf("VAR\n");*/ return VAR; } {NUMBERS} { /*printf("NUMBER\n");*/ return NUMBER; } {STRING} { /*printf("STRING\n");*/ return STRING; } {IDENTIFIERS} { /*printf("IDENTIFIER\n");*/ return IDENTIFIER; } . { /*printf("'%c'\n", yytext[0]);*/ return yytext[0]; } %%