我是一名ANTLR初学者,想要计算符号的SHA1-Hash.
我的简化示例语法:
grammar Example;
method @after{calculateSha1($text); }: 'call' ID;
ID: 'A'..'Z'+;
WS: (' '|'\n'|'\r')+ {skip(); }
COMMENT: '/*' (options {greedy=false;}: .)* '*/' {$channel=HIDDEN}
Run Code Online (Sandbox Code Playgroud)
由于词法分析器删除了不同字符串的所有空格callABC,call /* DEF */ ABC不幸的是得到相同的SHA1-Hash值.
是否有可能在开始和结束标记之间获取规则的"原始"文本以及所有跳过的空格和其他通道的文本?
(我想到的一种可能性是成员WS- 和 - COMMENT工具规则中的所有字符,但是还有更多规则,所以这不太实用.)
我使用标准的ANTLRInputStream来提供Lexer,但我不知道如何接收原始文本.
getText() 返回完整的语句,不包括单词之间的空格。考虑空格的一种方法是将它们包含在语法中。但是,有没有其他方法可以获取考虑空格的完整字符串。