1

次の簡略化された文法を検討してください。

ID  :   ('a'..'z') ('a'..'z')*;

TYPE    :   'int' '[' ']' |
        'boolean' |
        'int';

ここで、ブール値を入力として記述すると、 IDまたはTYPEとして解析できます。TYPEとして解析したいのですが、どうすればよいですか?

4

1 に答える 1

1

TYPE 前に 置くID

TYPE : 'int' '[' ']' 
     | 'boolean' 
     | 'int'
     ;

ID   : ('a'..'z') ('a'..'z')*
     ;

ANTLRのレクサールールは次のように機能します。

  1. 可能な限り一致させる
  2. ルール#1の後、2つ以上のルールが同じ量の文字に一致する場合は、文法で最初に定義されたルールを選択します

これらのルールにより、は"boolean"としてトークン化されますが、 1としてトークン化されますTYPE"booleans"ID


1 "booleans"は2つのトークンとしてトークン化されませんTYPE:("boolean")とID"s"))

于 2012-11-07T16:34:59.157 に答える