有没有办法对 ply lexer 规则进行特殊处理?
t_IDENT = r'[a-zA-Z_][0-9a-zA-Z_]*'
t_OPERATOR = r'[<>=/*+-]+'
t_DEFINE = r'='
t_PRODUCES = r'=>'
我想将运算符定义为列出的字符的任意组合,但有自己的特殊情况。例如:=
=>
a + b
# IDENT('a') OPERATOR('+') IDENT('b')
a ++=--> b
# IDENT('a') OPERATOR('++=-->') IDENT('b')
a == b
# IDENT('a') OPERATOR('==-->') IDENT('b')
a => b
# IDENT('a') PRODUCES('=>') IDENT('b')
a = b
# IDENT('a') DEFINE('=') IDENT('b')
a >= b
# IDENT('a') OPERATOR('>=') IDENT('b')
a <=> b
# IDENT('a') OPERATOR('<=>') IDENT('b')