Токены не имеют под токенов в ANTLR, поэтому нет никакого способа делать то, что вы хотите с токеном. Я также должен отметить, что если NUMBER_LITERAL
, INT_LITERAL
и FLOAT_LITERAL
являются правилами лексера (в отличие от INT_LITERAL
и FLOAT_LITERAL
являются фрагментами), то либо NUMBER_LITERAL
никогда не может совпадать, либо INT_LITERAL
и FLOAT_LITERAL
никогда не может совпадать, в зависимости от порядка, в котором они определены.
То, что я хотел бы сделать, это иметь INT_LITERAL
и FLOAT_LITERAL
в качестве токенов, а затем сделать NUMBER_LITERAL
правилом синтаксического анализа. Таким образом, вы можете проверить, является ли литерал float или int, либо используя помеченные альтернативы, либо просто проверяя, какой из INT_LITERAL()
или FLOAT_LITERAL()
не возвращает null
.