所以我正在做这个项目,你订购一个叉车用自然语言做某些事情,我正在使用Python Lex Yacc。我想知道是否有办法区分相同长度的置换语法?文档仅声明您可以使用len(p)执行此操作,但只有在长度不同时才有用。示例代码:
def p_moveitemfromto(p):
'''moveitemfromto : MOVEITEM fulltype item rack rack side
| MOVEITEM rack rack side fulltype item
| rack MOVEITEM fulltype item rack side
| rack MOVEITEM rack side fulltype item'''
我需要输出始终处于统一的顺序(因此我坚持第一个是默认值),我现在正在做的只是在较低级别添加不同的字母,以便我可以正确的方式订购它然后删除字母,但似乎不是要走的路。我也可以将它拆分为不同的defs,但这似乎也不是一种方法。或者也许我已经把整个概念弄错了,因为这是我的第一次。
答案 0 :(得分:0)
如果不同的作品(即使是同一个非终端)有不同的动作,那么在不同的功能中实现它们。这是使用Ply的正常且完全合理的方式。结合不同的生产行动,以便你必须弄清楚哪个生产减少了是虚假经济。