Documentation
¶
Index ¶
- Constants
- Variables
- func IsErrEmptySeq(err error) bool
- func IsErrUnsupportedSeq(err error) bool
- func ScanExactlyOneSeqWithDotAllowedInIdenfierFromString(value string) (seq Seq, err Error)
- func SeqCompare(left, right Seq) cmp.Result
- func SeqComparePartial(left, right Seq) cmp.Result
- func SeqsCompare(left, right []Seq) cmp.Result
- func TokenMatcherOr(tm ...TokenMatcher) tokenMatcherOr
- type ComparableSeq
- type ComparableSeqs
- type ErrUnsupportedSeq
- type Error
- type Op
- type Scanner
- func (scanner *Scanner) CanScan() (ok bool)
- func (scanner *Scanner) ConsumeSpacesOrErrorOnFalse() (ok bool)
- func (scanner *Scanner) Error() error
- func (scanner *Scanner) GetSeq() Seq
- func (scanner *Scanner) N() int64
- func (scanner *Scanner) ReadRune() (char rune, n int, err error)
- func (scanner *Scanner) Reset(runeScanner io.RuneScanner)
- func (scanner *Scanner) Scan() (ok bool)
- func (scanner *Scanner) ScanDotAllowedInIdentifiers() (ok bool)
- func (scanner *Scanner) ScanDotAllowedInIdentifiersOrError() (Seq, Error)
- func (scanner *Scanner) ScanSkipSpace() (ok bool)
- func (scanner *Scanner) UnreadRune() (err error)
- func (scanner *Scanner) Unscan()
- type Seq
- func (seq *Seq) Add(tokenType TokenType, contents []byte)
- func (seq Seq) At(idx int) Token
- func (seq Seq) Clone() (dst Seq)
- func (seq Seq) GetBinaryMarshaler() SeqBinaryCoding
- func (seq *Seq) GetBinaryUnmarshaler() *SeqBinaryCoding
- func (seq Seq) GetComparable() ComparableSeq
- func (seq *Seq) GetSlice() collections_slice.Slice[Token]
- func (seq *Seq) GetSliceMutable() *collections_slice.Slice[Token]
- func (seq Seq) GetTokenTypes() TokenTypes
- func (seq Seq) Len() int
- func (seq Seq) MatchAll(tokens ...TokenMatcher) bool
- func (seq Seq) MatchEnd(tokens ...TokenMatcher) (ok bool, left, right Seq)
- func (seq Seq) MatchStart(tokens ...TokenMatcher) bool
- func (seq Seq) PartitionFavoringLeft(m TokenMatcher) (ok bool, left, right Seq, partition Token)
- func (seq Seq) PartitionFavoringRight(m TokenMatcher) (ok bool, left, right Seq, partition Token)
- func (seq *Seq) Reset()
- func (seq Seq) String() string
- func (seq Seq) StringDebug() string
- type SeqBinaryCoding
- func (marshaler SeqBinaryCoding) AppendBinary(bites []byte) ([]byte, error)
- func (marshaler SeqBinaryCoding) MarshalBinary() (bites []byte, err error)
- func (marshaler SeqBinaryCoding) ToSeq() Seq
- func (marshaler *SeqBinaryCoding) ToSeqMutable() *Seq
- func (marshaler *SeqBinaryCoding) UnmarshalBinary(bites []byte) (err error)
- type SeqRuneScanner
- type Token
- type TokenMatcher
- type TokenMatcherOp
- type TokenType
- type TokenTypes
- type TokensMatcher
Constants ¶
View Source
const ( OpOr = Op(',') OpAnd = Op(' ') OpGroupOpen = Op('[') OpGroupClose = Op(']') OpNegation = Op('^') OpExact = Op('=') OpNewline = Op('\n') OpSigilLatest = Op(':') OpSigilHistory = Op('+') OpSigilExternal = Op('.') OpSigilHidden = Op('?') OpPathSeparator = Op('/') OpType = Op('!') OpVirtual = Op('%') OpMarklId = Op('@') OpTagSeparator = Op('-') OpDescription = Op('#') // not really an operator? OpReference = Op('<') )
Variables ¶
View Source
var ( ErrEmptySeq = newPkgError("empty seq") ErrMoreThanOneSeq = newPkgError("more than one seq") )
View Source
var ( // @abcd TokenMatcherBlobDigest = TokensMatcher{ TokenMatcherOp('@'), TokenTypeIdentifier, } // !key TokenMatcherType = TokensMatcher{ TokenMatcherOp('!'), TokenTypeIdentifier, } // !key@abcd TokenMatcherTypeLock = TokensMatcher{ TokenMatcherOp('!'), TokenTypeIdentifier, TokenMatcherOp('@'), TokenTypeIdentifier, } // key@abcd TokenMatcherDodderTag = TokensMatcher{ TokenTypeIdentifier, TokenMatcherOp('@'), TokenTypeIdentifier, } // key=value TokenMatcherKeyValue = TokensMatcher{ TokenTypeIdentifier, TokenMatcherOp(OpExact), } // key="value" TokenMatcherKeyValueLiteral = TokensMatcher{ TokenTypeIdentifier, TokenMatcherOp(OpExact), TokenTypeLiteral, } TokenMatcherTai = TokensMatcher{ TokenTypeIdentifier, TokenMatcherOp('.'), TokenTypeIdentifier, } // <ref@sig TokenMatcherReferencedObject = TokensMatcher{ TokenMatcherOp('<'), TokenTypeIdentifier, TokenMatcherOp('@'), TokenTypeIdentifier, } // alias<ref@sig TokenMatcherReferencedObjectAlias = TokensMatcher{ TokenTypeIdentifier, TokenMatcherOp('<'), TokenTypeIdentifier, TokenMatcherOp('@'), TokenTypeIdentifier, } // <@digest TokenMatcherBlobReference = TokensMatcher{ TokenMatcherOp('<'), TokenMatcherOp('@'), TokenTypeIdentifier, } // alias<@digest TokenMatcherBlobReferenceAlias = TokensMatcher{ TokenTypeIdentifier, TokenMatcherOp('<'), TokenMatcherOp('@'), TokenTypeIdentifier, } )
Functions ¶
func ScanExactlyOneSeqWithDotAllowedInIdenfierFromString ¶
func TokenMatcherOr ¶
func TokenMatcherOr(tm ...TokenMatcher) tokenMatcherOr
Types ¶
type ComparableSeq ¶
func (ComparableSeq) DecodeRune ¶
func (seq ComparableSeq) DecodeRune() (char rune, width int)
func (ComparableSeq) Len ¶
func (seq ComparableSeq) Len() int
func (ComparableSeq) Shift ¶
func (seq ComparableSeq) Shift(amount int) ComparableSeq
type ComparableSeqs ¶
type ComparableSeqs struct {
Seqs []Seq
SeqIndex int
CurrentSeq ComparableSeq
ByteCount int
}
func GetComparableSeqs ¶
func GetComparableSeqs(seqs []Seq) ComparableSeqs
func (ComparableSeqs) DecodeRune ¶
func (seqs ComparableSeqs) DecodeRune() (char rune, width int)
func (ComparableSeqs) Len ¶
func (seqs ComparableSeqs) Len() int
func (ComparableSeqs) Shift ¶
func (seqs ComparableSeqs) Shift(amount int) ComparableSeqs
type ErrUnsupportedSeq ¶
func (ErrUnsupportedSeq) Error ¶
func (err ErrUnsupportedSeq) Error() string
func (ErrUnsupportedSeq) GetErrorType ¶
func (err ErrUnsupportedSeq) GetErrorType() pkgErrDisamb
func (ErrUnsupportedSeq) Is ¶
func (err ErrUnsupportedSeq) Is(target error) bool
type Scanner ¶
type Scanner struct {
RuneScanner io.RuneScanner
// contains filtered or unexported fields
}
func MakeScanner ¶
func MakeScanner(runeScanner io.RuneScanner) *Scanner
func (*Scanner) ConsumeSpacesOrErrorOnFalse ¶
Consumes any spaces currently available in the underlying RuneReader. If this returns false, it means that a read error has occurred, not that no spaces were consumed.
func (*Scanner) GetSeq ¶
Valid only until the next call to any scan method. To keep the sequence, make a clone of it by calling Seq.Clone()
func (*Scanner) Reset ¶
func (scanner *Scanner) Reset(runeScanner io.RuneScanner)
func (*Scanner) Scan ¶
TODO https://github.com/amarbel-llc/dodder/issues/31 Create sequence-returning methods for Scan family
func (*Scanner) ScanDotAllowedInIdentifiers ¶
func (*Scanner) ScanDotAllowedInIdentifiersOrError ¶
func (*Scanner) UnreadRune ¶
TODO https://github.com/amarbel-llc/dodder/issues/31 Remove UnreadRune entirely, replace with different buffering strategy
type Seq ¶
type Seq collections_slice.Slice[Token]
func (Seq) GetBinaryMarshaler ¶
func (seq Seq) GetBinaryMarshaler() SeqBinaryCoding
func (*Seq) GetBinaryUnmarshaler ¶
func (seq *Seq) GetBinaryUnmarshaler() *SeqBinaryCoding
func (Seq) GetComparable ¶
func (seq Seq) GetComparable() ComparableSeq
func (*Seq) GetSlice ¶
func (seq *Seq) GetSlice() collections_slice.Slice[Token]
func (*Seq) GetSliceMutable ¶
func (seq *Seq) GetSliceMutable() *collections_slice.Slice[Token]
func (Seq) GetTokenTypes ¶
func (seq Seq) GetTokenTypes() TokenTypes
func (Seq) MatchAll ¶
func (seq Seq) MatchAll(tokens ...TokenMatcher) bool
func (Seq) MatchEnd ¶
func (seq Seq) MatchEnd(tokens ...TokenMatcher) (ok bool, left, right Seq)
func (Seq) MatchStart ¶
func (seq Seq) MatchStart(tokens ...TokenMatcher) bool
func (Seq) PartitionFavoringLeft ¶
func (seq Seq) PartitionFavoringLeft( m TokenMatcher, ) (ok bool, left, right Seq, partition Token)
type SeqBinaryCoding ¶
type SeqBinaryCoding Seq
func (SeqBinaryCoding) AppendBinary ¶
func (marshaler SeqBinaryCoding) AppendBinary(bites []byte) ([]byte, error)
func (SeqBinaryCoding) MarshalBinary ¶
func (marshaler SeqBinaryCoding) MarshalBinary() (bites []byte, err error)
func (SeqBinaryCoding) ToSeq ¶
func (marshaler SeqBinaryCoding) ToSeq() Seq
func (*SeqBinaryCoding) ToSeqMutable ¶
func (marshaler *SeqBinaryCoding) ToSeqMutable() *Seq
func (*SeqBinaryCoding) UnmarshalBinary ¶
func (marshaler *SeqBinaryCoding) UnmarshalBinary(bites []byte) (err error)
type SeqRuneScanner ¶
type SeqRuneScanner struct {
Seq
// contains filtered or unexported fields
}
func (*SeqRuneScanner) IsFull ¶
func (scanner *SeqRuneScanner) IsFull() bool
func (*SeqRuneScanner) ReadRune ¶
func (scanner *SeqRuneScanner) ReadRune() (r rune, size int, err error)
func (*SeqRuneScanner) Reset ¶
func (scanner *SeqRuneScanner) Reset()
func (*SeqRuneScanner) UnreadRune ¶
func (scanner *SeqRuneScanner) UnreadRune() (err error)
type TokenMatcherOp ¶
type TokenMatcherOp byte
func (TokenMatcherOp) Match ¶
func (tokenMatcher TokenMatcherOp) Match(token Token) bool
type TokenTypes ¶
type TokenTypes []