in reply to Re^2: Matching terminals with Parse::RecDescent
in thread Matching terminals with Parse::RecDescent

or at least some understanding of where my expectations are wrong.

Your grammar expects to match

  1. 0 or more whitespace characters (see <skip>),
  2. followed by "foo",
  3. followed by the end of the string to parse,
  4. 0 or more whitespace characters,
  5. followed by "bar",
  6. followed by the end of the string to parse.