コード例 #1
0
ファイル: codegen.py プロジェクト: islarrab/raplog
def unop(oper):
    opdo1 = opdos.pop()
    newtype = semantic_cube.get_type(oper, opdo1['type'], None)
    if newtype == 'E':
        error = "Line {lineno}: Can't use {oper} on {op1}"
        return error.format(oper=oper, op1=opdo1['type'])
    temp = {'dir': symtable.newtemp(newtype), 'type': newtype}
    gen_quad(dir.of[oper], opdo1['dir'], -1, temp['dir'])
    opdos.append(temp)
コード例 #2
0
ファイル: codegen.py プロジェクト: islarrab/raplog
def unop(oper):
    opdo1 = opdos.pop()
    newtype = semantic_cube.get_type(oper, opdo1["type"], None)
    if newtype == "E":
        error = "Line {lineno}: Can't use {oper} on {op1}"
        return error.format(oper=oper, op1=opdo1["type"])
    temp = {"dir": symtable.newtemp(newtype), "type": newtype}
    gen_quad(dir.of[oper], opdo1["dir"], -1, temp["dir"])
    opdos.append(temp)
コード例 #3
0
ファイル: codegen.py プロジェクト: islarrab/raplog
def binop(oper):
    opdo2 = opdos.pop()
    opdo1 = opdos.pop()
    newtype = semantic_cube.get_type(oper, opdo1["type"], opdo2["type"])
    if newtype == "E":
        error = "Line {lineno}: Can't use '{oper}' between {t1} and {t2}"
        return error.format(lineno="{}", oper=oper, t1=opdo1["type"], t2=opdo2["type"])
    temp = {"dir": symtable.newtemp(newtype), "type": newtype}
    gen_quad(dir.of[oper], opdo1["dir"], opdo2["dir"], temp["dir"])
    opdos.append(temp)
コード例 #4
0
ファイル: codegen.py プロジェクト: islarrab/raplog
def binop(oper):
    opdo2 = opdos.pop()
    opdo1 = opdos.pop()
    newtype = semantic_cube.get_type(oper, opdo1['type'], opdo2['type'])
    if newtype == 'E':
        error = "Line {lineno}: Can't use '{oper}' between {t1} and {t2}"
        return error.format(lineno='{}',
                            oper=oper,
                            t1=opdo1['type'],
                            t2=opdo2['type'])
    temp = {'dir': symtable.newtemp(newtype), 'type': newtype}
    gen_quad(dir.of[oper], opdo1['dir'], opdo2['dir'], temp['dir'])
    opdos.append(temp)