Pok-10-wyk-Slajd58
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Atrybuty dziedziczone w YACCu – parser: gramatyka i akcje
W analizatorze składniowym korzystamy z atrybutu dziedziczonego dwukrotnie:
- w przypadku produkcji L –> id – sięgamy do atrybutu nieterminala T ($0) oraz do atrybutu terminala id ($1)
- w przypadku produkcji L –> L , id – sięgamy również do atrybutu nieterminala T (również $0) oraz do atrybutu terminala id (tym razem znajduje się on w $3).
W obu przypadkach oczywiście pamiętamy o zwolnieniu alokowanej dynamicznie pamięci, w której przekazane zostały identyfikatory, za pomocą funkcji free .
Na marginesie warto zauważyć, że dla rozważanego przykładu definicja sterowana składnią z atrybutem dziedziczonym jest prostsza i wydaje się łatwiejsza do zrozumienia niż przedstawiona wcześniej definicja S-atrybutowa.
Choć w ogólności, każdą definicję sterowaną składnią można przepisać tak, aby pozbyć się atrybutów dziedziczonych (i taka też jest obecnie tendencja programistów) w niektórych przypadkach użycie atrybutów dziedziczonych pozytywnie wpływa na czytelność specyfikacji.