def expression(self): me = Trees.Tree() if self.Tok.type == "ID": # aR' # semantic: check table for id me.addNextOperand(self.Tok) if self.Works[self.boi + 1].dataC != "(": symb = self.Table.getSymbol(self.Tok.dataC) else: symb = self.Table.getFuncSymbol(self.Tok.dataC) self.sDict[ "ID"] = self.Tok.dataC # capture ID #add to druple maybe # accept: ID self.accept(self.Tok.type, "ID") expr = self.expression_prime(me) last = self.createInstruct(me.root) return self.testExpression([symb, expr]), (last, me.root) elif self.Tok.type == "INTEGER" or self.Tok.type == "FLOAT": # bX'V'T' me.root = Trees.TreeNode(self.Tok) if self.Tok.type == "FLOAT": type = "float" else: type = "int" num = Symbol(type, "NUM", self.Tok.dataC) # accept: NUM self.accept(self.Tok.type, self.Tok.type) term = self.term_prime(me) adde = self.additive_expression_prime(me) sime = self.ok_expression_prime(me) last = self.createInstruct(me.root) return self.testExpression([num, term, adde, sime]), (last, me.root) elif self.Tok.dataC == "(": # accept: ( self.accept(self.Tok.dataC, "(") expr = self.expression() last = expr[1][1] expr = expr[0] if self.Tok.dataC == ")": # accept: ) self.accept(self.Tok.dataC, ")") term = self.term_prime(me) adde = self.additive_expression_prime(me) sime = self.ok_expression_prime(me) last = self.createInstruct(me.root) return self.testExpression([expr, term, adde, sime]), (last, me.root) print("REJECT") sys.exit(0)