parameters: (self, string, idx=0, context=None)
docstring: Yield match, end_idx for each match
docstring_summary: Yield match, end_idx for each match
docstring_tokens: Yield match end_idx for each match
function: def iterscan(self, string, idx=0, context=None):
          """
          Yield match, end_idx for each match
          """
          match = self.scanner.scanner(string, idx).match
          actions = self.actions
          lastend = idx
          end = len(string)
          while True:
              m = match()
              if m is None:
                  break
              matchbegin, matchend = m.span()
              if lastend == matchend:
                  break
              action = actions[m.lastindex]
              if action is not None:
                  rval, next_pos = action(m, context)
                  if next_pos is not None and next_pos != matchend:
                      # "fast forward" the scanner
                      matchend = next_pos
                      match = self.scanner.scanner(string, matchend).match
                  yield rval, matchend
              lastend = matchend
function_tokens: def iterscan ( self , string , idx = 0 , context = None ) : match = self . scanner . scanner ( string , idx ) . match actions = self . actions lastend = idx end = len ( string ) while True : m = match ( ) if m is None : break matchbegin , matchend = m . span ( ) if lastend == matchend : break action = actions [ m . lastindex ] if action is not None : rval , next_pos = action ( m , context ) if next_pos is not None and next_pos != matchend : # "fast forward" the scanner matchend = next_pos match = self . scanner . scanner ( string , matchend ) . match yield rval , matchend lastend = matchend