Я пишу программу, которая распознает, является ли она конкретной инструкцией или является идентификатором для инструкции, которую нужно обработать, так что эта программа печатает:
LexToken (ID, 'Sets',1,0)
LexToken (SEMICOLON, ';', 1,4)
Но проблема в том, что Sets - это CMDSETS, а не ID, так как я могу сравнить, если это инструкция илиобычный ID?
код:
import ply.lex as lex
import ply.yacc as yacc
tokens = [
'CMDSETS',
'CMDUNION',
'ID',
'COLON',
'SEMICOLON',
]
t_CMDSETS=r'Sets'
t_CMDUNION=r'Union'
t_COLON= r','
t_SEMICOLON=r';'
def t_ID(t):
r'[a-zA-Z_][a-zA-Z0-9_]*'
t.type='ID'
return t
t_ignore=r' '
def t_error(t):
print("This thing failed")
t.lexer.skip(1)
lexer=lex.lex()
lexer.input("Sets;")
while True:
tok=lexer.token()
if not tok:
break
print(tok)