0

変数タイプの異なるグループを持つ言語のエディターを構築したいのですが、生成されたコンテンツ アシスタントに問題があります。

Type:
   'TYPE' ':' name=ID '(' type=[ANY] ')' ';'
;
ANY:
   ANY_NUM | Type
;
ANY_NUM:
   ANY_REAL | ANY_INT ...
;
ANY_REAL:
   'real' | 'float'
;
ANY_INT:
   'int' | 'sint' | 'lint'
;

アイデアは、特定の型がどこでも許可されていないということです。たとえば、場合によっては type=(ANY_REAL) を使用したいと考えています。生成されたコンテンツ アシスタントには何も表示されないので、これが変数の型とグループを指定する正しい方法かどうかを知りたいです。

4

1 に答える 1

0

わかった。答えは非常に簡単です。各変数型は列挙型 (EnumRule) 内で定義する必要があり、構造自体は単純な型参照 (ParserRule) です。

TR_Any:
  TR_AnyDerived | TR_AnyElementary
;
TR_AnyDerived:
  ...
;
TR_AnyElementary:
  TR_AnyReal | TR_AnyInt |...
;
TR_AnyReal:
  type = E_AnyReal
;
TR_AnyInt:
  type = E_AnyInt
;
enum E_AnyReal:
  FLOAT = "float" |
  DOUBLE = "double" |
  ...
;
enum E_AnyInt:
  INT = "int"
;

タイプは、xtext ドキュメントで説明されているように参照できます。

MyRule:
  anyvar = [TR_Any]
  intvar = [TR_Int]
;
于 2013-03-14T20:36:02.903 に答える