Pok-7-wyk-Slajd19
Atrybuty tokenów – skaner
Analizator leksykalny zaimplementujemy w LEXie. Musi on rozpoznawać i zwracać lewe i prawe nawiasy oraz przecinek. Ewentualne spacje na wejściu pomijamy.
Do przekazywania wartości atrybutu symbolu leksykalnego musimy wykorzystać globalną zmienną – w tym przypadku wystarczy użyć zmiennej typu całkowitego. Jeżeli będziemy przekazywać atrybuty różnych typów można skorzystać z unii języka C.
Zmienną możemy zdefiniować w parserze albo w skanerze. W przykładzie zmienna LLlval została zdefiniowana w parserze, a więc w skanerze musimy zadeklarować ją jako zewnętrzną. Po natrafieniu na liczbę, jej wartość wpisujemy do zmiennej LLlval i zwracamy informację o rozpoznaniu tokenu num .
Tokenowi num przypisaliśmy nazwę, więc musimy pamiętać o przypisaniu jej odpowiedniej (większej niż 256) stałej. Gdyby w gramatyce było więcej nazwanych tokenów najlepiej utworzyć zewnętrzny plik nagłówkowy i włączać go i do analizatora leksykalnego i składniowego.