summaryrefslogtreecommitdiff
path: root/examples_test.go
blob: a1de129456bcdaec8b74c6b1f416c171f618a56f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package goparsify_test

import (
	"fmt"

	. "github.com/vektah/goparsify"
)

func ExampleCuts() {
	// without a cut if the close tag is left out the parser will backtrack and ignore the rest of the string
	alpha := Chars("a-z")
	nocut := Many(Any(Seq("<", alpha, ">"), alpha))
	_, err := Run(nocut, "asdf <foo")
	fmt.Println(err.Error())

	// with a cut, once we see the open tag we know there must be a close tag that matches it, so the parser will error
	cut := Many(Any(Seq("<", Cut, alpha, ">"), alpha))
	_, err = Run(cut, "asdf <foo")
	fmt.Println(err.Error())

	// Output:
	// left unparsed: <foo
	// offset 9: expected >
}