Я пытаюсь понять поведение Qi's Difference Parsers.boost :: spirit :: qi разница поведение парсера
С чем-то вроде этого:
ruleA =
ruleAa
| ruleAb
| ruleAc
;
ruleB =
ruleA - ruleAc
;
Я воображал, что анализатор будет соответствовать ruleB тогда и только тогда вход соответствует ruleAa или ruleAb. Другими словами, ruleB вычитал бы одну альтернативу (ruleAc) из правилаA. Это неверно?
В моем коде я делаю что-то вроде выше, и он компилируется, но, похоже, не ведет себя так, как я ожидал. Мой фактический прецедент связан с другими факторами, которые трудно раскрутить здесь.
В сущности, я пытаюсь это сделать: У меня есть правило типа ruleA, которое содержит набор альтернатив. Это правило используется в нескольких разных местах моей грамматики. Но в одном конкретном использовании мне нужно избегать вызова только одной из альтернатив. Кажется, что разностный парсер предназначен для этой цели, но, может быть, я недопонимаю?
Заранее благодарен!
Большое спасибо за этот очень четкий ответ. Ваша заметка о том, что «Разностный анализатор вообще не имеет/модифицирует/левый парсер.(Он просто отбрасывает некоторые совпадения, не зависящие от левой стороны). «Это именно то, о чем я думал неправильно. – pt3dNyc