Нельзя указывать семантические предикаты в грамматике Xtext.Кроме того, невозможно включить произвольные действия (читай: блоки кода целевого языка) с Xtext.Единственная поддерживаемая целевая платформа - Java.
Хорошая новость заключается в том, что Xtext получает большие преимущества, вызывая эти ограничения, например, вы получите unparser, который позволяет сериализовать произвольные модели / синтаксические графы, соответствующие вашей грамматике.Говоря о синтаксических графах, с Xtext вы получите типизированный AST для вашего языка, который вы можете редактировать в своей IDE.
Грамматическая особенность, уникальная в представлении Xtext, - это неупорядоченные группы.То есть вы можете прямо выразить, что определенные элементы в вашей грамматике могут встречаться в произвольном порядке, но каждый из них только один раз.Если вы подумаете о java-модификаторах, это может быть очень удобно:
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 для более подробной информации о языке грамматики.