def minusEqStatement(self, ident): opr = self.next() self.consume() opr.value = '=' root = Tree(opr) expr = self.expression() opr.value = '-' adder = Tree(opr) adder.addChildren(ident, expr) root.addChildren(ident, adder) return root
def forIndexExpression(self): if (self.match('(')): self.consume() ret = self.forIndexExpression() self.expect(')') return ret ident = self.identifier() if (self.match('=')): root = Tree(self.next()) self.consume() expr = self.expression() root.addChildren(ident, expr) return root else: return ident
def ifStatement(self): root = self.expect(Token.TOK_IF) test = self.expression() self.statementSeperator() trueblock = self.statementList() root.addChildren(test, trueblock) while (self.match(Token.TOK_ELSEIF)): elseif = Tree(self.next()) self.consume() test = self.expression() block = self.statementList() elseif.addChildren(test, block) root.addChild(elseif) if (self.match(Token.TOK_ELSE)): elseblk = Tree(self.next()) self.consume() block = self.statementList() elseblk.addChild(block) root.addChild(elseblk) self.expect(Token.TOK_END, " IF block") return root
def switchStatement(self): root = self.expect(Token.TOK_SWITCH) swexpr = self.expression() root.addChild(swexpr) self.flushSeperators() while (self.match(Token.TOK_CASE)): caseblock = Tree(self.next()) self.consume() csexpr = self.expression() self.statementSeperator() block = self.statementList() caseblock.addChildren(csexpr, block) root.addChild(caseblock) if (self.match(Token.TOK_OTHERWISE)): otherwise = Tree(self.next()) self.consume() self.statementSeperator() block = self.statementList() otherwise.addChild(block) root.addChild(otherwise) self.expect(Token.TOK_END, " SWITCH block") return root