You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.1 KiB
51 lines
1.1 KiB
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<String> v;
|
|
private ModulesFile mf;
|
|
private PropertiesFile pf;
|
|
|
|
|
|
public GetAllReferencedProperties(Vector<String> 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());
|
|
}
|
|
}
|
|
}
|