Parser Flashcards
(71 cards)
Czy bison może własną wersje yyerror niezależną od skanera?
Tak, może. Nawet z taką samą sygnaturą.
Reguły o większym priorytecie powinny znaleść się bliżej symbola startowego, czy dalej?
exp: exp ADD exp
| exp MUL exp
Dalej, jak w poniższym listingu
exp : factor
| exp ADD factor
factor : term
| factor MUL term
Wtedy w drzewie wyprowadzeń bliżej liści będą wyrażenia z mnożeniem, a nie dodawaniem
Czy bison w najprostszej formie jest w stanie parsować wieloznaczną gramatykę?
Nie jest.
Kiedy bison nie dostanie żadnego tokena ze skanera nastąpi błąd?
Tak, błąd składni.
Jak nazywa się najsłabszy język formalny?
Język regularny
Na czym polega słabość języków regularnych?
Potrafią rozpoznawać skończoną liczbę stanów.
Czy następujący język jest regularny?
{ (^i )^i | i >= 0}
Nie jest regularny, zawiera nieograniczoną liczbę stanów, które nie mogą zostać zbalansowane.
Co na wejście dostaje parser?
Ciąg tokenów
Co wyprowadza na wyjście parser?
Drzewo parsowania.
Czy w każdym przypadku parser zwraca drzewo wyprowadzeń?
Nie koniecznie, może robić to niejawnie, np. nie powstaje faktyczne drzewo, ale kolejność wykonywania akcji jest zgodna z przechodzeniem po takim drzewie.
Czy aktualnie wykorzystywane parsery są na tyle mocne aby połączyć fazę analizy leksykalnej z parsowaniem?
Tak, jest to możliwe.
Jakie elementy definiują gramatykę CFG?
- Nieterminale
- Terminale
- Symbol startowy należący do nieterminali
- Produkcje
Zapisz definicję produkcji z opisem składników je tworzących.
X -> Yi…Yn
X - nieterminal
Y - nieterminal lub terminal lub epsilon (symbol pusty)
Wyjaśnij na przykładzie jednej produkcji rekurencyjność gramatyk CFG.
S -> ( S )
Nieterminal S jest jednocześnie lewą i prawą stroną produkcji
Zapisz formalnie przynależność pewnego ciągu tokenów do języka opisanego przez CFG.
{ ai..an | dla kazdego i ai nalezy do zbiory T oraz S -*-> ai..an }
Terminale w fazie parsowania to które elementy fazy analizy składniowej?
tokeny
Czy mogą istnieć reguły produkujące, które są w stanie zamienić terminale?
Nie mogą
Grupując wiele produkcji dla jednego nieterminala, jakiego skrótu użyć?
X -> z
X-> Aa
zamieniamy na
X -> z
| Aa
Czym są prawe strony produkcji?
Są to podstawienia, które należy wykonać kiedy na wejściu pojawi się pasujący ciąg tokenów
Czy lewostronne i prawostronne wyprowadzenia są równoważne?
Tak, są równoważne
Co oprócz przynależności do języka można uzyskać podczas parsowania?
Drzewo wyprowadzeń
Jakiego typu elementy spotykamy w liściach drzew wyprowadzenia?
Terminale, inaczej tokeny
Jakiego typu elementami są węzły drzewa wyprowadzeń?
Są to nieterminale.
Wymień dwa sposoby wyprowadzenia (sekwencje produkcji)
- liniowo, S -> aXa -> abCa -> abza
- drzewo wyprowadzeń