プライでは、どのルールが使用されたかをどのように区別できますか?
例:-'''p:ab | c | d'''したがって、ルールごとに異なるコードを作成する必要があるとします。それでは、そうするためのエレガントな方法はありますか。マニュアルに記載されている1つの方法は、ルールとトークンの組み合わせを使用することですが、私が見つけたものは常にクリックするとは限りません。
異なるコードごとに 1 つのルールを使用して、式を複数のルールに分割するだけです。
例 ( http://www.dabeaz.com/ply/ply.html#ply_nn25から)
def p_expression(p):
'''expression : expression PLUS term
| expression MINUS term'''
if p[2] == '+':
p[0] = p[1] + p[3]
elif p[2] == '-':
p[0] = p[1] - p[3]
のように書くこともできます
def p_expression_plus(p):
'expression : expression PLUS term'
p[0] = p[1] + p[3]
def p_expression_minus(t):
'expression : expression MINUS term'
p[0] = p[1] - p[3]