diff --git a/src/Lib/Script/Ast/IrExpression.cc b/src/Lib/Script/Ast/IrExpression.cc index d7c2ce71c337b734b8fc2bb73c81f2261d11bd7a..a2b1faf01cf8fd87ccc0a52c112cedbd840ae6bc 100644 --- a/src/Lib/Script/Ast/IrExpression.cc +++ b/src/Lib/Script/Ast/IrExpression.cc @@ -312,15 +312,49 @@ namespace Vivy::Script IrELogicOp::OpType IrELogicOp::getOpFromToken(Token tok) { + if (tok.isSimple(TOKEN_AND)) + return IrELogicOp::OpType::And; + else if (tok.isSimple(TOKEN_OR)) + return IrELogicOp::OpType::Or; + // else if (tok.isSimple(TOKEN_XOR)) + // return IrELogicOp::OpType::Xor; + else + throw std::runtime_error(tok.location().toString() + ": Not a LogicOp"); } IrECompOp::OpType IrECompOp::getOpFromToken(Token tok) { + if (tok.isSimple(TOKEN_LE)) + return IrECompOp::OpType::LE; + else if (tok.isSimple(TOKEN_LT)) + return IrECompOp::OpType::LT; + else if (tok.isSimple(TOKEN_GE)) + return IrECompOp::OpType::GE; + else if (tok.isSimple(TOKEN_GT)) + return IrECompOp::OpType::GT; + else if (tok.isSimple(TOKEN_EQ)) + return IrECompOp::OpType::EQ; + else if (tok.isSimple(TOKEN_NEQ)) + return IrECompOp::OpType::NEQ; + else + throw std::runtime_error(tok.location().toString() + ": Not a CompOp"); } IrEArithmeticOp::OpType IrEArithmeticOp::getOpFromToken(Token tok) { + if (tok.isSimple(TOKEN_PLUS)) + return IrEArithmeticOp::OpType::Add; + else if (tok.isSimple(TOKEN_MINUS)) + return IrEArithmeticOp::OpType::Sub; + else if (tok.isSimple(TOKEN_TIMES)) + return IrEArithmeticOp::OpType::Mul; + else if (tok.isSimple(TOKEN_DIV)) + return IrEArithmeticOp::OpType::Div; + else if (tok.isSimple(TOKEN_MOD)) + return IrEArithmeticOp::OpType::Mod; + else + throw std::runtime_error(tok.location().toString() + ": Not a ArithmeticOp"); } }