Если вы выполняете препроцессор в стиле C, то вы захотите сделать отдельный первый проход для предварительной обработки (что означает этот термин - проход обработки перед вашим стандартным проходом lex / parse) .
Как именно вы хотите выполнить передачу, зависит от вас - вы можете передать введенный текст одной грамматике в antlr, взять результат и передать его другой грамматике и т. Д.
Или вы можете создавать отдельные программы, которые могут принимать ввод на stdin
и выводить на stdout
, или передавать текст между каналами и т. Д.
Как только у вас все получится, просто найдите ваши ключевые слова. Проверьте каждый токен, который вы видите, против вашей таблицы #define
s, и, если он совпадает, замените его на имеющееся у вас определение. Вам также нужно будет уметь анализировать параметры функции, но это не должно добавлять слишком много усилий.