我正在使用 Python 和 PLY 来解析类似 LISP 的 S-Expressions,并且在解析函数调用时可以有零个或多个参数。我怎样才能把它放到 yacc 代码中。到目前为止,这是我的功能:
def p_EXPR(p):
'''EXPR : NUMBER
| STRING
| LPAREN funcname [EXPR] RPAREN'''
if len(p) == 2:
p[0] = p[1]
else:
p[0] = ("Call", p[2], p[3:-1])
我需要用允许零个或多个 EXPR 的东西替换“[EXPR]”。我怎样才能做到这一点?