def block(self): t = Block(self.environment) #instructions = False while True: self.ignorenewline() if self.symbol.value in self.lexer.types: instructs = self.declaration() for i in instructs: t.add_branch(i) self.next(';') self.ignorenewline() # instructions = True continue if self.symbol.value == 'def': # if instructions: # break self.next() t = self.func() self.ignorenewline() break if self.symbol.value == '{': self.next() self.environment = Environment(self.environment) self.block() if self.environment.top != None: self.environment = self.environment.top self.next('}') continue if self.symbol.value == '}' or self.symbol == self.eof: break if (self.symbol.value == 'if'): # instructions = True t.add_branch(self.ifstatement()) if (self.symbol.value == 'while'): # instructions = True t.add_branch(self.whilestatiment()) else: # instructions = True t.add_branch(self.instruction()) return t
def block(self): t = Block(self.environment) #instructions = False while True: self.ignorenewline() if self.symbol.value in self.lexer.types: instructs = self.declaration() for i in instructs: t.add_branch(i) self.next(';') self.ignorenewline() # instructions = True continue if self.symbol.value == 'def': # if instructions: # break self.next() t = self.func() self.ignorenewline() break if self.symbol.value == '{': self.next() self.environment = Environment(self.environment) self.block() if self.environment.top != None: self.environment = self.environment.top self.next('}') continue if self.symbol.value =='}' or self.symbol == self.eof: break if(self.symbol.value == 'if'): # instructions = True t.add_branch(self.ifstatement()) if(self.symbol.value == 'while'): # instructions = True t.add_branch(self.whilestatiment()) else: # instructions = True t.add_branch(self.instruction()) return t
def program(self): t = Block(self.environment) while self.symbol != self.eof: t.add_branch(self.block()) return t