У меня есть грамматика вроде:
assignment: NAME ':=' (value | operation | boolean_value); NAME: [a-zA-Z]+;
И я хочу запрограммировать true := 4, но это не так.
true := 4
Я хочу в грамматике сказать, что слово true нельзя применять как NAME.
true
NAME
Затем определите его как ключевое слово:
assignment: NAME ':=' (value | operation | boolean_value); TRUE : 'true'; NAME : [a-zA-Z]+;
или выполните семантику c проверки слушателя или посетителя .