Pok-10-wyk-Slajd6
Zmienne globalne(1)
Analizator leksykalny implementujemy z wykorzystaniem generatora LEX.
Analizator rozpoznaje liczby całkowite (zgodne z wzorcem [0-9]+), konwertuje je do postaci binarnej i przekazuje jako atrybut jednostki leksykalnej num .
Do przekazywania wartości atrybutu do analizatora składniowego najprościej (co nie znaczy najbezpieczniej) jest użyć globalnej zmiennej typu całkowitego ( int ).
Zmienna globalna może zostać zdefiniowana w:
- analizatorze leksykalnym
- analizatorze składniowym (tak jak w przykładzie)
- pliku pomocniczym.
Na marginesie, warto zwrócić uwagę na to, że nazwy niektórych zmiennych mogą kolidować z wewnętrznymi zmiennymi wykorzystywanymi w wygenerowanym analizatorze (tak jest np. ze zmienną i w MKS LEX & YACC). Należy także unikać nadawania własnym zmiennym nazw zaczynających się od prefiksu yy .
Analizator rozpoznaje również znaki dodawania i równości, tym razem jednak nie przypisując żadnej wartości atrybutu. Znaki spacji na wejściu są ignorowane.