2016-06-30 4 views
1

Прежде всего: извините за мой плохой английский ...Maven XText 2.10 Внешний Лексер

У меня есть 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. (Проект работает без проблем, но не с моим внешним лексаром).

Я пытаюсь сделать что-то вроде этого:

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 
      } 

Лексера и анализатора разделен на папки поколения, но XText продолжать использовать сгенерированный лексер вместо моего.

Можете ли вы посоветовать мне этот плз?

ответ

0

Вы можете использовать FragementAdapter включить IGeneratorFragment S как 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" 
    } 
} 
Смежные вопросы