2

Antlrで、たとえば次のようなルールがある場合:

someRule : TOKENA TOKENB;

それは受け入れるでしょう:「tokenatokenb」

TOKENAをオプションにしたい場合は、

someRule : TOKENA* TOKENB;

次に、「tokenatokenb」または「tokenb」または「tokenatokenatokenb」を使用できます。

しかし、これはまた、それを複数回繰り返すことができることを意味します。とにかく、このトークンは1回以下で、1回以下であると言えますか?だからそれは受け入れるでしょう:

「tokenatokenb」または「tokenb」ですが、「tokenatokenatokenb」ではありませんか?

どうもありがとう

4

1 に答える 1

6

...とにかく、このトークンは1回以下で、1回以下であると言えますか?..。

方法は次のとおりです。

someRule 
  :  TOKENA? TOKENB
  ;

また:

someRule 
  :  TOKENA TOKENB
  |  TOKENB
  ;
于 2010-06-15T18:22:35.607 に答える