// Lexer::NonMatchOneOrMoreRunes func (l *lexer) NonMatchOneOrMoreRunes(match []rune) bool { var r rune if r = l.PeekRune(0); r != RuneEOF && runes.IndexRune(match, r) == -1 { l.NextRune() for r = l.PeekRune(0); r != RuneEOF && runes.IndexRune(match, r) == -1; r = l.PeekRune(0) { l.NextRune() } return true } return false }
// Lexer::NonMatchOneRunes func (l *lexer) NonMatchOneRunes(match []rune) bool { if r := l.PeekRune(0); r != RuneEOF && runes.IndexRune(match, r) == -1 { l.NextRune() return true } return false }
// Lexer::MatchMinMaxRunes func (l *lexer) MatchMinMaxRunes(match []rune, min int, max int) bool { marker := l.Marker() count := 0 for r := l.PeekRune(0); r != RuneEOF && runes.IndexRune(match, r) >= 0; r = l.PeekRune(0) { l.NextRune() count++ if max > 0 && count >= max { // Check here to avoid unused PeekRune() break } } if count < min { l.Reset(marker) return false } return true }
// Lexer::NonMatchZeroOrMoreRunes func (l *lexer) NonMatchZeroOrMoreRunes(match []rune) bool { for r := l.PeekRune(0); r != RuneEOF && runes.IndexRune(match, r) == -1; r = l.PeekRune(0) { l.NextRune() } return true }
// Lexer::MatchZeroOrOneRunes func (l *lexer) MatchZeroOrOneRunes(match []rune) bool { if r := l.PeekRune(0); r != RuneEOF && runes.IndexRune(match, r) >= 0 { l.NextRune() } return true }