var sq = syntax (e1=token ["a"] e2=token ["b"] {Seq (e1, e2)}), al = syntax (e=(token ["a"] | token ["b"]) {Alt (e)}), rp = syntax (e=token ["a"]* {Rep (e)}); printf ("%s\n", parseString (syntax (sq -eof), "ab").string); printf ("%s\n", parseString (syntax (al -eof), "a").string); printf ("%s\n", parseString (syntax (al -eof), "b").string); printf ("%s\n", parseString (syntax (rp -eof), "aaa").string)