Существуют ли какие-либо библиотеки грамматики синтаксического анализа (PEG) для Javascript или PHP? - PullRequest
18 голосов
/ 17 сентября 2008

Меня привлекает формализм грамматики выражения синтаксического анализа для описания языков, специфичных для предметной области, но до сих пор код реализации, который я обнаружил, был написан на таких языках, как Java и Haskell, которые не подходят для веб-серверов в среде общего хостинга что моей организации приходится жить.

Кто-нибудь знает какие-либо библиотеки PEG или генераторы ParRat Parser для Javascript или PHP? Конечно, генераторы кода на любых языках, которые могут создавать исходный код Javascript или PHP, справятся с этой задачей.

Ответы [ 7 ]

17 голосов
/ 19 марта 2010

Я недавно написал PEG.js , генератор синтаксических анализаторов на основе PEG для JavaScript. Его можно использовать из командной строки или попробовать в браузере.

10 голосов
/ 17 сентября 2008

На самом деле есть один для Javascript: OMeta. http://www.tinlizzie.org/ometa/

Я также реализовал версию этого в Python: http://github.com/python-parsley/parsley

4 голосов
/ 16 марта 2011

php PEG https://github.com/maetl/php-peg

Это сообщение действительно старое, но я нашел его через Google, и на него следовало ответить

2 голосов
/ 12 ноября 2012

Language.js

Language.js - экспериментальный новый синтаксический анализатор с открытым исходным кодом, основанный на PEG (Parsing Expression Grammar), со специальным добавлением оператора «непослушного ИЛИ» для обработки ошибок уникальным новым способом. Он использует запоминание для достижения линейной скорости разбора времени

1 голос
/ 01 сентября 2009

Также есть Kouprey для JavaScript, который очень прост в использовании PEG-генератор / библиотека.

0 голосов
/ 25 октября 2008

посмотрите на https://github.com/leblancmeneses/NPEG, легко конвертировать в php. Дерево разбора создано с помощью анонимных функций.

0 голосов
/ 17 сентября 2008

Вы смотрели на ANTLR ? Он генерирует код лексера и синтаксического анализатора, обрабатывает абстрактные синтаксические деревья, позволяет вставлять код грамматики для вставки в код лексера / анализатора и доступно для разных языков!

...