0

次のトークン定義を持つ 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 を可能な限り最大の一致にする方法はありますか?

4

1 に答える 1