コード例 #1
0
const IRTree::IStm* CConditionalWrapper::ToStm() const {
	Temp::CLabel* tempLabel = new Temp::CLabel();
	IRTree::CLabel* irLabel = new IRTree::CLabel( tempLabel );
	const IRTree::IStm* cond = ToConditional( tempLabel, tempLabel );
	const IRTree::CSeq* seq = new IRTree::CSeq( cond, irLabel );
	return seq;
}
コード例 #2
0
IIRStm* CConditionalWrapper::ToStm() const
{
    CLabel* tempLabel = new CLabel();
    CIRLabel* irLabel = new CIRLabel( tempLabel );
    IIRStm* cond = ToConditional( tempLabel, tempLabel );
    CIRSeq* seq = new CIRSeq( cond, irLabel );
    return seq;
}
コード例 #3
0
const IRTree::IExp* CConditionalWrapper::ToExp() const {
	Temp::CTemp* temp = new Temp::CTemp();
	IRTree::CTemp* irTemp = new IRTree::CTemp( *temp );
	IRTree::CMove* moveTrue = new IRTree::CMove( irTemp, new IRTree::CConst( 1 ) );
	IRTree::CMove* moveFalse = new IRTree::CMove( irTemp, new IRTree::CConst( 0 ) );
	Temp::CLabel* trueLabel = new Temp::CLabel();
	Temp::CLabel* falseLabel = new Temp::CLabel();
	IRTree::CLabel* trueIRLabel = new IRTree::CLabel( trueLabel );
	IRTree::CLabel* falseIRLabel = new IRTree::CLabel( falseLabel );
	IRTree::CSeq* seqTrue = new IRTree::CSeq( trueIRLabel, moveTrue );
	IRTree::CSeq* seqFalse = new IRTree::CSeq( falseIRLabel, moveFalse );
	const IRTree::IStm* cond = ToConditional( trueLabel, falseLabel );
	IRTree::CEseq* eseq = new IRTree::CEseq( cond, irTemp );
	return eseq;
}
コード例 #4
0
IIRExp* CConditionalWrapper::ToExp() const
{
    CTemp* temp = new CTemp();
    CIRTemp* irTemp = new CIRTemp( temp );
    CIRMove* moveTrue = new CIRMove( irTemp, new CIRConst( 1 ) );
    CIRMove* moveFalse = new CIRMove( irTemp, new CIRConst( 0 ) );
    CLabel* trueLabel = new CLabel();
    CLabel* falseLabel = new CLabel();
    CIRLabel* trueIRLabel = new CIRLabel( trueLabel );
    CIRLabel* falseIRLabel = new CIRLabel( falseLabel );
    CIRSeq* seqTrue = new CIRSeq( trueIRLabel, moveTrue );
    CIRSeq* seqFalse = new CIRSeq( falseIRLabel, moveFalse );
    IIRStm* cond = ToConditional( trueLabel, falseLabel );
    CIRESeq* eseq = new CIRESeq( cond, irTemp );
    return eseq;
}