4

プライでは、どのルールが使用されたかをどのように区別できますか?

例:-'''p:ab | c | d'''したがって、ルールごとに異なるコードを作成する必要があるとします。それでは、そうするためのエレガントな方法はありますか。マニュアルに記載されている1つの方法は、ルールとトークンの組み合わせを使用することですが、私が見つけたものは常にクリックするとは限りません。

4

2 に答える 2

0

異なるコードごとに 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]
于 2012-03-23T21:25:05.517 に答える