EBNF для ECMAScript?
Я пытаюсь найти хорошее описание ECMAScript EBNF, но до сих пор я не нашел ничего полного.
Любые идеи?
Ответы
Ответ 1
Как насчет стандарт ECMAScript?
По определению: -}
РЕДАКТИРОВАТЬ: Если вы хотите использовать существующую грамматику, попробуйте один из сайтов инструментов генератора грамматики.
Для ANTLR, здесь
грамматика ECMAScript.
Я ничего не знаю о его качестве, но ANTLR может создавать хорошие парсеры, если грамм построен с осторожностью. Вероятно, вы обнаружите, что грамматика также переплетается с множеством материалов ANTLR, поэтому она может страдать от той же проблемы, что и стандарт с вашей точки зрения. По крайней мере, вы можете удалить все эти материалы.
Ответ 2
Глава 2 диаграмм Crockford JavaScript: Хорошие части (вы догадались) хорошие части.
Вот пара stabs в BNF для JavaScript:
из этого более раннего вопроса SO:
Хранилище BNF-грамматик?
Ответ 3
Я работаю над javacc - основанный на анализаторе ECMAScript. Вот моя грамматика:
См. также Tom Copeland BNF для EcmaScript:
Также как и "Еще один переводчик JavaScript":
Также как Dojo грамматика инструментария (возможно, основанная на YAJI):
С моей точки зрения, YAJI или Dojo Toolkit являются лучшими и наиболее полными (насколько мне известно). Я основываюсь на них, но хочу сделать его еще более полным (5.1/6) и стандартным, но практичным.
ECMAScript-грамматика очень сложная. У этого есть несколько огромных оговорок:
- Литералы регулярных выражений и разделения (вы не можете различать их на уровне лексера)
- Автоматическая точка с запятой (ASI)
Поэтому, пожалуйста, имейте это в виду. Реализация этих программ очень сложная.
Если ваша целевая платформа Java и вы не возражаете против JavaCC, я был бы рад, если вы присоединитесь к моему проекту. Моя грамматика фактически готова (строит/компилирует без предупреждений). Сейчас я работаю над наборами тестов, чтобы покрыть каждую функцию и продукцию. Я предвижу некоторые проблемы с регулярными выражениями и ASI, хотя.
пс. Я только что заметил, что вопрос с 09, поэтому мое приглашение, вероятно, слишком поздно.:)
Ответ 4
попробуйте эту ссылку ecmascriptA3 у нее есть BNF ecmascript