相关疑难解决方法(0)

如何获取antlr4规则匹配的原始文本?

使用Java 7语法https://github.com/antlr/grammars-v4/blob/master/java7/Java7.g4我想找到具有特定名称的方法,然后打印出该方法.我看到methodDeclaration我匹配时可以使用规则.所以我继承Java7BaseListener并覆盖这个监听器方法:

@Override public void enterMethodDeclaration(Java7Parser.MethodDeclarationContext ctx) { }
Run Code Online (Sandbox Code Playgroud)

如何获取原始文本? ctx.getText()给了我一个字符串,所有的空白都被删除了.我想要评论和原始格式.

java antlr antlr4

34
推荐指数
2
解决办法
6454
查看次数

获取Antlr规则的原始文本

我是一名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,但我不知道如何接收原始文本.

java antlr antlr3

6
推荐指数
1
解决办法
1956
查看次数

标签 统计

antlr ×2

java ×2

antlr3 ×1

antlr4 ×1