struct

Sthx::FirstOf

Inherits Sthx::RuleCollection < Sthx::Rule < Struct < Value < Object

Branch. The first rule to succeed wins. This is obviously order dependent. The order is exactly that with which this rule was initialized. So e.g. given "x" | "xx" and source string "xx" the rule "x" will always match and "xx" will be essentially unreachable.

The faster option between FirstOf and LongestOf.

Instance methods

advance(cursor : Cursor, data : TreeData, *, collect : Collect) : Advance::Result

Performs cursor motion and returns the result, one of Advance::Result: success Advance::Ok or failure Advance::Err.

data is the TreeData object built so far.

To implementors of this method: in case of failure to commit, cursor must be rolled back to its state before calling this method. In other words, advance is implemented in a "transaction" kind of way. Intermediate results and changes must never be available to the caller. This method either succeeds and mutates the cursor; or it fails and leaves the cursor intact.

Source