Beispiel #1
0
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
}