Это построение на Создайте простой синтаксический анализатор, способный анализировать различные форматы даты с помощью PyParse
У меня есть синтаксический анализатор, который должен сгруппировать одного или нескольких пользователей в список. Итак, a.parser('show abc, xyz commits from "Jan 10,2015" to "27/1/2015"')
должен сгруппировать два имени пользователя в список [abc,xyz]
Для пользователей у меня есть:
keywords = ["select", "show", "team", "from", "to", "commits", "and", "or"]
[select, show, team, _from, _to, commits, _and, _or] = [ CaselessKeyword(word) for word in keywords ]
user = Word(alphas+"."+alphas)
user2 = Combine(user + "'s")
users = OneOrMore((user|user2))
А грамматика такая
bnf = (show|select)+Group(users).setResultsName("users")+Optional(team)+(commits).setResultsName("stats")\
+Optional(_from + quotedString.setParseAction(removeQuotes)('from') +\
_to + quotedString.setParseAction(removeQuotes)('to'))
Это ошибочно. Может ли кто-нибудь направить меня в правильном направлении. Кроме того, есть ли в pyparse способ выборочно решить, к какой группе должно относиться слово. Я имею в виду, что автономный «xyz» должен идти в моем списке пользователей. Но «команда xyz» должна идти в списке команд. Если указана необязательная команда ключевых слов, pyparse должен сгруппировать ее по-другому.
Я не смог найти то, что я ищу в Интернете. Или, может быть, я не правильно сформулировал свой вопрос в Google?