| Вопрос в пространство (парсинг LL vs LR) |
[Aug. 31st, 2011|08:02 pm] |
Вопрос в пространство (программерское) - никогда раньше не задумывался, а тут немного столкнулся на практике: парсинг LR или LL? Какой лучше использовать в новых проектах? На stackoverflow говорят, что вопрос, в принципе, холиварный:
Parsing ought to be easier - в защиту LL
Why I prefer LALR parsers - соответственно, в защиту LR
У меня в этом почти никакого опыта нет, хотелось бы послушать мнения тех, у кого такой опыт есть. |
|
|
| Comments: |
![[User Picture]](http://lj.rossia.org/userpic/172165/60) | | From: | kouzdra |
| Date: | September 1st, 2011 - 12:12 pm |
|---|
| | | (Link) |
|
LR пошире, зато LL-парсер можно писать вручную - рекурсивным спуском, а там хакать если надо намного проще. Вопрос в общем - YACC или рекурсивный спуск.
Я лично предпочитаю спуск - именно за гибкость, ну и потому что навыки отработаны, но любителей YACC тоже много.
![[User Picture]](http://lj.rossia.org/userpic/172165/60) | | From: | kouzdra |
| Date: | September 1st, 2011 - 12:13 pm |
|---|
| | | (Link) |
|
PS: У рекспуска есть другой дефект - если проект большой легко превратить текст в несопровождаемое говно, а YACC более или менее от этого удерживает.
![[User Picture]](http://lj.rossia.org/userpic/199447/1013) | | From: | nikto |
| Date: | September 1st, 2011 - 05:42 pm |
|---|
| | | (Link) |
|
Вот, спасибо, примерно такую сравнительную оценку я и хотел услышать. Для наших целей остановимся, пожалуй, на LL - там парсинг - это все, что нам пока надо, а компилятор конструировать надобности нет. | |