新しい文法を書こうとしましたが、Var(文法の一種)をあらかじめ定義された定数のセットにできるJavaのEnumのようなものを書きました。Enumの定数へのXtextの相互参照
このVarに含まれる定数を認識したいのですが、私はそれを行う方法を見つけられませんでした(ただし、「XtextとXtendでドメイン固有の言語を実装する」という本を読んでみます)。
Domainmodel:
(elements+=AbstractElement)*;
PackageDeclaration:
'package' name=QualifiedName '{'
(elements+=AbstractElement)*
'}';
AbstractElement:
PackageDeclaration | Type | Import;
QualifiedName:
ID ('.' ID)*;
Import:
'import' importedNamespace=QualifiedNameWithWildcard;
QualifiedNameWithWildcard:
QualifiedName '.*'?;
Type:
DataType | Entity | Var;
DataType:
'datatype' name=ID;
Entity:
'entity' name=ID ('extends' superType=[Entity|QualifiedName])? '{'
(features+=Feature)*
'}';
Feature:
(many?='many')? name=ID ':' type=[VarDecl |QualifiedName];
Var:
kind='Var' var=VarDecl;
VarDecl:
type=VarType name=SimpleVarID;
SimpleVarID:
ID ('[' INT ']')*;
VarType:
name='boolean'
| '{' const+=TypeConstant (',' const+=TypeConstant)* '}';
TypeConstant:
ID | INT | 'FALSE' | 'TRUE';
ので、例は次のとおりです:
Var {LEFT,RIGHT} move
entity C {
content: move
side: LEFT //ERROR: couldn't resolve reference to VarDecl 'LEFT'
}
私はLEFことを知っているので、私はドメインモデルの文法に少し例を作っ
)インターネット上で多くのことを検索TはVarDeclではなく、IDですが、どうやって違うのか分かりません。 LEFTが移動するもののように認識されるように、私は何をする必要がありますか?
コメント:私の実際の文法では、実際には移動== LEFT(ブール演算子)を試みますが、LEFTは移動の定数として認識されません(同じエラーが表示されます)。
ありがとうございます!
ありがとうございました! – RoG