次のトークン定義を持つ PLY で記述されたパーサーがあります。
def t_COMMAND(t):
r'create|show'
return t
def t_SCOPE(t):
r'user|domain'
return t
def t_STRING(t):
r'[a-zA-Z_@\*\.]*'
return t
次の文字列を解析しようとしています
show user where created_on = foo
これが私の文法です
S:COMMAND SCOPE FILTER;
FILTER:WHERE EXP |;
EXP:STRING OP STRING
...
トークンで構文エラーが発生しcreated_on
ます。おそらく、COMMAND
ではなくとして一致するためです。STRING
PLY を可能な限り最大の一致にする方法はありますか?