private Token scaenNumber(CharStream line) throws AssemblerSyntaxException {
        if (!CharUtils.isNumeric(line.getCurrentChar())) {
            throw new AssemblerSyntaxException(
                    String.format("Number must start with digit at index %d!", line.getIndex()),
                    line.getLineNumber());
        }
        final StringBuilder value = new StringBuilder();
        value.append(line.getCurrentChar());
        TokenType type = TokenType.INTEGER;

        while (line.hasNextChar()) {
            final char peek = line.peekChar();

            if (CharUtils.isNumeric(peek)) {
                line.nextChar();
                value.append(line.getCurrentChar());
            } else if ('.' == peek) {
                line.nextChar();
                value.append(line.getCurrentChar());
                type = TokenType.FLOAT;
            } else if (CharUtils.isWhitespace(peek) || peek == CharStream.EOL) {
                break;
            } else {
                throw new AssemblerSyntaxException(
                        String.format("Unexpected character %s at column %d!", peek, line.getIndex()),
                        line.getLineNumber());
            }
        }

        return new Token(type, value.toString());
    }