0

我正在使用 Antlrworks2。词法分析器语法中定义了“词法模式”。我结合了导入词法分析器语法的语法。从组合语法生成代码后,它将生成两个 .java 文件。例如:如果我的组合语法文件名为“xyz.g4”,则 java 文件名为“xyzLexer.java”、“xyzParser.java”。但是当我在 Antlrworks2 中单击“在 TestRig 中运行”时,它会在控制台中出现以下错误。

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 中),“词法模式”的代码不存在。我可以在从实际词法分析器文件生成的 java 文件中找到 mode 的代码。

下面是我可以在实际的词法分析器生成的 java 文件中看到的代码。

public static final int INSIDE_BRACKETS = 1;
    public static String[] modeNames = {
        "DEFAULT_MODE", "INSIDE_BRACKETS"
    };

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

提前致谢!

4

1 回答 1

0

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

支持导入多模式词法分析

于 2013-02-19T16:46:28.663 回答