Boost logo

Boost Users :

Subject: [Boost-users] Spirit: how to force backtracking
From: Stian Zeljko Vrba (vrba_at_[hidden])
Date: 2017-11-03 10:20:06


I have the following grammar rule:

value = (int_ % ',') | *ascii::print;

The intention is to parse either a comma-separated list of integers or a string. The rule as such fails in cases like "123ABC", which should be parsed as string.
>From the description of the | operator, I would expect the parser to backtrack and try the other alternative when it sees that the first alternative does not match the input. However, I get a parse error instead (this rule is a part of a larger grammar), I guess because the first alternative matches the single integer but the rest of the grammar cannot be matched.

How to rewrite the grammar to resolve this ambiguity, or force spirit to backtrack if the first alternative of 'value' cannot be matched?



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net