2016-09-09 10 views
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プラグインでは、この入力には正しくないラベルが付けられます。

+1

Results eresourceにエラーがありますか?あなたはvalidationtesthelperも見ているかもしれません –

+0

それはそうでした!ありがとう。おそらく、生成された 'Hello World'テストケースに' assertEquals(0、result.eResource.errors.size) 'のようなものを追加することができます。 –

答えて

0

あなたはeResourceのためにresultとそのエラーのためにリソースを尋ねます。あなたはValidationTestHelperも見ているかもしれません。

関連する問題