как проверить, что токен ANTLR используется только один раз или меньше в парсере - PullRequest
1 голос
/ 15 июня 2010

В Antlr, если у меня есть правило, например:

someRule : TOKENA TOKENB;

будет принято: "tokena tokenb"

если я бы хотел, чтобы TOKENA был необязательным, я могу сказать,

someRule : TOKENA* TOKENB;

тогда я могу иметь: "tokena tokenb" или "tokenb" или "tokena tokena tokenb"

но это также означает, что это может повторяться более одного раза. Могу ли я сказать, что этот токен может быть там 1 или меньше раз, но не более одного? так что он принял бы:

"tokena tokenb" или "tokenb", НО НЕ "tokena tokena tokenb"?

Большое спасибо

1 Ответ

6 голосов
/ 15 июня 2010

... Могу ли я сказать, что этот токен может присутствовать 1 или менее раз, но не более одного? ...

Вот как:

someRule 
  :  TOKENA? TOKENB
  ;

или

someRule 
  :  TOKENA TOKENB
  |  TOKENB
  ;
...