Как запретить пробелы между литералами в pyparsing? - PullRequest
6 голосов
/ 24 апреля 2011
grammar = Literal("from") + Literal(":") + Word(alphas)

Грамматика должна отклонять from : mary и принимать только from:mary, т. Е. Без чередования пробелов.Как я могу применить это в pyparsing?Спасибо

1 Ответ

4 голосов
/ 24 апреля 2011

Можете ли вы использовать Combine?

grammar = Combine(Literal("from") + Literal(":") + Word(alphas))

Итак:

РЕДАКТИРОВАТЬ в ответ на ваш комментарий.

Действительно?

>>> grammar = pyparsing.Combine(Literal("from") + Literal(":") + Word(pyparsing.alphas))
>>> grammar.parseString('from : mary')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/pymodules/python2.6/pyparsing.py", line 1076, in parseString
    raise exc
pyparsing.ParseException: Expected ":" (at char 4), (line:1, col:5)
>>> grammar.parseString('from:mary')
(['from:mary'], {})
...