从ANTLR语法创建树

时间:2016-02-17 11:13:31

标签: java parsing nlp antlr lexer

我编写了一个ANTLR语法文件,现在我需要生成一个邻接矩阵,告诉我哪个语法规则与哪个规则相关联。 对于前: - 开始:('显示' |'给' |'得到')' me' ('所有')?短语         | '我' '将' '像' ('所有')?短语         |短语;

短语:constructPhrase(('和')?constructPhrase)*         | constructPhrase'和' ('其' |'他们的')constructPhrase         | constructPhrase functionPhrase         | functionPhrase         ;

这里我们希望彼此关联。所以我需要阅读语法文件并生成邻接矩阵。

2 个答案:

答案 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文件并从中创建自己的解析器。