繁体   English   中英

如何从Antlr中的语法文件创建令牌文件

[英]how to create token file from grammar file in antlr

我正在使用antlr创建DSL。 Lexer和Parser被写入一个语法文件(例如layout.g)。 树文法被写在另一个文法文件中(例如layoutTree.g)。 现在,树解析器无法正确解析。 我打印了解析器的AST输出及其正确的输出。 我浏览了生成的树解析器代码,发现令牌值声明在树解析器和解析器中分配了不同的值,下面是解析器和树解析器的示例输出。

解析器输出

public static final int ARRAY_MEMBER_TOKEN=4;
public static final int ARRAY_TOKEN=5;
public static final int DECLARATION_TOKEN=6;

树解析器输出

public static final int EOF=-1;
public static final int DECLARATION_TOKEN=4;
public static final int IDENTIFIER=5;

如您所见,DECLARATION_TOKEN在解析器输出和树解析器输出中具有不同的值。 由于此树解析器无法正常工作,如何解决此问题?

生成的令牌文件(例如layout.token)有问题吗? 该文件在我的项目中为空。如何生成此文件?

树语法中是否有类似的内容?

options
{
  tokenVocab=layout; //NOT layout.g or layout.tokens
  ASTLabelType=pANTLR3_BASE_TREE;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM