我编写了一个ANTLR语法文件,现在我需要生成一个邻接矩阵,告诉我哪个语法规则与哪个规则相关联。 对于前: - 开始:('显示' |'给' |'得到')' me' ('所有')?短语 | '我' '将' '像' ('所有')?短语 |短语;
短语:constructPhrase(('和')?constructPhrase)* | constructPhrase'和' ('其' |'他们的')constructPhrase | constructPhrase functionPhrase | functionPhrase ;
这里我们希望彼此关联。所以我需要阅读语法文件并生成邻接矩阵。
答案 0 :(得分:4)
我在github https://github.com/julianthome/inmemantlr上创建了一个项目,它接受g4语法定义和一个包含要解析的实际内容的文本文件。它将自动为您生成AST,其中节点确实包含解析规则和与该规则关联的令牌。它可能对您的目的有用。
它是用Java编写的 - 你可以插入你喜欢的任何g4文件......解析器生成和AST生成是自动完成的。代码示例可以在测试用例中找到。
祝福和亲切的问候 儒略
答案 1 :(得分:3)
解析ANTLR语法并不困难。我已将此作为code completion implementation in MySQL Workbench的一部分。
您需要ANTLR元语法并从中生成解析器。然后使用它将您自己的语法加载到可用于从中生成矩阵的结构中。
作为先行者,您可以使用the ANTLR grammar parser I have created,但这是针对C / C ++目标,而不是Java。因此,您必须从ANTLR主页获取ANTLR3.g文件并从中创建自己的解析器。