Simon Kenyon Shepard
Simon Kenyon Shepard

Reputation: 869

how to check an ANTLR token is only used once or less in the parser

In Antlr, if I have a rule for example:

someRule : TOKENA TOKENB;

it would accept : "tokena tokenb"

if I would like TOKENA to be optional, I can say,

someRule : TOKENA* TOKENB;

then I can have : "tokena tokenb" or "tokenb" or "tokena tokena tokenb"

but this also means it can be repeated more that once. Is there anyway I can say this token can be there 1 or less times but not more than one? so it would accept:

"tokena tokenb" or "tokenb" BUT NOT "tokena tokena tokenb"?

Many thanks

Upvotes: 2

Views: 490

Answers (1)

Bart Kiers
Bart Kiers

Reputation: 170207

... Is there anyway I can say this token can be there 1 or less times but not more than one? ...

Here's how:

someRule 
  :  TOKENA? TOKENB
  ;

or:

someRule 
  :  TOKENA TOKENB
  |  TOKENB
  ;

Upvotes: 6

Related Questions