Quantcast
Channel: Linux.org.ru: Форум
Viewing all articles
Browse latest Browse all 108369

Parser combinators и LL(2)

$
0
0

Здравствуйте!

Можно ли совместить LL(1)/LL(2) парсеры и parser combinators?
Или это невозможно?

Насколько я понимаю, допустим, LL(2) парсер имеет lookahead = 2, т.е. он может смотреть на 2 токена вперед (кстати, что есть токен в данном случае - один символ или именно целый токен?).
Это сильно ограничивает backtracking (нельзя, например, прочитать 10 токенов, подумать, а потом откатиться назад).
А без backtracking'а по сути не будут работать многие parser combinators, да? Например, комбинатор `and`: допустим, он распарсил успешно 5 токенов, а на 6м зафейлил, следовательно, вся цепочка должна зафейлиться, но откатить 5 токенов мы уже не можем.
Или parser combinators являются LL(infinity) парсерами?
Можно ли сделать parser combinators поверх потоков (streams)?

 ,


Viewing all articles
Browse latest Browse all 108369

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>