From acb8dedc9d03e1d17f570e07c9f75a571bd66cf8 Mon Sep 17 00:00:00 2001 From: Aren Babikian Date: Tue, 16 Feb 2021 01:11:15 +0100 Subject: Ready for strategies case study --- .../logic2viatra/patterns/PExpressionGenerator.xtend | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit') diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PExpressionGenerator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PExpressionGenerator.xtend index 62ff92b2..9835356e 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PExpressionGenerator.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PExpressionGenerator.xtend @@ -10,6 +10,8 @@ import org.eclipse.xtext.xbase.XNumberLiteral import org.eclipse.xtext.xbase.XUnaryOperation import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.PrimitiveTypeReference import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealTypeReference +import org.eclipse.xtext.xbase.XIfExpression +import org.eclipse.xtext.xbase.XBlockExpression class PExpressionGenerator { static val N_Base = "org.eclipse.xtext.xbase.lib." @@ -113,4 +115,17 @@ class PExpressionGenerator { def dispatch CharSequence translateExpression(XExpression expression, Map valueName, Map variable2Type) { throw new UnsupportedOperationException('''Unsupported expression in check or eval: «expression.class.name», «expression»"''') } + + def dispatch CharSequence translateExpression(XIfExpression e, Map valueName, Map variable2Type) { + val i = e.^if.translateExpression(valueName,variable2Type) + val t = e.then.translateExpression(valueName,variable2Type) + val el = e.^else.translateExpression(valueName,variable2Type) + + return '''(if(«i»){«t»}else{«el»})''' + } + + def dispatch CharSequence translateExpression(XBlockExpression e, Map valueName, Map variable2Type) { + //Assuming 1-item blocks only + return (e as XBlockExpression).expressions.get(0).translateExpression(valueName,variable2Type) + } } \ No newline at end of file -- cgit v1.2.3-70-g09d2