2016-09-09 4 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

FIELD3 = 0

anull0

내가 알아낼 수 없습니다. 생성 된 Eclipse PlugIn에서이 입력은 올바르지 않은 것으로 레이블이 지정됩니다.

+1

Results eresource에 오류가 있습니까? validationtesthelper도 살펴볼 수 있습니다. –

+0

그랬습니다! 감사. 생성 된'Hello World' 테스트 케이스에'assertEquals (0, result.eResource.errors.size)'와 같은 것을 추가 할 수 있습니다. –

답변

0

당신은 eResource을 위해 result을 물어보고 그 오류는 Resource를 물어보십시오. ValidationTestHelper도 살펴볼 수 있습니다.