From ff44e3a64d527daae6826ed26d019cb15af80f03 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Wed, 19 Mar 2008 13:05:46 +0000 Subject: [PATCH] Bug fix (constants in simulator). git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@694 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/parser/visitor/ToSimulator.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/prism/src/parser/visitor/ToSimulator.java b/prism/src/parser/visitor/ToSimulator.java index 23cb8736..2d6de55a 100644 --- a/prism/src/parser/visitor/ToSimulator.java +++ b/prism/src/parser/visitor/ToSimulator.java @@ -29,6 +29,7 @@ package parser.visitor; import java.util.Hashtable; +import parser.*; import parser.ast.*; import prism.PrismLangException; import simulator.SimulatorEngine; @@ -238,15 +239,21 @@ public class ToSimulator extends ASTTraverseModify public void visitPost(ExpressionConstant e) throws PrismLangException { long ret = -1; + Values v; + // Find Values object containing constant (either from model or properties file) + if (sim.getConstants().getIndexOf(e.getName()) != -1) v = sim.getConstants(); + else if (sim.getPropertyConstants().getIndexOf(e.getName()) != -1) v = sim.getPropertyConstants(); + else throw new PrismLangException("Could not evaluate constant", e); + // Create corresponding literal switch (e.getType()) { case Expression.BOOLEAN: - ret = SimulatorEngine.createBoolean(e.evaluateBoolean(sim.getConstants(), null)); + ret = SimulatorEngine.createBoolean(e.evaluateBoolean(v, null)); break; case Expression.INT: - ret = SimulatorEngine.createInteger(e.evaluateInt(sim.getConstants(), null)); + ret = SimulatorEngine.createInteger(e.evaluateInt(v, null)); break; case Expression.DOUBLE: - ret = SimulatorEngine.createDouble(e.evaluateDouble(sim.getConstants(), null)); + ret = SimulatorEngine.createDouble(e.evaluateDouble(v, null)); break; } setPtr(e, ret);