Browse Source

New EvaluateContextConstants class, just for clarity about where/if variables are needed for evaluation.

accumulation-v4.7
Dave Parker 8 years ago
parent
commit
a96f60c751
  1. 59
      prism/src/parser/EvaluateContextConstants.java
  2. 2
      prism/src/parser/ast/ASTElement.java
  3. 20
      prism/src/parser/ast/Expression.java

59
prism/src/parser/EvaluateContextConstants.java

@ -0,0 +1,59 @@
//==============================================================================
//
// Copyright (c) 2018-
// Authors:
// * Dave Parker <d.a.parker@cs.bham.ac.uk> (University of Birmingham)
//
//------------------------------------------------------------------------------
//
// This file is part of PRISM.
//
// PRISM is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// PRISM is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with PRISM; if not, write to the Free Software Foundation,
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
//==============================================================================
package parser;
/**
* Information required to evaluate an expression, where no variable value info is available.
* Constant values (if needed/present) are stored in a Values object.
*/
public class EvaluateContextConstants implements EvaluateContext
{
private Values constantValues;
public EvaluateContextConstants(Values constantValues)
{
this.constantValues = constantValues;
}
@Override
public Object getConstantValue(String name)
{
if (constantValues == null)
return null;
int i = constantValues.getIndexOf(name);
if (i == -1)
return null;
return constantValues.getValue(i);
}
@Override
public Object getVarValue(String name, int index)
{
// No variable info available
return null;
}
}

2
prism/src/parser/ast/ASTElement.java

@ -304,7 +304,7 @@ public abstract class ASTElement
*/
public ASTElement replaceConstants(Values constantValues) throws PrismLangException
{
return evaluatePartially(new EvaluateContextValues(constantValues, null));
return evaluatePartially(new EvaluateContextConstants(constantValues));
}
/**

20
prism/src/parser/ast/Expression.java

@ -176,7 +176,7 @@ public abstract class Expression extends ASTElement
*/
public Object evaluate() throws PrismLangException
{
return evaluate(new EvaluateContextValues(null, null));
return evaluate(new EvaluateContextConstants(null));
}
/**
@ -186,7 +186,7 @@ public abstract class Expression extends ASTElement
*/
public Object evaluate(Values constantValues) throws PrismLangException
{
return evaluate(new EvaluateContextValues(constantValues, null));
return evaluate(new EvaluateContextConstants(constantValues));
}
/**
@ -268,7 +268,7 @@ public abstract class Expression extends ASTElement
*/
public int evaluateInt() throws PrismLangException
{
return evaluateInt(new EvaluateContextValues(null, null));
return evaluateInt(new EvaluateContextConstants(null));
}
/**
@ -279,7 +279,7 @@ public abstract class Expression extends ASTElement
*/
public int evaluateInt(Values constantValues) throws PrismLangException
{
return evaluateInt(new EvaluateContextValues(constantValues, null));
return evaluateInt(new EvaluateContextConstants(constantValues));
}
/**
@ -372,7 +372,7 @@ public abstract class Expression extends ASTElement
*/
public double evaluateDouble() throws PrismLangException
{
return evaluateDouble(new EvaluateContextValues(null, null));
return evaluateDouble(new EvaluateContextConstants(null));
}
/**
@ -383,7 +383,7 @@ public abstract class Expression extends ASTElement
*/
public double evaluateDouble(Values constantValues) throws PrismLangException
{
return evaluateDouble(new EvaluateContextValues(constantValues, null));
return evaluateDouble(new EvaluateContextConstants(constantValues));
}
/**
@ -467,7 +467,7 @@ public abstract class Expression extends ASTElement
*/
public boolean evaluateBoolean() throws PrismLangException
{
return evaluateBoolean(new EvaluateContextValues(null, null));
return evaluateBoolean(new EvaluateContextConstants(null));
}
/**
@ -478,7 +478,7 @@ public abstract class Expression extends ASTElement
*/
public boolean evaluateBoolean(Values constantValues) throws PrismLangException
{
return evaluateBoolean(new EvaluateContextValues(constantValues, null));
return evaluateBoolean(new EvaluateContextConstants(constantValues));
}
/**
@ -550,7 +550,7 @@ public abstract class Expression extends ASTElement
*/
public BigRational evaluateExact() throws PrismLangException
{
return evaluateExact(new EvaluateContextValues(null, null));
return evaluateExact(new EvaluateContextConstants(null));
}
/**
@ -561,7 +561,7 @@ public abstract class Expression extends ASTElement
*/
public BigRational evaluateExact(Values constantValues) throws PrismLangException
{
return evaluateExact(new EvaluateContextValues(constantValues, null));
return evaluateExact(new EvaluateContextConstants(constantValues));
}
/**

Loading…
Cancel
Save