Я пытаюсь использовать ANTLR, чтобы взять простую грамматику и произвести ассемблерный вывод. В ANTLR я предпочитаю Python.
Многие учебники кажутся очень сложными или подробно рассказывают о вещах, которые мне не важны; Мне действительно нужны очень простые функции. Итак, у меня есть два вопроса:
«Возврат» значений из одного правила в другое.
Допустим, у меня есть такое правило:
assignment: name = IDENTIFIER ASSIGNMENT expression;
Я могу запускать код Python в {}, когда это правило распознано, и я могу передавать аргументы в код Python для выражения, выполнив что-то вроде:
назначение: имя = ИДЕНТИФИКАТОР НАЗНАЧЕНИЕ выражение [список переменных];
а затем
выражение [список переменных]: бла-бла
Но как мне «вернуть» значение моему оригинальное правило? Например.как мне вычислить значение выражения и затем отправить его обратно в мое правило присваивания для использования там в Python?
Как мне написать код моего целевого языка?
Итак, у меня есть Python, который запускается, когда правила распознаются, затем я вычисляю сборку, которую хочу создать с помощью этого оператора. Но как мне сказать «записать эту строку инструкций по сборке в мой целевой файл»?
Любые хорошие учебные пособия, относящиеся к такого рода материалам (грамматикам атрибутов, компиляция во что-то кроме AST и т. Д.), Были бы тоже полезно. Если мои вопросы не имеют особого смысла, попросите меня уточнить; Мне трудно осмыслить ANTLR.