%{ #include"string.h" #define Program 1 #define Poczatek 2 #define Koniec 3 #define Tablica 4 #define Jesli 5 #define To 6 #define Przeciwne 7 #define Ilsej 8 #define Dopoki 9 #define Wykonuj 10 #define Ikopod 11 #define Czytaj 12 #define Drukuj 13 #define Calkowite 14 #define Rzeczywiste 15 #define Boolowskie 16 #define Nie 17 #define Lub 18 #define I 19 #define Prawda 20 #define Falsz 21 #define ID 22 #define NUM_R 23 #define NUM_C 24 #define Przypisz 25 #define MR 26 #define WR 27 #define R 28 %} litera [a-zA-Z] cyfra [0-9] %% program return(Program); poczatek return(Poczatek); koniec return(Koniec); tablica return(Tablica); jesli return(Jesli); to return(To); przeciwne return(Przeciwne); ilsej return(Ilsej); dopoki return(Dopoki); wykonuj return(Wykonuj); ikopod return(Ikopod); czytaj return(Czytaj); drukuj return(Drukuj); calkowite return(Calkowite); rzeczywiste return(Rzeczywiste); boolowskie return(Boolowskie); nie return(Nie); lub return(Lub); i return(I); prawda return(Prawda); falsz return(Falsz); {litera}({litera}|{cyfra})*{printf("%s ",yytext); return(ID);} (0|[1-9]{cyfra}*)\.({cyfra}*[1-9]|0)([eE][-+]?(0|[1-9]{cyfra}*))?{printf("%s ",yytext); return(NUM_R);} (0|[1-9]{cyfra}*)([eE][-+]?(0|[1-9]{cyfra}*))?{printf("%s ",yytext); return(NUM_C);} ":=" return(Przypisz); "<=" return(MR); ">=" return(WR); "<>" return(R); [-+*/:=<>;()\[\].] printf("%c",yytext[0]); .{printf("Blad leksykalny %c\n",yytext[0]); yyterminate();} [ ]+ ; [\n\t]; %% void main(){int tak; while(1){tok=yylex(); printf("%d\n",tok);}}