示例#1
0
 def stmtlist(self):
     """ parse a bunch of statements """
     self.dbg_msg(" STMTLIST ")
     stlist = StmtList()
     while (not self.lex.end_of_tokens()):
         self.dbg_msg("STMTLIST => STMT")
         ptok = self.peek()
         if (ptok.kind == Token.END):
             break
         if (not self.inside_if and
             (ptok.kind == Token.ELSE or ptok.kind == Token.ELSEIF)):
             break
         st = self.stmt()
         stlist.append(st)
     return stlist
示例#2
0
 def parse(self):
     """ parser routine """
     self.ast = StmtList()
     while (not self.lex.end_of_tokens()):
         self.dbg_msg("AST length = %d" % len(self.ast))
         if (self.lex.peek().kind == Token.DEF):
             self.dbg_msg("parsing for function")
             ## save function in a global table.
             func = self.function()
             self.warn_function_overrides(func.name)
             self.function_map[func.name] = func
         else:
             self.dbg_msg("parsing for stmt")
             st = self.stmt()
             if (not self.parsing_function):
                 self.ast.append(st)
     return self.ast
示例#3
0
 def stmtlist(self, pass_in_ATexpr=None):
     """ parse a bunch of statements """
     self.dbg_msg(" STMTLIST ")
     stlist = StmtList()
     while (not self.lex.end_of_tokens()):
         self.dbg_msg("STMTLIST => STMT")
         ptok = self.peek()
         self.dbg_msg("STMTLIST " + str(ptok))
         if (self.debug): print("peek @ ", str(ptok))
         if (ptok.kind == EzhilToken.END):
             self.dbg_msg("End token found")
             break
         elif (ptok.kind == EzhilToken.DOWHILE):
             if (self.debug): print("DOWHILE token found")
             break
         elif (self.inside_if
               and (ptok.kind == EzhilToken.ELSE or ptok.kind
                    == EzhilToken.ATRATEOF or ptok.kind == EzhilToken.CASE
                    or ptok.kind == EzhilToken.OTHERWISE)):
             break
         st = self.stmt(pass_in_ATexpr)
         pass_in_ATexpr = None
         stlist.append(st)
     return stlist