    # File lib/yard/parser/ruby/legacy/ruby_lex.rb, line 788
          def lex_int2
            @OP.def_rules("]", "}", ")") do
              |op, io|
              @lex_state = EXPR_END
              @indent -= 1
              Token(op).set_text(op)
            end

            @OP.def_rule(":") do
              if (@colonblock_seen && @lex_state != EXPR_BEG) || peek(0) =~ /\s/
                @lex_state = EXPR_BEG
                tk = Token(TkCOLON)
              else
                @lex_state = EXPR_FNAME
                tk = Token(TkSYMBEG)
              end
              tk.set_text(":")
            end

            @OP.def_rule("::") do
              # p @lex_state.id2name, @space_seen
              if @lex_state == EXPR_BEG or @lex_state == EXPR_ARG && @space_seen
                @lex_state = EXPR_BEG
                tk = Token(TkCOLON3)
              else
                @lex_state = EXPR_DOT
                tk = Token(TkCOLON2)
              end
              tk.set_text("::")
            end

            @OP.def_rule("/") do |op, io|
              if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
                identify_string(op)
              elsif peek(0) == '='
                getc
                @lex_state = EXPR_BEG
                Token(TkOPASGN, :/).set_text("/=") #")
              elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
                identify_string(op)
              else
                @lex_state = EXPR_BEG
                Token("/").set_text(op)
              end
            end

            @OP.def_rules("^") do
              @lex_state = EXPR_BEG
              Token("^").set_text("^")
            end

            # @OP.def_rules("^=") do
            #   @lex_state = EXPR_BEG
            #   Token(TkOPASGN, :^)
            # end

            @OP.def_rules(",", ";") do |op, io|
              @colonblock_seen = false
              @lex_state = EXPR_BEG
              Token(op).set_text(op)
            end

            @OP.def_rule("~") do
              @lex_state = EXPR_BEG
              Token("~").set_text("~")
            end

            @OP.def_rule("~@", proc{@lex_state = EXPR_FNAME}) do
              @lex_state = EXPR_BEG
              Token("~").set_text("~@")
            end

            @OP.def_rule("(") do
              @indent += 1
              # if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
              #  @lex_state = EXPR_BEG
              #  tk = Token(TkfLPAREN)
              # else
                @lex_state = EXPR_BEG
                tk = Token(TkLPAREN)
              # end
              tk.set_text("(")
            end

            @OP.def_rule("[]", proc{@lex_state == EXPR_FNAME}) do
              Token("[]").set_text("[]")
            end

            @OP.def_rule("[]=", proc{@lex_state == EXPR_FNAME}) do
              Token("[]=").set_text("[]=")
            end

            @OP.def_rule("[") do
              @indent += 1
              # if @lex_state == EXPR_FNAME
              #   t = Token(TkfLBRACK)
              # else
              #   if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
              #     t = Token(TkLBRACK)
              #   elsif @lex_state == EXPR_ARG && @space_seen
              #   else
              #     t = Token(TkfLBRACK)
              #   end
              # end
              t = Token(TkLBRACK)
              @lex_state = EXPR_BEG
              t.set_text("[")
            end

            @OP.def_rule("{") do
              @indent += 1
              # if @lex_state != EXPR_END && @lex_state != EXPR_ARG
              #   t = Token(TkLBRACE)
              # else
              #   t = Token(TkfLBRACE)
              # end
              t = Token(TkLBRACE)
              @lex_state = EXPR_BEG
              t.set_text("{")
            end

            @OP.def_rule('\\') do   #'
              if getc == "\n"
                @space_seen = true
                @continue = true
                Token(TkSPACE).set_text("\\\n")
              else
                ungetc
                Token("\\").set_text("\\")  #"
              end
            end

            @OP.def_rule('%') do
              |op, io|
              if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
                identify_quotation('%')
              elsif peek(0) == '='
                getc
                Token(TkOPASGN, "%").set_text("%=")
              elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
                identify_quotation('%')
              else
                @lex_state = EXPR_BEG
                Token("%").set_text("%")
              end
            end

            @OP.def_rule('$') do  #'
              identify_gvar
            end

            @OP.def_rule('@') do
              if peek(0) =~ /[@\w_]/
                ungetc
                identify_identifier
              else
                Token("@").set_text("@")
              end
            end

            # @OP.def_rule("def", proc{|op, io| /\s/ =~ io.peek(0)}) do
            #   |op, io|
            #   @indent += 1
            #   @lex_state = EXPR_FNAME
            # # @lex_state = EXPR_END
            # # until @rests[0] == "\n" or @rests[0] == ";"
            # #   rests.shift
            # # end
            # end

            @OP.def_rule("__END__", proc{@prev_char_no == 0 && peek(0) =~ /[\r\n]/}) do
              throw :eof
            end

            @OP.def_rule("") do |op, io|
              printf "MATCH: start %s: %s\n", op, io.inspect if RubyLex.debug?
              if peek(0) =~ /[0-9]/
                t = identify_number("")
              elsif peek(0) =~ /[\w_]/
                t = identify_identifier
              end
              printf "MATCH: end %s: %s\n", op, io.inspect if RubyLex.debug?
              t
            end

            p @OP if RubyLex.debug?
          end