diff --git a/prism/src/parser/visitor/GetAllReferencedProperties.java b/prism/src/parser/visitor/GetAllReferencedProperties.java new file mode 100644 index 00000000..c39caa91 --- /dev/null +++ b/prism/src/parser/visitor/GetAllReferencedProperties.java @@ -0,0 +1,51 @@ +package parser.visitor; + +import java.util.Vector; + +import parser.ast.ExpressionFormula; +import parser.ast.ExpressionLabel; +import parser.ast.ExpressionProp; +import parser.ast.ModulesFile; +import parser.ast.PropertiesFile; +import parser.ast.Property; +import prism.PrismLangException; + +public class GetAllReferencedProperties extends ASTTraverse +{ + private Vector v; + private ModulesFile mf; + private PropertiesFile pf; + + + public GetAllReferencedProperties(Vector v, ModulesFile mf, PropertiesFile pf) + { + this.v = v; + this.mf = mf; + this.pf = pf; + } + + public void visitPost(ExpressionProp e) throws PrismLangException + { + if (!v.contains(e.getName())) { + v.addElement(e.getName()); + } + } + + public void visitPost(ExpressionLabel e) throws PrismLangException + { + String name; + Property prop = null; + // See if identifier corresponds to a property + name = e.getName(); + if (mf != null) { + prop = mf.getPropertyByName(name); + } + if (prop == null && pf != null) { + prop = pf.getPropertyObjectByName(name); + } + if (prop != null) { + // If so, add the name + v.addElement(e.getName()); + } + } +}