2011-05-05 8 views
16

DSL뿐만 아니라 IDE 편집을위한 Xtext 툴을 발견했습니다. 나는 웹에서 몇 가지 검색을 수행했으며 ANTLR의 모든 기능을 제공하지는 않는다는 사람들을 발견했습니다. ANTLR을 파서 생성기로 사용하고 있습니다.XText에서 제공하지 않는 ANTLR의 기능은 무엇입니까?

필자는 ANTLR의 어떤 기능을 mylanguage 용으로 작성해야 할 지 모르지만 ANTLR은 꽤 오랜 시간 동안 Xtext보다 많은 기능을 지원할 것입니다.

누구나 Xtext 문법에서 지정할 수없는 몇 가지 예를 들려 줄 수 있습니까?

답변

18

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에서보세요.

+0

중요한 점은 Xtext는 내부적으로 ANTLR 및 afaik를 사용합니다. 더 잘 알 것입니다. Xtext는 조만간 연산자 우선 순위 등과 같은 ANTLR 기능을 더 많이 지원할 것입니다. :) –

+0

Xtext는 Antlr의 블랙 박스 대상 언어 리터럴과 혼동하여 연산자 우선 순위를 구현하십시오. 특히 오류 복구가 중요한 대화 형 환경에서 우리를 위해 매우 잘 작동합니다. 전제 조건 구현을 위해 Antlr의 새로운 계획을 마이그레이션 할 것입니다. –