Что и как использовать «островную грамматику» в antlr3?Островная грамматика antlr3
ответ
Ну, я не уверен, что именно вы имеете в виду, но так как вы не упомянули, что вы написали до сих пор я хотел бы начать здесь:
http://www.antlr.org/wiki/display/ANTLR3/Island+Grammars+Under+Parser+Control
Остров грамматика один, который лечит большая часть языка как кусок текста («вода») и выделяет часть интересующего слова для анализа, используя правила грамматики («остров»). Например, вы можете создать грамматику острова, чтобы выбрать все выражения, найденные в программе C#, и игнорировать объявления переменных/методов/классов и синтаксис оператора (if, while, ...).
Реальный вопрос: «Должны ли вы использовать островные грамматики?».
Положительные преимущества:
- вы не должны писать полную, полную грамматику для языка, который вы хотите обработать.
Обратной:
Это не всегда легко выделить часть источника интереса. Например, Как вы гарантируете, что языковая грамматика не заберет блок кода, который закомментирован, если только ваша языковая грамматика не лексирует все комментарии в деталях? Пункт островной грамматики заключался в том, чтобы не вдаваться в такие детали, и все же здесь вы должны.
Вы можете использовать только грамматику острова, чтобы сосредоточиться на проблеме, как вы ее понимаете прямо сейчас. Если проблема движется, то ваша языковая грамматика, возможно, тоже придется сдвинуться, и это не всегда легко.
Наиболее интересные проблемы при манипулировании программой требуют, чтобы вы могли определять не только синтаксис (например, «синтаксический анализ»), но и создавать какое-то дерево для управления, но вы также сможете определить значение символов , С помощью грамматики на острове вы эффективно списали возможность сделать это (если вы не хотите включать весь синтаксис для блоков, деклараций и т. Д. ... внезапно это не островная грамматика, а небольшая грамматика континента) , И что действительно ограничивает то, что вы можете сделать.
Назовите меня предвзятым, но я делал такие вещи долгое время. Я считаю, что языковые грамматики действительно не так полезны. Альтернативой, которую я предлагаю, являются партизаны с амортизированными издержками на многих языках на основе общих фондов, а их называют DMS Software Reengineering Toolkit.
YMMV.
- 1. EBNF грамматика ANTLR3?
- 2. Неожиданное поведение с ANTLR3
- 3. Как создать TreeParser в ANTLR3?
- 4. Есть ли ANTLR4 грамматика для ANTLR4
- 5. символы unicode antlr3 вызывают ошибку
- 6. ANTLR3: компиляция предупреждения (200) «множественные альтернативы»
- 7. Как сгенерировать список из правила * в ANTLR3?
- 8. ANTLR3 - Как получить текст повторения маркеров
- 9. Как сопоставить упрощенную строку в ANTLR3
- 10. получить текст правила грамматики в antlr3
- 11. ANTLR3 грамматика работает с пробелами, но дает NoViableAltException при опускании пробелов
- 12. Компиляция 3.2 грамматика Antlr с градиентом
- 13. диктовки Грамматика VS Пользовательские Грамматика
- 14. Создайте входной поток antlr3 из строкового потока? (Antlr3 C-мишень)
- 15. Лексер antlr3 токенов проблему
- 16. Как сериализовать antlr3 AST
- 17. ANTLR3 разобрать выражение
- 18. Нужна известково пример ANTLR3
- 19. ANTLR3 метаданные времени выполнения
- 20. ANTLR3 Ссылка на синтаксис?
- 21. ANTLR2 vs ANTLR3
- 22. ANTLR3 лексер старшинство
- 23. Как исправить вызов рекурсивного правила в Antlr3?
- 24. Хорошая грамматика CSS в Antlr v4
- 25. ANTLR3 правила Eval имеет решения не-LL (*)
- 26. Добавить поддержку цитируемых строк для грамматики Antlr3
- 27. простых критерии анализатор выражений с antlr3
- 28. Бесконтекстная грамматика
- 29. Преобразование из Antlr3 в Antlr4
- 30. Соответствующие варианты лексемы с Antlr3