Λεκτική ανάλυση

Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr

Ο λεκτικός αναλυτής

Ο λεκτικός αναλυτής παρέχει τις παρακάτω λειτουργίες: Με τον τρόπο αυτό διαχωρίζονται οι εργασίες της λεκτικής και της συντακτικής ανάλυσης και κάθε μια υλοποιείται με τον πιο αποδοτικό τρόπο.

Λεκτικές μονάδες

Διεπαφή

Οπισθοδρόμηση

Υλοποίηση με διάγραμμα μετάβασης

Ασκήσεις

  1. Να υλοποιήσετε σε 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;
                    }
            }
    }

Βιβλιογραφία