Να υλοποιήσετε σε C έναν λεκτικό αναλυτή που να αναγνωρίζει τα
παρακάτω λεκτικά σύμβολα:
- ακέραιοι
- μεταβλητές (όπως της C)
- τελεστής +
- τελεστής -
- τελεστής *
- τελεστής /
Η συνάρτηση του λεκτικού αναλυτή θα λέγεται yylex και θα επιστρέφει:
των κωδικό του χαρακτήρα για τους τελεστές, 256 για τους ακέραιους,
257 για τις μεταβλητές και -1 στο τέλος του αρχείου.
Ακόμα θα φυλάει στα πεδία της ένωσης yylval s και i τις τιμές των
μεταβλητών και των ακεραίων αντίστοιχα.
Σε περίπτωση λάθους ο λεκτικός αναλυτής θα τερματίζει τη λειτουργία του
εμφανίζοντας ένα μήνυμα λάθους.
Ο λεκτικός αναλυτής θα καλείται από το παρακάτω πρόγραμμα:
#include <stdio.h>
union {
char *s; /* Variable name */
int i; /* Integer value */
} yylval;
int yylex();
main()
{
int k;
while ((k = yylex()) != -1) {
switch (k) {
case 256:
printf("INT: %d\n", yylval.i);
break;
case 257:
printf("VAR: %s\n", yylval.s);
break;
default:
printf("OPERATOR: %c\n", k);
break;
}
}
}