2017-10-24 13 views
0

JSON 또는 마크 업 언어와 비슷한 Xtext에서 간단한 DSL 언어를 개발합니다. 사용자 정의 언어 프로젝트를 편집하는 동안 입력 된 정수 값 범위의 유효성을 자동으로 확인하고 싶습니다. 예를 들어, "timeout"속성이 있으며 100에서 1000까지 제한을주고 싶습니다. 터미널 규칙을 알고 있지만 0부터 9까지의 단일 숫자 문자를 검증 할 수 있습니다. 실제로는 다음과 같이 작성할 수 있습니다.Xtext - 값을 특정 범위로 제한하는 방법?

terminal RANGE : 
    ('0'..'9')('0'..'9')('0'..'9') | ('0'..'9')('0'..'9')('0'..'9')('0'..'9') 

특정 숫자 자릿수를 표현할 수 있지만 이는 영리한 해결책이라고 생각하지 않습니다.

이러한 범위에 대한 규칙을 만들 가능성이 있습니까?

답변

0

RANGE 터미널 규칙에 대한 사용자 정의 IValueConverter은 guice의 바인딩 IValueConverterService을 통해 등록 할 수 있습니다.

또는 당신은 속성으로 RANGE을 사용하는 모든 장소에서 의미 검증을 구현합니다.

+0

ValueConverter가 재미있어합니다. 그러한 바인딩을 생성 할 템플릿이 있습니까? – Morpheus

+0

tmf xtext 포럼에는 많은 내용이 있어야하며 기본 impl은 예제로도 처리 할 수 ​​있습니다. –