PLY区分语法

时间:2016-11-27 19:34:40

标签: python nlp yacc lex ply

所以我正在做这个项目,你订购一个叉车用自然语言做某些事情,我正在使用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,但这似乎也不是一种方法。或者也许我已经把整个概念弄错了,因为这是我的第一次。

1 个答案:

答案 0 :(得分:0)

如果不同的作品(即使是同一个非终端)有不同的动作,那么在不同的功能中实现它们。这是使用Ply的正常且完全合理的方式。结合不同的生产行动,以便你必须弄清楚哪个生产减少了是虚假经济。