У меня есть правило для сопоставления строки, которая выглядит следующим образом:
STRING
: '"' ( ~( '"' | '\\' ) | '\\' . )* '"'
;
Я не хочу, чтобы кавычки были частью текста токенов.В Antlr2 я бы просто поставил '!'
после кавычек, чтобы сказать Antlr не добавлять их в текст.
Обратите внимание на '!' ниже.
STRING
: '"'! ( ~( '"' | '\\' ) | '\\' . )* '"'!
;
Однако в Antlr3 я больше не могу сделать это, так как получаю ошибку:
warning(149): Crv__.g:0:0: rewrite syntax or operator with no output option; setting output=AST
Я не знаю, могу ли я использовать здесь правило перезаписи, так как я не знаю, как написать все совпаденияtoken '.'
Моя единственная другая мысль - захватить соответствующий текст и вернуть его без кавычек, но я не уверен, как это сделать, поскольку токен еще не создан.
Я использую среду выполнения C Antlr.Как мне это сделать?