Парсинг токенов с помощью PLY

Я пытался разобрать какой-то текст с PLY некоторое время, и я не смог понять это. Я определил эти токены:

tokens = ['ID', 'INT', 'ASSIGNMENT'] 

И я хочу классифицировать слова, которые я нахожу в эти жетоны. Например, если дан сканер:

var = 5

Следует напечатать это:

ID : 'var'
ASSIGNMENT : '='
INT : 5

Это работает просто отлично. Проблема в том, что программе дается следующий текст:

9var = 5

Выход для этого будет:

INT : 9
ID : 'var'
ASSIGNMENT : '='
INT : 5

Вот где это идет не так. В качестве идентификатора должно быть указано 9var, и согласно регулярному выражению идентификатора это недопустимое имя для идентификатора. Это мои регулярные выражения:

def t_ID(t):
    r'[a-zA-Z_][a-zA-Z_0-9]*' 
    return t

def t_INT(t):
    r'\d+'
    t.value = int(t.value)
    return t

t_ASSIGNMENT = r'\='

Как я могу это исправить?

Ваша помощь будет принята с благодарностью!

Ответы на вопрос(1)

Ваш ответ на вопрос