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')