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!