Стандартный формат для деревьев синтаксического анализа и абстрактных синтаксических деревьев

BiConsumer<_notaFiscalServicoGeraServicosMov, Double> consumer = (instance, param) -> {
    try {
        methodInstance.invoke(instance, new Object[] {param});
    } catch (LotsOfExceptionsHere e) {
        throw new RuntimeException(e);
    }
};

, который должен это сделать. На самом деле другого пути нет.

6
задан Brandon Bloom 17 February 2009 в 09:31
поделиться

2 ответа

В нашем проекте мы определили метамодель AST в UML и использовании ANTLR (Java) для заполнения модели. Мы также поддерживаем маркерную информацию от ANTLR после парсинга, но мы еще не попытались обновить базовый текстовый файл с модификациями, сделанными на модели.

Это имеет отвратительные издержки (в инфраструктуре, такой как Eclipse UML2/EMF), но наша цель состоит в том, чтобы использовать высокоуровневые инструменты для Основанной на модели/управляемой Разработки (MDD, MDA) так или иначе, таким образом, мы решили использовать его на каждом уровне.

Я думаю, что один из наших студентов, однажды играемых с OpenArchitectureWare и управляемых, получает изменения от основанного на Eclipse, сгенерированного редактора назад в синтаксическое дерево (не связанный с моделью UML выше) автоматически, но я не знаю детали об этом.

Вы могли бы также хотеть посмотреть на древовидные грамматики ANTLR.

3
ответ дан 16 December 2019 в 21:46
поделиться

Исследовательское сообщество решило, что обмен графами был правильным решением при перемещении информации из одного инструмента анализа программ в другой. См. http://www.gupro.de/GXL

Совсем недавно OMG определила стандарт для обмена абстрактными синтаксическими деревьями. См. http://www.omg.org/spec/ASTM/1.0/Beta1/

Эта проблема, кажется, решается снова и снова. За эти годы было сделано полдюжины предложений "автобус с инструментами". все это решило проблему, и никто никогда не обгонял отрасль. Проблема в том, что а) AST легко представить, используя любые вложенные обозначения [круглые скобки, например LISP, например XML, ...] так что люди легко развертывают собственное решение, и б) для одного инструмента для обмена AST с другим, они оба должны согласиться по существу в том, что означают узлы AST; но большинство AST довольно случайно получены из конкретного грамматика / технология синтаксического анализа, используемая каждым инструментом, и есть почти всегда разногласия по этому поводу между инструментами. Итак, я видел очень мало инструментов, которые осмысленно обмениваются AST.

Если вы занимаетесь хобби, я бы предпочел шепелявый кодирование деревьев, где каждый узел имеет следующий формат: (...) Его легко генерировать и легко читать.

Я работаю над профессиональным инструментом для управления программами . Если мы распечатать AST, мы делаем то же самое. В основном индивидуальный AST слишком сложны для практического применения, поэтому мы почти никогда не распечатываем весь AST, в лучшем случае только узел и несколько детей глубоко. Наш инструмент не обменивается AST с кем-либо (см. Причины выше :), но просто Прекрасно встраивая его в память, делая с ним невероятные вещи по причинам анализа или трансформации, а затем либо просто удалив его (не нужно никуда отправлять) или регенерировать текст на исходном языке из дерева. [Последнее означает, что вам нужен анти-синтаксический анализ или "красивая печать" технология]

4
ответ дан 16 December 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: