Хорошо, я кладу вместе парсер для разбора выражений, какПочему `OneOrMore` терпит неудачу с более чем одним выражением в pyparsing?
abc def ghi LONG|SHORT 12345
----^------ ----^----- --^--
A: alphas B: choice C: num
Анализатор написан в pyparsing
выглядит следующим образом:
a = pp.OneOrMore(pp.Word(pp.alphas)).setName("PRT_A")
b = pp.Or(['LONG','SHORT']).setName("PRT_B")
c = pp.Word(pp.nums).setName("PRT_C")
expr = a('A') + b('B') + c('C')
Когда я кормлю «что-то сказал SHORT 13» в него:
res = expr.parseString("something said SHORT 13")
Я получаю ошибку:
ParseException:
Expected {"LONG"^"SHORT"} (at char 21), (line:1, col:22)
"something said SHORT >!<13"
Почему? Я думал, что OneOrMore
должен сложить все слова до тех пор, LONG | SHORT выбор приходит ...
@ user2357112 Я упростил вопрос только содержать предпросмотр проблема - делает вопрос намного яснее и ценнее других, думаю. Не могли бы вы соответственно усовершенствовать (теперь принятый) ответ (т. Е. Вывести материал о «Комбинате»)? – halloleo
Ответ обновлен, но вы также должны обновить сообщение об ошибке в вопросе. Версия без 'Combine' должна вызывать ошибку в более позднем местоположении. – user2357112