У меня есть выражения в ANTLR3
num_addition
: num_multi ((plus^|minus^) num_multi)*
;
Я хочу изменить токены «плюс» и «минус» на другой токен. Поэтому я попытался создать это правило перезаписи.
num_addition
: num_multi (plus num_multi)* -> ^(num_multi ^(plus_special num_multi)*)
| num_multi (minus num_multi)* -> ^(num_multi ^(minus_special num_multi)*)
;
Если я сделаю это, генерация в ANTLRWORKS займет больше времени, но она сгенерирует правильную грамматику и токены. Если я применю этот стиль к другим правилам, таким как «множество», «разделение», «равный» и т. д., в конечном итоге это приведет к тому, что ANTLRWORKS ничего не сделает, когда я нажму «Создать».
Согласно ANTLRWORKS ошибок нет, но когда я нажимаю генерировать, ничего не происходит.
Я неправильно переписываю для того, чего хочу достичь?