25 lines
630 B
Go
25 lines
630 B
Go
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 >
|
|
}
|