go-parsekit/examples_test.go

95 lines
1.9 KiB
Go

package parsekit_test
import (
"fmt"
"git.makaay.nl/mauricem/go-parsekit"
)
func ExampleError() {
err := &parsekit.Error{
Message: "it broke down",
Line: 10,
Column: 42,
}
fmt.Println(err.Error())
fmt.Printf("%s\n", err)
fmt.Println(err.Full())
// Output:
// it broke down
// it broke down
// it broke down at line 10, column 42
}
func ExampleError_Error() {
err := &parsekit.Error{
Message: "it broke down",
Line: 10,
Column: 42,
}
fmt.Println(err.Error())
fmt.Printf("%s\n", err)
// Output:
// it broke down
// it broke down
}
func ExampleError_Full() {
err := &parsekit.Error{
Message: "it broke down",
Line: 10,
Column: 42,
}
fmt.Println(err.Full())
// Output:
// it broke down at line 10, column 42
}
func ExampleMatchAnyRune_usingAcceptedRunes() {
// Easy access to the parsekit definitions.
a := parsekit.A
matches := []string{}
parser := parsekit.NewParser(func(p *parsekit.ParseAPI) {
for p.On(a.AnyRune).Accept() {
matches = append(matches, p.Result().String())
}
p.ExpectEndOfFile()
})
err := parser.Execute("¡Any will dö!")
fmt.Printf("Matches = %q, Error = %s\n", matches, err)
// Output:
// Matches = ["¡" "A" "n" "y" " " "w" "i" "l" "l" " " "d" "ö" "!"], Error = <nil>
}
func ExampleMatchAnyRune_usingTokens() {
// Easy access to the parsekit definitions.
c, a, tok := parsekit.C, parsekit.A, parsekit.T
var tokens []*parsekit.Token
var accepted string
parser := parsekit.NewParser(func(p *parsekit.ParseAPI) {
if p.On(c.OneOrMore(tok.Rune("a rune", a.AnyRune))).Accept() {
tokens = p.Result().Tokens()
accepted = p.Result().String()
}
p.ExpectEndOfFile()
})
parser.Execute("¡Any will dö!")
fmt.Printf("Runes accepted: %q\n", accepted)
fmt.Printf("Token values: ")
for _, t := range tokens {
fmt.Printf("%c ", t.Value)
}
// Output:
// Runes accepted: "¡Any will dö!"
// Token values: ¡ A n y w i l l d ö !
}