@Override public LexNameList caseAAssignmentDefinition(AAssignmentDefinition node) throws AnalysisException { return new LexNameList(node.getName()); }
@Override public NameValuePairList caseAAssignmentDefinition( AAssignmentDefinition def, Context initialContext) throws AnalysisException { try { Value v = def.getExpression().apply(VdmRuntime.getExpressionEvaluator(), initialContext); if (!v.isUndefined()) { v = v.convertTo(def.getType(), initialContext); } return new NameValuePairList(new NameValuePair(def.getName(), v.getUpdatable(null))); } catch (AnalysisException e) { if (e instanceof ValueException) { VdmRuntimeError.abort(def.getLocation(), (ValueException) e); } return null; } }
String name = def.getName().getName(); PExp exp = def.getExpression();
private PDefinition readInstanceVariableDefinition() throws ParserException, LexException { LexToken token = lastToken(); if (token.is(VDMToken.INV)) { nextToken(); PExp exp = getExpressionReader().readExpression(); String str = getCurrentModule(); LexNameToken className = new LexNameToken(str, str, token.location); return AstFactory.newAClassInvariantDefinition(className.getInvName(token.location), exp); } else { AAccessSpecifierAccessSpecifier access = readAccessSpecifier(false, false); AAssignmentDefinition def = getStatementReader().readAssignmentDefinition(); AInstanceVariableDefinition ivd = AstFactory.newAInstanceVariableDefinition(def.getName(), def.getType(), def.getExpression()); def.getType().parent(ivd);// the type of ivd is graph but we trough away the assignment ivd.setAccess(access); return ivd; } }