2016-11-27 61 views
0

所以我正在做这个项目,你要命令叉车用自然语言做某些事情,而我正在使用Python Lex Yacc。我想知道是否有办法区分长度相同的排列后的语法?文档只说明你可以用len(p)来做,但只有在长度不同时才有帮助。示例代码:PLY区分语法

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''' 

我需要的输出始终处于一个统一的顺序(让我坚持到第一个被默认的),我现在正在做的上下级只是添加不同的字母所以后来我可以为了正确的方式,然后删除字母,但它似乎不是要走的路。我也可以将它分成不同的图像,但是这看起来并不像要走的路。或者,也许我已经把整个概念弄错了,因为这是我第一次。

回答

0

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