0
我有一個簡單的語法是這樣的:解析器接受腐敗輸入
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
- :
字段1> 5
場3 = 0
anull0
我想不通爲什麼會這樣。在生成的Eclipse PlugIn中,該輸入被標記爲不正確,因爲它應該是。
你問結果資源錯誤嗎?你也許可以看看validationtesthelper以及 –
這樣做!謝謝。也許你可以把'assertEquals(0,result.eResource.errors.size)'添加到生成的'Hello World'測試用例中。 –