5 KEYWORD struct|end|method|var|if|then|else|while|do|return|not|or|this
6 SPECIAL_CHAR \;|\(|\)|\:=|\.|\-|\*|\<|\=|\.
7 IDENTIFIER [a-zA-Z_][0-9a-zA-Z_]*
8 NUMBER_HEX 0x[0-9A-Fa-f]+
14 /* x ist unsere zustandsvariable! */
19 {COMMENT_START} BEGIN(COMMENT);
21 <COMMENT>{COMMENT_END} BEGIN(INITIAL);
23 <COMMENT><<EOF>> { (void) fprintf(stderr, "kommentar nicht geschlossen\n"); exit(1); }
25 <COMMENT>(.|\n) /* alles im kommentar wird ignoriert */
27 {KEYWORD} printf("%s\n", yytext);
29 {SPECIAL_CHAR} printf("%s\n", yytext);
31 {IDENTIFIER} printf("ident %s\n", yytext);
33 {NUMBER_DEC} printf("num %lx\n", strtol(yytext, (char **)NULL, 10));
37 char *copy=strdup(yytext);
38 copy[strlen(copy)-1]='\0';
40 printf("num %lx\n", strtol(yytext, (char **)NULL, 16));
43 {WHITESPACE} /* ignorieren */
45 . { (void) fprintf(stderr, "Lexikalischer fehler auf Zeile %i\n", yylineno); exit(1); }
49 int main(int argc, char **argv) {