解析器接受损坏的输入

时间:2016-09-09 15:45:22

标签: xtext

我有一个像这样简单的语法:

grammar RuleDSL with org.eclipse.xtext.common.Terminals

generate ruledsl "http://www.ruledsl.org"

Model:
    rules += Rule*;

Rule:
    rule = 'Rule' '{' subrules += Subrule*  '}'
;   

Subrule: fieldA=ID opName=Operator fieldC=INT ';';
Operator:
    '<' | '<=' | '=' | '>=' | '>' 
;

我想知道为什么接受这个输入:

  Rule {
          field1 > 5
          field3 = a          
  }

这是由

解析的
@RunWith(XtextRunner)
@InjectWith(RuledslInjectorProvider)
class RuledslParsingTest{

    @Inject
    ParseHelper<Model> parseHelper

    @Test 
    def void loadModel() {          
        val result = parseHelper.parse('''
            Rule {
                field1 > 5
                field3 = a
            }
        ''')
        println(result)
     }
}

和产量 - 在一些迭代树并打印Subrule - :

之后
  

field1&gt; 5

     

field3 = 0

     

anull0

我无法弄清楚为什么会这样。在生成的Eclipse PlugIn中,此输入标记为不正确。

1 个答案:

答案 0 :(得分:0)

您可以向result询问其eResource和资源的错误。您也可以查看ValidationTestHelper。