Файл грамматики Yacc/Jay для JavaScript?
Возможный дубликат:
Где я могу найти yacc gammar для ECMAscript/Actionscript/Javascript
Я пытаюсь найти файл грамматики для JavaScript для Yacc (желательно для Jay, но поскольку Jay - это клон Yacc. Я должен быть в порядке, так как мне нужно реализовать его на .NET.
Ответы
Ответ 1
Думаю, вам придется строить его самостоятельно, но есть намеки на этом пути.
Полная грамматика JavaScript должна быть доступна где-то; быстрый поиск показал мне JavaScript LL (1) Грамматика. (Также есть схема BNF для JavaScript в RPA Toolkit: Parse JavaScript.)
Поскольку вы спрашиваете только о синтаксическом анализаторе, я предполагаю, что у вас уже есть lexer.
Включение этой грамматики в файл Yacc действительно не выглядит таким страшным. Например, существует грамматика C для Yacc.
Ответ 2
Почему бы не дать antlr a go - похоже, что у него есть грамматика для ecmascript:
http://www.antlr.org/grammar/list
Antlr, видимо, также получил время выполнения С#, хотя я использовал его только с Java.
Ответ 3
Вам действительно нужно внедрять его с нуля? Некоторые библиотеки, такие как Jint, будут выполнять ту же работу, быстрее и безопаснее. Jint является интерпретатором javascript в .NET - получил мое собственное одобрение.
Ответ 4
Я пишу свои парсеры с COCO/R для С# http://ssw.jku.at/coco/, потому что он просто работает без необходимости настройки. Но он не совместим с исходным кодом с Yacc, Flex, Bison и т.д. Однако его синтаксис проще. Кроме того, COCO/R поддерживает несколько языков .NET, отличных от С#.
ANTLR работает для С#, имеет больше функций, но для чтения документации и настройки инструмента требуется больше времени.