?
We have simple grammar
s : ID
| ID '=' expr
| 'unsigned'* 'int' ID
| 'unsigned'* ID ID
;
is zero or more occurences of 'unsigned'. How work with it?
I see two ways:
First, change grammar to:
s : ID
| ID '=' expr
| occur_unsigned 'int' ID
| occur_unsigned ID ID
;
occur_unsigned: :eps
occur_unsigned 'unsigned'
;
or
occur_unsigned: :eps
'unsigned' occur_unsigned
;
or create ATN with edges back (image above):