95 lines
1.9 KiB
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 ö !
|
|
}
|