Этот вопрос является слишком широким, чтобы поставить весь ответ в этой коробке, но вы, вероятно, хотите, чтобы начать здесь:
http://bford.info/packrat/
«Синтаксический Expression грамматик» являются альтернативой контекстно-свободных грамматик для определения языков.
По сути, грамматика ПЭГ представляет собой программу для разбора языка ... что облегчает понимание для программистов, в то время как контекстно-свободная грамматика является шаблоном для генерации всех текстов языка. Перевод из контекстно-свободной грамматики в парсер несовершенен и трудно понять, что затрудняет использование CFG для новичков на практике.
Есть много разных алгоритмов для разбора грамматики ПЭГ, но все они эквивалентны простой: сначала попробуйте первый вариант, и если это не сработает, попробуйте следующий.
Это кажется намного проще, не так ли? Это, в основном, есть, но для новичков все еще есть много возможностей, чтобы столкнуться с трудностями с парсерами PEG. Разница в том, как они справляются с двусмысленностью.
Когда вы используете генератор синтаксического анализа на основе CFG, а ваша грамматика неоднозначна, вы получаете кучу ошибок и предупреждений, которые трудно понять и исправить.
Когда вы используете грамматику ПЭГ, которая неоднозначна, все выглядит нормально, но если вы на самом деле не понимаете, что ваша грамматика неоднозначна и почему вы получите результаты синтаксического анализа, которые отличаются от ожидаемых.