From f40462e03f33dd1cf2a1bf36374bb3bce74407f9 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Sun, 13 Feb 2022 21:49:14 +0100 Subject: [PATCH] PARSER: Add the token to operation conversion for expressions --- src/Lib/Script/Ast/IrExpression.cc | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Lib/Script/Ast/IrExpression.cc b/src/Lib/Script/Ast/IrExpression.cc index d7c2ce71..a2b1faf0 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"); } } -- GitLab