func stNumber(l lex.Lexer) lex.StateFn { if !l.MatchOneOrMoreBytes(digits_b) { emitError("Malformatted number: no principle number.") } if l.MatchOneRune('.') { if !l.MatchOneOrMoreBytes(digits_b) { emitError("Malformatted number: no fractional part in float.") } } if l.MatchOneRunes([]rune{'e', 'E'}) { l.MatchZeroOrOneRunes([]rune{'-', '+'}) if !l.MatchOneOrMoreBytes(digits_b) { emitError("Malformatted number: no exponential part in float.") } } emit(l, Number) return stStart }