Usinig parsy парсер комбинаторы для разбора выражений - PullRequest
0 голосов
/ 28 апреля 2020

Я использую parsy для синтаксического анализа грамматики, которая определена как (псевдокод):

prefix: alphanumeric
at_symbol: '@'
suffix: alphanumeric
op_or: 'OR'
op_and: 'AND'
atom: prefix + at_symbol + suffix | '(' + atom + (op_or | op_and) + atom ')'

, поэтому допустимая строка, которую я должен проанализировать, будет (john@tidal OR john@qobuz) AND jack@spotify

Я довольно новичок как в Python, так и в парсерах, и не вижу ни одного примера.

Вот что я придумал:

operator = string('OR') | string('AND')
prefix = regex('[a-zA-Z][a-zA-Z0-9_]*')
suffix = regex('[a-zA-Z][a-zA-Z0-9_]*')
token = prefix + string('@') + suffix
atom = token | token + operator + token # this doesn't really work

Любой указатель было бы здорово.

(примечание: я не могу использовать Pyparsing.)

...