【问题标题】:Maven XTEXT 2.10 external LexerMaven XTEXT 2.10 外部词法分析器
【发布时间】:2016-06-30 14:41:25
【问题描述】:

首先:对不起我的英语不好......

我有一个带有类似外部词法分析器的 2.4 Xtext 项目:

// In order to separate lexer and parser (both are managed in the same time by default)
        fragment = org.eclipse.xtext.generator.parser.antlr.ex.rt.AntlrGeneratorFragment {
            antlrParam = "-Xconversiontimeout"
            antlrParam = "30000"
            options = {
                backtrack = true
                backtrackLexer = false
            }
        }

        // Uses ANTLR Tools to compile a custom lexer and will also add a binding in the runtime module to use the Lexer
        fragment = parser.antlr.ex.ExternalAntlrLexerFragment {
            // A grammar file with .g will be expected in this package (should be stored in src folder)
            lexerGrammar = "com.group.xxx.xtext.customlexer.CustomEditorLexer"
            runtime = true
            antlrParam = "-lib"
            // This is the folder where the lexer will be created
            antlrParam = "${runtimeProject}/src-gen/com/group/xxx/xtext/customlexer"
        }

现在我尝试将此项目迁移到 maven xtext 2.10,但我不知道如何使用新的 xtext 生成器来做到这一点。 (该项目运行没有问题,但我的外部 lexar 没有)。

我尝试做这样的事情:

language = StandardLanguage {
        name = "com.group.xxx.xtext.Editor"
        fileExtensions = "xxx"

        serializer = {
            generateStub = false
        }

        parserGenerator = {

            combinedGrammar = false
            antlrParam = "com.group.xxx.xtext/src/com/group/xxx/xtext/customlexer"
            options = {
                backtrack = true
                backtrackLexer = false
            }

词法分析器和解析器被分为 gen 文件夹,但 xtext 继续使用生成的词法分析器而不是我的。

请您给我建议吗?

【问题讨论】:

    标签: maven generator xtext


    【解决方案1】:

    您可以使用 FragmentAdapter 来包含 IGeneratorFragments,例如 ExternalAntlrParserFragment

    parserGenerator = {
        antlrParam = "-Xconversiontimeout"
        antlrParam = "30000"
        options = {
            backtrack = true
            backtrackLexer = false
        }
    }
    fragment = org.eclipse.xtext.generator.adapter.FragmentAdapter {
        fragment = org.eclipse.xtext.generator.parser.antlr.ex.ExternalAntlrLexerFragment {
        // A grammar file with .g will be expected in this package (should be stored in src folder)
            lexerGrammar = "com.group.xxx.xtext.customlexer.CustomEditorLexer"
            runtime = true
            antlrParam = "-lib"// This is the folder where the lexer will be created
            antlrParam = "${rootPath}/${basename}/src-gen/com/group/xxx/xtext/customlexer"
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-23
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 2015-08-14
      • 2014-04-21
      • 2013-01-31
      相关资源
      最近更新 更多