示例#1
0
    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
示例#2
0

# 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(