From 539618ccaedfe05d5d62971c8fd0578f5ff3d040 Mon Sep 17 00:00:00 2001 From: Oszkar Semerath Date: Mon, 15 Jul 2019 17:31:00 +0200 Subject: parsing count, min, max, check and eval v1 --- .../viatra2logic/XExpressionExtractor.xtend | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/XExpressionExtractor.xtend (limited to 'Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/XExpressionExtractor.xtend') diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/XExpressionExtractor.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/XExpressionExtractor.xtend new file mode 100644 index 00000000..ea8d0b23 --- /dev/null +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/XExpressionExtractor.xtend @@ -0,0 +1,24 @@ +package hu.bme.mit.inf.dslreasoner.viatra2logic + +import org.eclipse.viatra.query.patternlanguage.emf.specification.XBaseEvaluator +import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator +import org.eclipse.xtext.xbase.XExpression + +class XExpressionExtractor { + def dispatch XExpression extractExpression(XBaseEvaluator evaluator) { evaluator.expression } + def dispatch XExpression extractExpression(IExpressionEvaluator evaluator) { + val clazz = evaluator.class + if(clazz.name == "org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.VariableMappingExpressionEvaluatorWrapper") { + val field = clazz.declaredFields.filter[it.name == "wrapped"].head + if(field === null) { + throw new IllegalArgumentException('''Class «clazz.simpleName» has no field "wrapped"!''') + } else { + field.setAccessible(true); + val wrappedEvaluator = field.get(evaluator) as XBaseEvaluator + return wrappedEvaluator.extractExpression + } + } else { + throw new IllegalArgumentException('''Unsupported expression evaluation form: «clazz.simpleName»!''') + } + } +} \ No newline at end of file -- cgit v1.2.3-70-g09d2