Xtext 문법에서 의미 론적 조건자를 지정할 수 없습니다. 또한 Xtext에 임의의 액션 (읽기 : 대상 언어 코드 블록)을 포함 할 수 없습니다. 유일하게 지원되는 대상 플랫폼은 Java입니다.
좋은 소식은 Xtext가 이러한 제약 조건을 유도함으로써 큰 이익을 얻는다는 것입니다. 문법에 맞는 임의의 모델/구문 그래프를 직렬화 할 수있는 unparser를 얻을 수 있습니다. 구문 그래프에 대해 말하면, Xtext를 사용하면 IDE에서 편집 할 수있는 언어로 AST를 입력 할 수 있습니다.
Xtext의 표현에서 고유 한 문법 기능은 순서가 지정되지 않은 그룹입니다. 즉, 문법의 특정 요소가 임의 순서로 발생할 수도 있지만 각 요소는 한 번만 발생할 수 있다는 것을 직접 표현할 수 있습니다. 당신은 자바 수정에 대해 생각한다면, 이것은 매우 편리 할 수 있습니다
visibility=('public'|'private') // this is a mandatory assignment
& abstractOrFinal=('abstract'|'final')? // this is optional
& static?='static'? // this will become a boolean value in your ast
문법 언어에 대한 자세한 내용은
Xtext docs에서보세요.
중요한 점은 Xtext는 내부적으로 ANTLR 및 afaik를 사용합니다. 더 잘 알 것입니다. Xtext는 조만간 연산자 우선 순위 등과 같은 ANTLR 기능을 더 많이 지원할 것입니다. :) –
Xtext는 Antlr의 블랙 박스 대상 언어 리터럴과 혼동하여 연산자 우선 순위를 구현하십시오. 특히 오류 복구가 중요한 대화 형 환경에서 우리를 위해 매우 잘 작동합니다. 전제 조건 구현을 위해 Antlr의 새로운 계획을 마이그레이션 할 것입니다. –