2015-01-29 3 views
0

Я пытаюсь использовать Antlr4.5 для генерации lexer/parser (в C#) для грамматики SQL. Какие инструменты вы бы порекомендовали, чтобы написать грамматику и проверить ее?Рекомендации по обработке antlr

Я пытаюсь antlrworks2, но я нахожу его немного запутанным (не могу найти способ ввода образца текста и просмотра дерева синтаксического анализа - не уверен, что его там нет, или я слепой или просто тупой, но Я почти уверен, что у antlrworks v1 была такая функция).

Плагин Visual Studio VSIX от Сэма Харвелла отлично смотрится, но он также смущает меня, лексер и парсер генерируются в папке obj \, а не внутри проекта. Кроме того, это не поможет мне при написании грамматики, показывая мне синтаксическую диаграмму, позволяя мне попробовать грамматику с образцом текста и так далее.

Я довольно уверен, что antlr - это хороший способ пойти, но я действительно не уверен в оснащении и подходе, который я должен принять при определении и тестировании моей грамматики. Буду признателен за любые предложения.

+0

Почему вы не можете использовать грамматику для C# с сайта ANTLR? Наверняка у них есть один. [Если вы это сделаете, вы обнаружите, что разбор не является вашей проблемой. Проверьте мою биографию или найдите «жизнь после разбора», чтобы увидеть, где лежат ваши настоящие проблемы.] –

+0

Спасибо за ваш комментарий Ira. Мне не нужна грамматика C#, я хочу, чтобы lexer/parser был сгенерирован как код C#. Я фактически пытаюсь добавить функциональность завершения кода к инструменту, который я создаю. Язык, который я обрабатываю, - это SQL, но поскольку я хочу предоставить завершение кода, грамматику нужно изменить, чтобы разрешить неправильный SQL. Все, что мне действительно нужно от синтаксического анализатора, - это часть заявления, которое пользователь может вводить, а также псевдонимы и их области. Это также не должно быть идеальным, если разоблаченный разобраться, я могу предложить все альтернативы пользователю, который будет фильтроваться по мере их ввода. – anakic

ответ

0

Мой вопрос не был блестящим, потому что инструмент довольно независим от языка-цели antlr, но FWIW я закончил использование бесплатной версии IntelliJ IDEA с плагином antlr. Я начал любить IntelliJ, это очень хорошо. Плагин antl также очень хорош по большей части, он немного груб по краям здесь и там, но все важные вещи работают очень хорошо, и в целом это потрясающе полезно.