class_docstr: A recursive-descent parser for subset of Python expressions and assignments.
  There is a built-in parser, but I only want to process Python code  this library
  can handle and I also want my own kind of abstract syntax tree. Constantly,
  it's easier if I just parse the code I care about and ignore everything else.
  Building this parser was certainly no great burden.
class_docstr_tok: ["A","recursive-descent","parser","for","subset","of","Python","expressions","and","assignments",".","There","is","a","built-in","parser",",","but","I","only","want","to","process","Python","code","this","library","can","handle","and","I","also","want","my","own","kind","of","abstract","syntax","tree",".","Constantly",",","it","'s","easier","if","I","just","parse","the","code","I","care","about","and","ignore","everything","else",".","Building","this","parser","was","certainly","no","great","burden","."]
code: def isgroup(self):
      return self.LA(1) == LPAR or self.LA(1) == LSQB
  
imports: from io import BytesIO
  import token
  import keyword
  import tsensor.ast
  from tokenize import tokenize, NUMBER, STRING, NAME, OP, ENDMARKER, LPAR, LSQB, RPAR, RSQB, COMMA, COLON, PLUS, MINUS, STAR, SLASH, AT, PERCENT, TILDE, DOT, NOTEQUAL, PERCENTEQUAL, AMPEREQUAL, DOUBLESTAREQUAL, STAREQUAL, PLUSEQUAL, MINEQUAL, DOUBLESLASHEQUAL, SLASHEQUAL, LEFTSHIFTEQUAL, LESSEQUAL, EQUAL, EQEQUAL, GREATEREQUAL, RIGHTSHIFTEQUAL, ATEQUAL, CIRCUMFLEXEQUAL, VBAREQUAL, DOUBLESTAR
label_desc: Use image node_id 17 for calling the PyExprParser obj's underlying member method code with example usage: obj.isgroup() and returns: unknown