Parsing Token mit PLY

Ich habe eine Weile versucht, einen bestimmten Text mit PLY zu analysieren, und konnte es nicht herausfinden. Ich habe diese Token definiert:

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

Und ich möchte die Wörter, die ich finde, in diese Token einteilen. Zum Beispiel, wenn der Scanner gegeben ist:

var = 5

Es sollte folgendes ausgeben:

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

Dies funktioniert gut. Das Problem ist, wenn das Programm den folgenden Text erhält:

9var = 5

Die Ausgabe dafür wäre:

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

Dies ist, wo es schief geht. 9var sollte als ID verwendet werden, und laut ID-Regex ist das kein gültiger Name für eine ID. Dies sind meine regulären Ausdrücke:

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'\='

Wie kann ich das beheben?

Ihre Hilfe wäre dankbar!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage