mirror of
https://github.com/ZDoom/qzdoom-gpl.git
synced 2024-11-16 09:11:17 +00:00
- handle trinary conditional statement.
This commit is contained in:
parent
a6a0c4b93c
commit
1c21dbc44c
1 changed files with 14 additions and 4 deletions
|
@ -2471,7 +2471,7 @@ FxExpression *ZCCCompiler::ConvertNode(ZCC_TreeNode *ast)
|
||||||
case PEX_BitAnd:
|
case PEX_BitAnd:
|
||||||
case PEX_BitOr:
|
case PEX_BitOr:
|
||||||
case PEX_BitXor:
|
case PEX_BitXor:
|
||||||
return new FxBinaryInt(op == PEX_LeftShift ? TK_LShift : op == PEX_RightShift ? TK_RShift : op == PEX_URightShift? TK_URShift : op == PEX_BitAnd ? '&' : op == PEX_BitOr ? '|' : '^', left, right);
|
return new FxBinaryInt(op == PEX_LeftShift ? TK_LShift : op == PEX_RightShift ? TK_RShift : op == PEX_URightShift ? TK_URShift : op == PEX_BitAnd ? '&' : op == PEX_BitOr ? '|' : '^', left, right);
|
||||||
|
|
||||||
case PEX_BoolOr:
|
case PEX_BoolOr:
|
||||||
case PEX_BoolAnd:
|
case PEX_BoolAnd:
|
||||||
|
@ -2485,17 +2485,17 @@ FxExpression *ZCCCompiler::ConvertNode(ZCC_TreeNode *ast)
|
||||||
|
|
||||||
case PEX_EQEQ:
|
case PEX_EQEQ:
|
||||||
case PEX_NEQ:
|
case PEX_NEQ:
|
||||||
return new FxCompareEq(op == PEX_NEQ ? TK_Neq : TK_Eq, left, right);
|
return new FxCompareEq(op == PEX_NEQ ? TK_Neq : TK_Eq, left, right);
|
||||||
|
|
||||||
|
|
||||||
// todo: These do not have representations in DECORATE and no implementation exists yet.
|
// todo: These do not have representations in DECORATE and no implementation exists yet.
|
||||||
case PEX_LTGTEQ:
|
case PEX_LTGTEQ:
|
||||||
case PEX_Concat:
|
case PEX_Concat:
|
||||||
case PEX_Is:
|
case PEX_Is:
|
||||||
// more esoteric operators
|
// more esoteric operators
|
||||||
case PEX_APREQ:
|
case PEX_APREQ:
|
||||||
|
|
||||||
// vector operations will be done later.
|
// vector operations will be done later.
|
||||||
case PEX_CrossProduct:
|
case PEX_CrossProduct:
|
||||||
case PEX_DotProduct:
|
case PEX_DotProduct:
|
||||||
default:
|
default:
|
||||||
|
@ -2503,6 +2503,16 @@ FxExpression *ZCCCompiler::ConvertNode(ZCC_TreeNode *ast)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case AST_ExprTrinary:
|
||||||
|
{
|
||||||
|
auto trinary = static_cast<ZCC_ExprTrinary *>(ast);
|
||||||
|
auto condition = ConvertNode(trinary->Test);
|
||||||
|
auto left = ConvertNode(trinary->Left);
|
||||||
|
auto right = ConvertNode(trinary->Right);
|
||||||
|
|
||||||
|
return new FxConditional(condition, left, right);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// only for development. I_Error is more convenient here than a normal error.
|
// only for development. I_Error is more convenient here than a normal error.
|
||||||
|
|
Loading…
Reference in a new issue