code: def token(self):
          
          tok = None
          if self.next_token is not None:
              tok = lex.LexToken()
              tok.value = ''
              tok.lineno = self.lex.lineno
              tok.lexpos = self.lex.lexpos
              tok.type = self.next_token
              self.next_token = None
  
          while self.lex is not None and tok is None:
              tok = self.lex.token()
              if tok is not None:
                  break
  
              tok = self.include_end()
  
          return tok
docs: Returns a token from the current input. If tok is None
          from the current input, it means we are at end of current input
          (e.g. at end of include file). If so, closes the current input
          and discards it; then pops the previous input and lexer from
          the input stack, and gets another token.
  
          If new token is again None, repeat the process described above
          until the token is either not None, or self.lex is None, wich
          means we must effectively return None, because parsing has
          ended.