解析器接受损坏的输入

Parser accepting corrupt input

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

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>5

field3=0

anull0

我不明白为什么会这样。在生成的 Eclipse 插件中,此输入被标记为不正确。

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