2016-11-27 4 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''' 

Мне нужен выход, чтобы всегда быть в едином порядке (так я придерживаюсь 1 будучи по умолчанию), что я делаю сейчас просто добавляя различные буквы на нижних уровнях, то я могу закажите его правильным способом, а затем удалите буквы, но похоже, что это не путь. Я мог бы также разделить его на разные defs, но это снова не похоже на путь. Или, может быть, у меня есть вся концепция неправильно, так как это мой первый раз.

ответ

0

Если разные производства (даже для одного и того же нетерминального) имеют разные действия, то реализуют их в разных функциях. Это обычный и вполне разумный способ использования Ply. Объединяя различные производственные действия, чтобы вы могли определить, какая продукция была уменьшена, это ложная экономика.