예제 #1
0
파일: parser.py 프로젝트: neexee/Translator
    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
예제 #2
0
파일: parser.py 프로젝트: neexee/Translator
    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
예제 #3
0
파일: parser.py 프로젝트: neexee/Translator
 def program(self):
     t = Block(self.environment)
     while self.symbol != self.eof:
         t.add_branch(self.block())
     return t
예제 #4
0
파일: parser.py 프로젝트: neexee/Translator
 def program(self):
     t = Block(self.environment)
     while self.symbol != self.eof:
         t.add_branch(self.block())
     return t