Obtenha texto original de uma regra Antlr
Sou iniciante no ANTLR e quero calcular um hash SHA1-de símbolo
Minha gramática de exemplo simplificado:
grammar Example;
method @after{calculateSha1($text); }: 'call' ID;
ID: 'A'..'Z'+;
WS: (' '|'\n'|'\r')+ {skip(); }
COMMENT: '/*' (options {greedy=false;}: .)* '*/' {$channel=HIDDEN}
Como o lexer remove todos os espaços em branco, as diferentes stringscallABC
, call /* DEF */ ABC
infelizmente, obtém o mesmo valor de SHA1-Hash.
É possível obter o texto "original" de uma regra entre o token inicial e final com todos os espaços em branco ignorados e o texto dos outros canai
(Uma possibilidade que me vem à mente é integrar todos os personagens doWS
- eCOMMENT
egra -lexer, mas existem muitas outras regras, portanto isso não é muito prático
Uso o ANTLRInputStream padrão para alimentar o Lexer, mas não sei como receber o texto origina