@Override public ILexLocation defaultPPattern(PPattern node) throws AnalysisException { return node.getLocation(); }
private Boolean alwaysMatches(List<PPattern> plist) throws AnalysisException { for (PPattern p : plist) { if (!p.apply(this)) { return Boolean.FALSE; } } return Boolean.TRUE; }
private static void initPattern(PPattern result, ILexLocation location) { result.setLocation(location); result.setResolved(false); }
private List<ACaseAlternativeStm> readCaseAlternatives() throws ParserException, LexException { List<ACaseAlternativeStm> alts = new Vector<ACaseAlternativeStm>(); List<PPattern> plist = getPatternReader().readPatternList(); checkFor(VDMToken.ARROW, 2236, "Expecting '->' after case pattern list"); PStm result = readStatement(); for (PPattern p : plist) { p.getLocation().executable(true); alts.add(AstFactory.newACaseAlternativeStm(p.clone(), result.clone())); } return alts; }
private List<PPattern> cloneList(LinkedList<PPattern> parameterPatterns) { List<PPattern> r = new LinkedList<PPattern>(); for (PPattern p : parameterPatterns) { r.add(p.clone()); } return r; }
for (PDefinition def : p.getDefinitions()) alwaysMatches = alwaysMatches && p.apply(amVisitor);
@Override public void defaultPPattern(PPattern pattern) throws AnalysisException { pattern.setResolved(false); } }
private AExplicitFunctionDefinition getRelDef(PRelation node, ATypeDefinition typedef, ILexNameToken fname) { ILexLocation loc = node.getLhsPattern().getLocation(); List<PPattern> params = new Vector<PPattern>(); params.add(node.getLhsPattern().clone()); params.add(node.getRhsPattern().clone()); List<List<PPattern>> parameters = new Vector<List<PPattern>>(); parameters.add(params); PTypeList ptypes = getPTypes(typedef); AFunctionType ftype = AstFactory.newAFunctionType(loc, false, ptypes, AstFactory.newABooleanBasicType(loc)); AExplicitFunctionDefinition def = AstFactory.newAExplicitFunctionDefinition(fname, NameScope.GLOBAL, null, ftype, parameters, node.getRelExp(), null, null, false, null); def.setAccess(typedef.getAccess().clone()); // Same as type's def.setClassDefinition(typedef.getClassDefinition()); return def; }
public static List<PMultipleBind> bindListFromPattern(PPattern pattern, PType type) { List<PMultipleBind> bindList = new LinkedList<PMultipleBind>(); ATypeMultipleBind tmBind = new ATypeMultipleBind(); List<PPattern> plist = new LinkedList<PPattern>(); plist.add(pattern.clone()); tmBind.setPlist(plist); tmBind.setType(type.clone()); bindList.add(tmBind); return bindList; }
@Override public void defaultPPattern(PPattern pattern, NewQuestion question) throws AnalysisException { pattern.setResolved(true); } }
public static ATypeMultipleBind newATypeMultipleBind(List<PPattern> plist, PType readType) { ATypeMultipleBind result = new ATypeMultipleBind(); result.setLocation(plist.get(0).getLocation()); result.setPlist(plist); result.setType(readType); return result; }
public AExplicitFunctionDefinition getInvDefinition(AStateDefinition d) { ILexLocation loc = d.getInvPattern().getLocation(); List<PPattern> params = new Vector<PPattern>(); params.add(d.getInvPattern().clone()); List<List<PPattern>> parameters = new Vector<List<PPattern>>(); parameters.add(params); PTypeList ptypes = new PTypeList(); ptypes.add(AstFactory.newAUnresolvedType(d.getName())); AFunctionType ftype = AstFactory.newAFunctionType(loc, false, ptypes, AstFactory.newABooleanBasicType(loc)); return AstFactory.newAExplicitFunctionDefinition(d.getName().getInvName(loc), NameScope.GLOBAL, null, ftype, parameters, d.getInvExpression(), null, null, true, null); }
@Override public List<PMultipleBind> caseATypeBind(ATypeBind bind) throws AnalysisException { List<PPattern> plist = new Vector<PPattern>(); plist.add(bind.getPattern().clone()); List<PMultipleBind> mblist = new Vector<PMultipleBind>(); mblist.add(AstFactory.newATypeMultipleBind(plist, bind.getType().clone())); return mblist; }
public static ASetMultipleBind newASetMultipleBind(List<PPattern> plist, PExp readExpression) { ASetMultipleBind result = new ASetMultipleBind(); result.setLocation(plist.get(0).getLocation()); result.setPlist(plist); result.setSet(readExpression); return result; }
public AExplicitFunctionDefinition getInitDefinition(AStateDefinition d) { ILexLocation loc = d.getInitPattern().getLocation(); List<PPattern> params = new Vector<PPattern>(); params.add(d.getInitPattern().clone()); List<List<PPattern>> parameters = new Vector<List<PPattern>>(); parameters.add(params); PTypeList ptypes = new PTypeList(); ptypes.add(AstFactory.newAUnresolvedType(d.getName())); AFunctionType ftype = AstFactory.newAFunctionType(loc, false, ptypes, AstFactory.newABooleanBasicType(loc)); PExp body = AstFactory.newAStateInitExp(d); AExplicitFunctionDefinition def = AstFactory.newAExplicitFunctionDefinition(d.getName().getInitName(loc), NameScope.GLOBAL, null, ftype, parameters, body, null, null, false, null); return def; }
private List<PMultipleBind> makeBinds() { List<PMultipleBind> result = new LinkedList<PMultipleBind>(); Iterator<PType> types = argtypes.iterator(); for (List<PPattern> params : paramPatternList) { for (PPattern param : params) { ATypeMultipleBind typeBind = new ATypeMultipleBind(); List<PPattern> one = new Vector<PPattern>(); one.add(param.clone()); typeBind.setPlist(one); PType type = types.next(); typeBind.setType(type.clone()); result.add(typeBind); } } return result; }