surroundedBy method

Parser<T> surroundedBy(
  1. Parser left,
  2. [Parser right]
)

Expects to see the pattern, surrounded by the others.

If no right is provided, it expects to see the same pattern on both sides. Use this parse things like parenthesized expressions, arrays, etc.

Implementation

Parser<T> surroundedBy(Parser left, [Parser right]) {
  return chain([
    left,
    this,
    right ?? left,
  ]).index(1).castDynamic().cast<T>();
}