S : S S | 'x'Jak wygląda język generowany przez tą gramatykę. Pokazać że gramatyka ta nie jest jednoznaczna zaś ilość drzew rozbioru rośnie wykładniczo z długością słowa (dokładnie jest to liczba Catalana: ((2*n-2)!)/(((n-1)!*(n-1)!)*n) ).
Wyznaczyć zbiory `FIRST' dla reguł poniższej gramatyki (symbolem początkowym jest `S').
S : I | B ; B : 'b' I2 'e' ';' ; I2 : /* puste */ | I2 I ';' I : 't' X | 'v' X | 'x' '=' E ';' | 'i' C 'd' I2 'e' | 'i' C 'd' I2 'o' I2 'e' | 'w' C 'd' I2 'e' ; X : 'x' ';' | 'x' ',' X ; E : 'x' | 'x' '+' E ; C : E '=' EKomentarz: Dla skrócenia rachunków używam tylko jednoznakowych symboli końcowych, lecz można sobie wyobrażać że 'x' to dowolny identyfikator, 'b', 'd', 'e', 'i', 'o', 't', 'v' i 'w' to słowa kluczowe ("begin", "do", "end", "if", "otherwise", "type", "var" i "while" odpowiednio). Przerobienie tego na porządny język programowania pozostawiam Państwa wyobraźni...
Zakładamy że każda prawa strona reguły gramatyki zaczyna się od nawiasu otwierającego a kończy się nawiasem zamykającym. Nawiasy nie występują w środku reguły. Ponadto zakładamy że dla różnych symboli pomocniczych prawe strony reguł są różne. Opisać słownie jak można przeprowadzić analizę syntaktyczną dla takiej gramatyki.
W tym zadaniu gramatykę uzupełniamy trzema dodatkowymi sybolami: znacznikiem początku, znacznikiem końca tekstu i nowym sztucznym symbolem początkowym. Dodajemy też jedną sztuczną regułę. Mianowicie, nowy symbol początkowy wyprawadza ciąg: znacznik początku, stary symbol początkowy, znacznik końca.
Relacje poprzedzeniowe między symbolami gramatyki definujemy następująco:
Wyznaczyć relacje poprzedzeniowe dla gramatyki z zadania 1 i dla gramatyki z zadania 2.
Uwaga: jeśli między dwoma symbolami gramatyki zachodzi co najwyżej jedna relacja poprzedzeniowa to gramatykę nazywamy gramatyką poprzedzeniową. W takim przypadku relacje poprzedzeniowe są uogólnieniem priorytetów operatorów i mogą być użyte do sterowania analizatorem syntaktycznym podobnie jak w pierwszym przykładzie.