Два основных вопроса ANTLR

Я пытаюсь использовать ANTLR, чтобы взять простую грамматику и произвести ассемблерный вывод. В ANTLR я предпочитаю Python.

Многие учебники кажутся очень сложными или подробно рассказывают о вещах, которые мне не важны; Мне действительно нужны очень простые функции. Итак, у меня есть два вопроса:

«Возврат» значений из одного правила в другое.

Допустим, у меня есть такое правило:

assignment: name = IDENTIFIER ASSIGNMENT expression;

Я могу запускать код Python в {}, когда это правило распознано, и я могу передавать аргументы в код Python для выражения, выполнив что-то вроде:

назначение: имя = ИДЕНТИФИКАТОР НАЗНАЧЕНИЕ выражение [список переменных];

а затем

выражение [список переменных]: бла-бла

Но как мне «вернуть» значение моему оригинальное правило? Например.как мне вычислить значение выражения и затем отправить его обратно в мое правило присваивания для использования там в Python?

Как мне написать код моего целевого языка?

Итак, у меня есть Python, который запускается, когда правила распознаются, затем я вычисляю сборку, которую хочу создать с помощью этого оператора. Но как мне сказать «записать эту строку инструкций по сборке в мой целевой файл»?

Любые хорошие учебные пособия, относящиеся к такого рода материалам (грамматикам атрибутов, компиляция во что-то кроме AST и т. Д.), Были бы тоже полезно. Если мои вопросы не имеют особого смысла, попросите меня уточнить; Мне трудно осмыслить ANTLR.

5
задан Fergusmac 27 September 2011 в 08:08
поделиться