Versions in this module Expand all Collapse all v0 v0.1.0 Mar 20, 2022 Changes in this version + const InvalidReaderMarker + func AnyHasInvalidReader(strs []string) bool + func CheckRuleName(name string) error + func CheckRules(g Grammar) error + func GrammarLines(g []*Rule) []string + func HasInvalidReader(str string) bool + func InvalidReader(format string, a ...interface{}) invalidReader + func Janus(name string, r Reader) (Reader, Reader) + func MustCheckRules(g Grammar) + func MustSetRuleNames(g Grammar) + func SetRuleNames(g Grammar) error + func SortSegments(values []Segment) + func SortSegmentsByOrder(values []Segment, order []string) + type Basket struct + func (b *Basket) Add(seg Segment) + func (b *Basket) PickWith(rules ...*Rule) + func (b *Basket) Picked() []Segment + func (b *Basket) String() string + func (b *Basket) Update(m Marker) + type BoolReader struct + Format string + Value bool + func Bool(format string) *BoolReader + func (r *BoolReader) Read(s *Scanner) error + func (r *BoolReader) What() string + type Grammar interface + Grammar func() []*Rule + type Graph struct + Root *Node + func BuildGraph(name string, segments []Segment) *Graph + func NewGraph(name string) *Graph + func (g *Graph) Append(seg Segment) (*Graph, bool) + func (g *Graph) Equal(oth *Graph) bool + func (g *Graph) FlameStack() string + func (g *Graph) Leafs() []Segment + type IntReader struct + Base int + BitSize int + Value int64 + func Int(base int, bitSize int) *IntReader + func (r *IntReader) Read(s *Scanner) error + func (r *IntReader) What() string + type Log struct + Entries []LogEntry + func MonitorGrammar(g Grammar) *Log + func (l *Log) Enter(info string, pos int) *LogEntry + func (l *Log) Exit(e *LogEntry, pos int, err error) + func (l *Log) Monitor(readers ...*Rule) + func (l *Log) Print() + func (l *Log) PrintWithPreview(str string, n int) + func (l *Log) Reset() + type LogEntry struct + EnterAt int + Error error + ExitAt int + Info string + Level int + func (e LogEntry) String() string + type MapFunc func(Token) + type Marker int + type MatchFunc func(rune) bool + type Node struct + Nodes []*Node + func (n *Node) Equal(oth *Node) bool + type ReadError struct + What string + func (e ReadError) Error() string + func (e ReadError) Later(oth ReadError) bool + type ReadFunc func(*Scanner) error + type Reader interface + Read func(s *Scanner) error + What func() string + func Any(list ...interface{}) Reader + func AnyFold(list ...string) Reader + func AnyRune(str string) Reader + func At(r Reader) Reader + func AtEnd() Reader + func Between(min rune, max rune) Reader + func BetweenAny(str string) Reader + func Body(body, tail Reader) Reader + func BodyTail(body, tail Reader) Reader + func BuildBetweenAny(minMax ...rune) Reader + func Digit() Reader + func Fold(str string) Reader + func HexDigit() Reader + func Holey(min rune, max rune, holes string) Reader + func Lit(str string) Reader + func Many(i interface{}) Reader + func Map(r Reader, f MapFunc) Reader + func Match(what string, f MatchFunc) Reader + func Monitor(r Reader, l *Log, info string) Reader + func NL() Reader + func Named(name string, r Reader) Reader + func Not(r Reader) Reader + func Opt(i interface{}) Reader + func Past(i interface{}) Reader + func Pick(r Reader, b *Basket, info string) Reader + func RuleName() Reader + func Rune(r rune) Reader + func Seq(list ...interface{}) Reader + func Set(ranges string, singles string) Reader + func SkipSeq(skip Reader, list ...interface{}) Reader + func SkipWSSeq(list ...interface{}) Reader + func Times(n int, r Reader) Reader + func To(i interface{}) Reader + func WS() Reader + func Wrap(what string, f ReadFunc) Reader + func Zom(i interface{}) Reader + type Rule struct + Name string + Reader Reader + func CollectRules(g Grammar) []*Rule + func (r *Rule) Map(f MapFunc) + func (r *Rule) Monitor(l *Log) + func (r *Rule) Pick(basket *Basket) + func (r *Rule) Read(s *Scanner) error + func (r *Rule) Rule() string + func (r *Rule) What() string + type Scanner struct + Tracker Tracker + func NewRevScanner(str string) *Scanner + func NewScanner(str string) *Scanner + func (s *Scanner) AtEnd() bool + func (s *Scanner) AtStart() bool + func (s *Scanner) BoolErrorFor(ok bool, name string) error + func (s *Scanner) Capture(f ScopeFunc) (string, bool) + func (s *Scanner) CaptureUse(r Reader) (string, error) + func (s *Scanner) ErrorFor(name string) error + func (s *Scanner) Get(t Token) string + func (s *Scanner) Head() string + func (s *Scanner) If(str string) bool + func (s *Scanner) IfAny(strs ...string) bool + func (s *Scanner) IfAnyRune(str string) bool + func (s *Scanner) IfBetween(min, max rune) bool + func (s *Scanner) IfFold(str string) bool + func (s *Scanner) IfMatch(check MatchFunc) bool + func (s *Scanner) IfRune(r rune) bool + func (s *Scanner) LineCol(tab int) (int, int) + func (s *Scanner) Mark() Marker + func (s *Scanner) Move(n int) bool + func (s *Scanner) MoveRunes(n int) bool + func (s *Scanner) NewBasket() *Basket + func (s *Scanner) NewBasketFor(g Grammar) *Basket + func (s *Scanner) ReadBool(format string) (bool, error) + func (s *Scanner) ReadInt(base int, bitSize int) (int64, error) + func (s *Scanner) ReadRune() (rune, error) + func (s *Scanner) ReadUint(base int, bitSize int) (uint64, error) + func (s *Scanner) RevIf(str string) bool + func (s *Scanner) RevIfAny(strs []string) bool + func (s *Scanner) RevIfAnyRune(str string) bool + func (s *Scanner) RevIfBetween(min, max rune) bool + func (s *Scanner) RevIfFold(str string) bool + func (s *Scanner) RevIfMatch(check MatchFunc) bool + func (s *Scanner) RevIfRune(r rune) bool + func (s *Scanner) RevReadRune() (rune, error) + func (s *Scanner) RevTo(str string) bool + func (s *Scanner) RevToAnyRune(str string) bool + func (s *Scanner) RevToBetween(min, max rune) bool + func (s *Scanner) RevToFold(str string) bool + func (s *Scanner) RevToMatch(check MatchFunc) bool + func (s *Scanner) RevToRune(r rune) bool + func (s *Scanner) RevWhileAnyRune(str string) bool + func (s *Scanner) RevWhileBetween(min, max rune) bool + func (s *Scanner) RevWhileMatch(check MatchFunc) bool + func (s *Scanner) RevWhileRune(r rune) bool + func (s *Scanner) ScanString(n int) (string, bool) + func (s *Scanner) Scope(f ScopeFunc) bool + func (s *Scanner) Segmentate(segments []Segment) ([]Segment, error) + func (s *Scanner) Since(m Marker) string + func (s *Scanner) Tail() string + func (s *Scanner) To(str string) bool + func (s *Scanner) ToAnyRune(str string) bool + func (s *Scanner) ToBetween(min, max rune) bool + func (s *Scanner) ToEnd() bool + func (s *Scanner) ToFold(str string) bool + func (s *Scanner) ToMarker(m Marker) bool + func (s *Scanner) ToMatch(check MatchFunc) bool + func (s *Scanner) ToRune(r rune) bool + func (s *Scanner) ToStart() bool + func (s *Scanner) Tokenize(f ScopeFunc) (Token, bool) + func (s *Scanner) TokenizeUse(r Reader) (Token, error) + func (s *Scanner) Trace(f ScopeFunc) (string, bool) + func (s *Scanner) TraceUse(r Reader) (string, error) + func (s *Scanner) TraceUseFunc(f ReadFunc) (string, error) + func (s *Scanner) Use(r Reader) error + func (s *Scanner) UseFunc(f ReadFunc) error + func (s *Scanner) While(f ScopeFunc) bool + func (s *Scanner) WhileAnyRune(str string) bool + func (s *Scanner) WhileBetween(min, max rune) bool + func (s *Scanner) WhileMatch(check MatchFunc) bool + func (s *Scanner) WhileRune(r rune) bool + type ScopeFunc func() bool + type Segment struct + Info string + func (s Segment) Segmentate(segments []Segment) ([]Segment, error) + func (seg Segment) Known() bool + func (v Segment) Split(sep Segment) (Segment, Segment) + func (v Segment) String() string + type Token struct + func MakeToken(a, b Marker) Token + func (t Token) After(oth Token) bool + func (t Token) Before(oth Token) bool + func (t Token) Clashes(oth Token) bool + func (t Token) Covers(sub Token) bool + func (t Token) Len() int + func (t Token) Merge(oth Token) Token + func (t Token) Split(sep Token) (Token, Token) + func (t Token) String() string + type Tracker interface + Update func(m Marker) + type UintReader struct + Base int + BitSize int + Value uint64 + func Uint(base int, bitSize int) *UintReader + func (r *UintReader) Read(s *Scanner) error + func (r *UintReader) What() string