def __init__(self, ST, val, startPos, endPos, myErrHandler): self.val = val self.ST = ST self.startPos = startPos self.endPos = endPos header = "<AST> when constructing [Number] @(" + str( self.startPos) + ", " + str(self.endPos) + "), " errMsg = "" if self.val is None and self.ST is None: errMsg = header + "val and ST are both None" myErrHandler.Record_AST_Err("AST", errMsg, self.startPos) elif self.val is None: if isinstance(self.ST, Entry.Constant) is False: errMsg = header + "ST must be a Entry.Constant type" myErrHandler.Record_AST_Err("AST", errMsg, self.startPos) else: self.val = self.ST.val self.curType = self.ST.typePtr elif self.ST is None: newConstant = Entry.Constant(Entry.singleton_Integer, self.val) self.ST = newConstant self.curType = self.ST.typePtr
# Unit Test for Node.py if __name__ == "__main__": ErrHandler = ErrorHandler.ErrorHandeler("") print(red("# Unit test: ") + blue("AST-Variable")) ST_Variable = Entry.Variable(Entry.singleton_Integer) print(ST_Variable.toString()) AST_Variable = Variable(ST_Variable, 0, 1, ErrHandler) print(AST_Variable.toString()) print("") print(red("# Unit test: ") + blue("AST-Index")) ST_Constant = Entry.Constant(Entry.singleton_Integer, 10) ST_Array = Entry.Array(Entry.singleton_Integer, ST_Constant) ST_Variable_Array = Entry.Variable(ST_Array) AST_Variable_Array = Variable(ST_Variable_Array, 2, 3, ErrHandler) AST_Index = Index(AST_Variable_Array, AST_Variable, 4, 5, ErrHandler) print(AST_Index.toString()) print("") print(red("# Unit test: ") + blue("AST-Field")) ST_Scope = Entry.Scope() ST_Field_type = Entry.Field(Entry.singleton_Integer) AST_test_FVar = Variable(ST_Field_type, 2, 3, ErrHandler) ST_Field = Entry.Variable(ST_Field_type) ST_Scope.insert("A", ST_Field_type) ST_Scope.insert(