解析器接受损坏的输入
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。
我有这样一个简单的语法:
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。