Możliwe jest parsowanie dokumentu za pomocą pojedynczego przejścia z automatu stanów. Jaka jest korzyść z dwóch przejść, tj. posiadanie leksera do konwersji tekstu na tokeny i parsera do testowania reguł produkcyjnych dla tych tokenów? Dlaczego nie mieć pojedynczego przejścia, które stosuje reguły produkcji bezpośrednio do tekstu?
15
Odpowiedzi:
Nie musisz ich rozdzielać. Ludzie łączą je w parsery bez skanera .
Kluczową wadą parserów bez skanera wydaje się być to, że wynikowe gramatyki są raczej skomplikowane - bardziej skomplikowane niż odpowiednia kombinacja wyrażeń regularnych wykonujących leksykację i gramatyki bezkontekstowej wykonującej analizę w strumieniu tokena. W szczególności gramatyki do analizowania bez skanera mają tendencję do dwuznaczności. Łatwiej jest usunąć niejednoznaczność dla gramatyk pracujących na strumieniu tokenu.
Pragmatyczną zaletą korzystania z dedykowanej wstępnej fazy leksykalnej jest to, że nie łączysz kolejnego parsera ze szczegółami leksykalnymi. Jest to przydatne podczas wczesnego rozwoju języka programowania, gdy szczegóły leksykalne i składniowe wciąż się często zmieniają.
źródło