Парсинг токенов с помощью 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'\='
Как я могу это исправить?
Ваша помощь будет принята с благодарностью!