首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在组合语法中无法识别导入语法中的词法分析器模式。单击“在testRig中运行”Antlrworks2后出现编译错误

在组合语法中无法识别导入语法中的词法分析器模式。单击“在testRig中运行”Antlrworks2后出现编译错误
EN

Stack Overflow用户
提问于 2013-02-19 15:00:53
回答 1查看 618关注 0票数 0

我正在使用Antlrworks2。lexer语法中定义了“词汇模式”。我有一个组合语法,它引入了词法分析器语法。从组合语法生成代码后,它将生成两个.java文件。例如:如果我的组合语法文件名是'xyz.g4‘,那么java文件名就是’xyzLexfor.java‘,'xyzParser.java’。但是当我在Antlrworks2中点击'run in TestRig‘时,它会在控制台中显示下面的错误。

代码语言:javascript
复制
Compiling grammar files...
warning: Supported source version 'RELEASE_6' from annotation processor 'org.netbeans.modules.openide.modules.PatchedPublicProcessor' less than -source '1.7'
warning: Supported source version 'RELEASE_6' from annotation processor 'org.netbeans.modules.openide.util.ServiceProviderProcessor' less than -source '1.7'
warning: Supported source version 'RELEASE_6' from annotation processor 'org.netbeans.modules.openide.util.NamedServiceProcessor' less than -source '1.7'
warning: Supported source version 'RELEASE_6' from annotation processor 'org.netbeans.modules.openide.util.NbBundleProcessor' less than -source '1.7'
C:\Users\cc91kor\AppData\Local\Temp\TestRigTask-1361256016169\CDFCombinedGrammarLexer.java:144: error: cannot find symbol
        case 1: _mode = INSIDE_BRACKETS;  break;
                        ^
  symbol:   variable INSIDE_BRACKETS
  location: class CDFCombinedGrammarLexer
C:\Users\cc91kor\AppData\Local\Temp\TestRigTask-1361256016169\CDFCombinedGrammarLexer.java:149: error: cannot find symbol
        case 0: _mode = INSIDE_BRACKETS;  break;
                        ^
  symbol:   variable INSIDE_BRACKETS
  location: class CDFCombinedGrammarLexer
2 errors
4 warnings
Arguments: [CDFCombinedGrammar, vt, -tokens, -tree, -gui, C:\Users\cc91kor\Desktop\vt.txt]
Can't load CDFCombinedGrammar as lexer or parser

正如我在CDFCombinedGrammarLexer.java(在上面的示例xyzLexer.java中)中观察到的那样,“lexical mode”的代码并不存在。我可以在java文件中找到模式的代码,该文件是从实际的lexer文件生成的。

下面是我可以在实际的lexer生成的java文件中看到的代码。

代码语言:javascript
复制
public static final int INSIDE_BRACKETS = 1;
    public static String[] modeNames = {
        "DEFAULT_MODE", "INSIDE_BRACKETS"
    };

有什么帮助吗?我在等待!

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2013-02-20 00:46:29

在ANTLR 4中尚不支持导入多模式词法分析器语法。以下问题将跟踪此功能的进度:

Support importing multi-mode lexer grammars

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14951612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档