either

Build an "either" construct, with different branches the parsing process can take.

The branches are checked in the order they are declared.

Typical use may look like:

MyNode {
    expect(...)
    either {
        // Expectations for branch one...
        expect(tokenX1)
        expect(OtherNode)
    } or {
        // Expectations for branch two...
        expect(SomethingElse)
        expect(tokenY2) storeIn "hello"
    } or {
        // Expectations for branch three
        expect(EvenMoreDifferent)
    }
    expect(...)
}

Anything stored within a branch will be available for the constructed node, provided that the branch was executed.

Note: The lambda receives a builder for a single branch, but this function returns the builder for the entire either construct, meaning that:

  • You cannot add branches from a branch

  • The recommended way to add branches is to call or, like in the example above.