有没有办法使用以下语法定义多行生产? PLY 期望 : 在 ID 之前暗示每条生产线一个产品。
def p_envvar(p):
'''
envvar : EV \
ID \
COLON \
INT_VAL \
BOX_OPEN \
INT_VAL \
SEP \
INT_VAL \
BOX_CLOSE \
STRING_VAL \
INT_VAL \
INT_VAL \
DUMMY_NODE_VECTOR \
comma_identifier_list \
SEMICOLON
'''
最佳答案
您应该使用“竖线”来分隔备用规则:
def p_envvar(p):
'''
envvar : EV
| ID
| COLON
| INT_VAL
| BOX_OPEN
| INT_VAL
| SEP
| INT_VAL
| BOX_CLOSE
| STRING_VAL
| INT_VAL
| DUMMY_NODE_VECTOR
| comma_identifier_list
| SEMICOLON
'''
但是使用这么多替代项提示我您可能需要简化,(您可以声明简化为相同状态的不同函数:
def p_envar_ev():
"""envvar : EV"""
def p_envvar_id():
"""envvar : ID"""
...等等。这比使用大 if block 来处理每种可能的情况更容易阅读。
关于python - PLY yacc 指定多线生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850048/