2016-01-24 4 views
-1

Я заинтересован в создании компьютерных языков в последнее время. BNF & yacc сделал меня сумасшедшим. Потом я увидел, PEG, и меня привлекает его graceful.I хотят, чтобы узнать больше о it.The деталям:Некоторая информация о PEG необходима

1 how does PEG work (algorithm) 

2 is there any tools about it on C/C++/Lua 

Очень thanks.◉-◉

ответ

1

Этот вопрос является слишком широким, чтобы поставить весь ответ в этой коробке, но вы, вероятно, хотите, чтобы начать здесь:

http://bford.info/packrat/

«Синтаксический Expression грамматик» являются альтернативой контекстно-свободных грамматик для определения языков.

По сути, грамматика ПЭГ представляет собой программу для разбора языка ... что облегчает понимание для программистов, в то время как контекстно-свободная грамматика является шаблоном для генерации всех текстов языка. Перевод из контекстно-свободной грамматики в парсер несовершенен и трудно понять, что затрудняет использование CFG для новичков на практике.

Есть много разных алгоритмов для разбора грамматики ПЭГ, но все они эквивалентны простой: сначала попробуйте первый вариант, и если это не сработает, попробуйте следующий.

Это кажется намного проще, не так ли? Это, в основном, есть, но для новичков все еще есть много возможностей, чтобы столкнуться с трудностями с парсерами PEG. Разница в том, как они справляются с двусмысленностью.

Когда вы используете генератор синтаксического анализа на основе CFG, а ваша грамматика неоднозначна, вы получаете кучу ошибок и предупреждений, которые трудно понять и исправить.

Когда вы используете грамматику ПЭГ, которая неоднозначна, все выглядит нормально, но если вы на самом деле не понимаете, что ваша грамматика неоднозначна и почему вы получите результаты синтаксического анализа, которые отличаются от ожидаемых.

 Смежные вопросы

  • Нет связанных вопросов^_^