Warto zauważyć, że standardowe kombinatory parsera Scali nie są LL, ani też kombinatory Packrat LALR. Kombinatory parserów są formą rekurencyjnego zejścia z nieskończonym cofaniem. Możesz myśleć o nich trochę jak "LL (*)". Klasa języków obsługiwanych przez tę technikę to dokładnie klasa jednoznacznych języków bezkontekstowych lub ta sama klasa co LALR (1) i Packrat. Jednak klasa gramatyki gramatycznej jest trochę inna, z najbardziej znaczącą słabością jest brak wsparcia dla rekursji lewej.
packrat kombinatorów zrobić wsparcia lewej rekursji, ale nadal nie obsługują wiele innych, bardziej subtelnych cech LALR. Ta słabość generalnie wynika z uporządkowanego operatora wyboru, który może prowadzić do kilku diabelnie trudnych błędów gramatycznych, a także zapobiega pewnym przyjemnym formułom gramatycznym. Najczęściej spotykany przykład tych błędów pojawia się, gdy przypadkowo zlecasz niejednoznaczne wybory jako najkrótsze, co powoduje chciwą zapowiedź, która uniemożliwia wypróbowanie prawidłowej gałęzi. LALR nie ma tego problemu, ponieważ po prostu próbuje wszystkie możliwe gałęzie naraz, odraczając punkt decyzyjny do końca produkcji.
pamiętaj, aby spojrzeć na Parboiled, https://github.com/sirthias/parboiled/wiki –
Użyłem ostatnio jparsec (http://jparsec.codehaus.org/) - to miłe (w projekcie Java). Jest to biblioteka Java, ale myślę, że dzięki kilku niejawnym konwersjom może wyglądać ładnie w Scali ... tylko moje 5 centów ... – tenshi