Search in sources :

Example 26 with Expr

use of com.rockwellcollins.atc.agree.agree.Expr in project AGREE by loonwerks.

the class ArraySubExprImpl method basicSetIndex.

/**
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public NotificationChain basicSetIndex(Expr newIndex, NotificationChain msgs) {
    Expr oldIndex = index;
    index = newIndex;
    if (eNotificationRequired()) {
        ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AgreePackage.ARRAY_SUB_EXPR__INDEX, oldIndex, newIndex);
        if (msgs == null)
            msgs = notification;
        else
            msgs.add(notification);
    }
    return msgs;
}
Also used : ArraySubExpr(com.rockwellcollins.atc.agree.agree.ArraySubExpr) Expr(com.rockwellcollins.atc.agree.agree.Expr) ENotificationImpl(org.eclipse.emf.ecore.impl.ENotificationImpl)

Example 27 with Expr

use of com.rockwellcollins.atc.agree.agree.Expr in project AGREE by loonwerks.

the class AssignStatementImpl method basicSetExpr.

/**
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public NotificationChain basicSetExpr(Expr newExpr, NotificationChain msgs) {
    Expr oldExpr = expr;
    expr = newExpr;
    if (eNotificationRequired()) {
        ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AgreePackage.ASSIGN_STATEMENT__EXPR, oldExpr, newExpr);
        if (msgs == null)
            msgs = notification;
        else
            msgs.add(notification);
    }
    return msgs;
}
Also used : Expr(com.rockwellcollins.atc.agree.agree.Expr) ENotificationImpl(org.eclipse.emf.ecore.impl.ENotificationImpl)

Example 28 with Expr

use of com.rockwellcollins.atc.agree.agree.Expr in project AGREE by loonwerks.

the class AgreeValidator method checkSporadicStatement.

@Check(CheckType.FAST)
public void checkSporadicStatement(SporadicStatement statement) {
    Expr event = statement.getEvent();
    Expr jitter = statement.getJitter();
    Expr iat = statement.getIat();
    checkExprIsIdentifier(event);
    TypeDef eventType = AgreeTypeSystem.infer(event);
    if (!AgreeTypeSystem.typesEqual(AgreeTypeSystem.Prim.BoolTypeDef, eventType)) {
        error(event, "Expression is of type '" + eventType + "' but must be of type 'bool'");
    }
    if (jitter != null) {
        if (!(jitter instanceof RealLitExpr || isTimingConst(jitter))) {
            error(jitter, "The specified jitter must be a real literal");
        } else {
            Double val = getRealConstVal(jitter);
            if (val < 0) {
                error(jitter, "The specified jitter must be positive");
            }
        }
    }
    if (!(iat instanceof RealLitExpr || isTimingConst(iat))) {
        error(iat, "The specified interarrival time must be a real literal");
    } else {
        Double val = getRealConstVal(iat);
        if (val < 0) {
            error(iat, "The specified interarrival time must be positive");
        }
    }
}
Also used : EnumLitExpr(com.rockwellcollins.atc.agree.agree.EnumLitExpr) IndicesExpr(com.rockwellcollins.atc.agree.agree.IndicesExpr) TimeRiseExpr(com.rockwellcollins.atc.agree.agree.TimeRiseExpr) FlatmapExpr(com.rockwellcollins.atc.agree.agree.FlatmapExpr) TimeFallExpr(com.rockwellcollins.atc.agree.agree.TimeFallExpr) RealLitExpr(com.rockwellcollins.atc.agree.agree.RealLitExpr) GetPropertyExpr(com.rockwellcollins.atc.agree.agree.GetPropertyExpr) TimeOfExpr(com.rockwellcollins.atc.agree.agree.TimeOfExpr) PrevExpr(com.rockwellcollins.atc.agree.agree.PrevExpr) FoldRightExpr(com.rockwellcollins.atc.agree.agree.FoldRightExpr) TagExpr(com.rockwellcollins.atc.agree.agree.TagExpr) EventExpr(com.rockwellcollins.atc.agree.agree.EventExpr) LatchedExpr(com.rockwellcollins.atc.agree.agree.LatchedExpr) NamedElmExpr(com.rockwellcollins.atc.agree.agree.NamedElmExpr) SelectionExpr(com.rockwellcollins.atc.agree.agree.SelectionExpr) IfThenElseExpr(com.rockwellcollins.atc.agree.agree.IfThenElseExpr) ArraySubExpr(com.rockwellcollins.atc.agree.agree.ArraySubExpr) PreExpr(com.rockwellcollins.atc.agree.agree.PreExpr) RecordLitExpr(com.rockwellcollins.atc.agree.agree.RecordLitExpr) BinaryExpr(com.rockwellcollins.atc.agree.agree.BinaryExpr) UnaryExpr(com.rockwellcollins.atc.agree.agree.UnaryExpr) ExistsExpr(com.rockwellcollins.atc.agree.agree.ExistsExpr) FoldLeftExpr(com.rockwellcollins.atc.agree.agree.FoldLeftExpr) RecordUpdateExpr(com.rockwellcollins.atc.agree.agree.RecordUpdateExpr) ForallExpr(com.rockwellcollins.atc.agree.agree.ForallExpr) Expr(com.rockwellcollins.atc.agree.agree.Expr) ArrayUpdateExpr(com.rockwellcollins.atc.agree.agree.ArrayUpdateExpr) BoolLitExpr(com.rockwellcollins.atc.agree.agree.BoolLitExpr) NodeBodyExpr(com.rockwellcollins.atc.agree.agree.NodeBodyExpr) IntLitExpr(com.rockwellcollins.atc.agree.agree.IntLitExpr) CallExpr(com.rockwellcollins.atc.agree.agree.CallExpr) ArrayLiteralExpr(com.rockwellcollins.atc.agree.agree.ArrayLiteralExpr) AgreeTypeSystem.nameOfTypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.nameOfTypeDef) ArrayTypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.ArrayTypeDef) RecordTypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.RecordTypeDef) TypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.TypeDef) RealLitExpr(com.rockwellcollins.atc.agree.agree.RealLitExpr) Check(org.eclipse.xtext.validation.Check)

Example 29 with Expr

use of com.rockwellcollins.atc.agree.agree.Expr in project AGREE by loonwerks.

the class AgreeValidator method checkArraySubExpr.

@Check(CheckType.FAST)
public void checkArraySubExpr(ArraySubExpr asub) {
    Expr arrExp = asub.getExpr();
    checkTypeExists(arrExp);
    TypeDef arrType = AgreeTypeSystem.infer(arrExp);
    Expr index = asub.getIndex();
    checkTypeExists(index);
    TypeDef indexType = AgreeTypeSystem.infer(index);
    if (!AgreeTypeSystem.typesEqual(indexType, AgreeTypeSystem.Prim.IntTypeDef)) {
        error(index, "index must be an int");
    }
    if (arrType instanceof ArrayTypeDef) {
        ArrayTypeDef arrayTypeDef = (ArrayTypeDef) arrType;
        int arraySize = arrayTypeDef.size;
        BigInteger indexValue = evaluateIndexExpr(index);
        if (indexValue != null) {
            if (!(indexValue.compareTo(BigInteger.ONE) >= 0 && indexValue.compareTo(BigInteger.valueOf(arraySize)) <= 0)) {
                error(index, "Index value " + indexValue + " is out of array bounds [1 .. " + arraySize + "]");
            }
        } else {
            warning(index, "Could not statically compute array index value");
        }
    } else {
        error(arrExp, "expression must evaluate to an array");
    }
}
Also used : ArrayTypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.ArrayTypeDef) EnumLitExpr(com.rockwellcollins.atc.agree.agree.EnumLitExpr) IndicesExpr(com.rockwellcollins.atc.agree.agree.IndicesExpr) TimeRiseExpr(com.rockwellcollins.atc.agree.agree.TimeRiseExpr) FlatmapExpr(com.rockwellcollins.atc.agree.agree.FlatmapExpr) TimeFallExpr(com.rockwellcollins.atc.agree.agree.TimeFallExpr) RealLitExpr(com.rockwellcollins.atc.agree.agree.RealLitExpr) GetPropertyExpr(com.rockwellcollins.atc.agree.agree.GetPropertyExpr) TimeOfExpr(com.rockwellcollins.atc.agree.agree.TimeOfExpr) PrevExpr(com.rockwellcollins.atc.agree.agree.PrevExpr) FoldRightExpr(com.rockwellcollins.atc.agree.agree.FoldRightExpr) TagExpr(com.rockwellcollins.atc.agree.agree.TagExpr) EventExpr(com.rockwellcollins.atc.agree.agree.EventExpr) LatchedExpr(com.rockwellcollins.atc.agree.agree.LatchedExpr) NamedElmExpr(com.rockwellcollins.atc.agree.agree.NamedElmExpr) SelectionExpr(com.rockwellcollins.atc.agree.agree.SelectionExpr) IfThenElseExpr(com.rockwellcollins.atc.agree.agree.IfThenElseExpr) ArraySubExpr(com.rockwellcollins.atc.agree.agree.ArraySubExpr) PreExpr(com.rockwellcollins.atc.agree.agree.PreExpr) RecordLitExpr(com.rockwellcollins.atc.agree.agree.RecordLitExpr) BinaryExpr(com.rockwellcollins.atc.agree.agree.BinaryExpr) UnaryExpr(com.rockwellcollins.atc.agree.agree.UnaryExpr) ExistsExpr(com.rockwellcollins.atc.agree.agree.ExistsExpr) FoldLeftExpr(com.rockwellcollins.atc.agree.agree.FoldLeftExpr) RecordUpdateExpr(com.rockwellcollins.atc.agree.agree.RecordUpdateExpr) ForallExpr(com.rockwellcollins.atc.agree.agree.ForallExpr) Expr(com.rockwellcollins.atc.agree.agree.Expr) ArrayUpdateExpr(com.rockwellcollins.atc.agree.agree.ArrayUpdateExpr) BoolLitExpr(com.rockwellcollins.atc.agree.agree.BoolLitExpr) NodeBodyExpr(com.rockwellcollins.atc.agree.agree.NodeBodyExpr) IntLitExpr(com.rockwellcollins.atc.agree.agree.IntLitExpr) CallExpr(com.rockwellcollins.atc.agree.agree.CallExpr) ArrayLiteralExpr(com.rockwellcollins.atc.agree.agree.ArrayLiteralExpr) AgreeTypeSystem.nameOfTypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.nameOfTypeDef) ArrayTypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.ArrayTypeDef) RecordTypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.RecordTypeDef) TypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.TypeDef) BigInteger(java.math.BigInteger) Check(org.eclipse.xtext.validation.Check)

Example 30 with Expr

use of com.rockwellcollins.atc.agree.agree.Expr in project AGREE by loonwerks.

the class AgreeValidator method checkWheneverImpliesStatement.

@Check(CheckType.FAST)
public void checkWheneverImpliesStatement(WheneverImpliesStatement whenever) {
    Expr cause = whenever.getCause();
    Expr lhs = whenever.getLhs();
    Expr rhs = whenever.getRhs();
    checkExprIsIdentifier(cause);
    checkExprIsIdentifier(lhs);
    checkExprIsIdentifier(rhs);
    TypeDef type = AgreeTypeSystem.infer(cause);
    if (!AgreeTypeSystem.typesEqual(AgreeTypeSystem.Prim.BoolTypeDef, type)) {
        error(cause, "The cause of the 'whenever' statement is of type '" + type + "' " + "but must be of type 'bool'");
    }
    type = AgreeTypeSystem.infer(lhs);
    if (!AgreeTypeSystem.typesEqual(AgreeTypeSystem.Prim.BoolTypeDef, type)) {
        error(lhs, "The left hand side of the 'implies' of the 'whenever' statement is of type '" + type + "' " + "but must be of type 'bool'");
    }
    type = AgreeTypeSystem.infer(rhs);
    if (!AgreeTypeSystem.typesEqual(AgreeTypeSystem.Prim.BoolTypeDef, type)) {
        error(lhs, "The rhs hand side of the 'implies' of the 'whenever' statement is of type '" + type + "' " + "but must be of type 'bool'");
    }
}
Also used : EnumLitExpr(com.rockwellcollins.atc.agree.agree.EnumLitExpr) IndicesExpr(com.rockwellcollins.atc.agree.agree.IndicesExpr) TimeRiseExpr(com.rockwellcollins.atc.agree.agree.TimeRiseExpr) FlatmapExpr(com.rockwellcollins.atc.agree.agree.FlatmapExpr) TimeFallExpr(com.rockwellcollins.atc.agree.agree.TimeFallExpr) RealLitExpr(com.rockwellcollins.atc.agree.agree.RealLitExpr) GetPropertyExpr(com.rockwellcollins.atc.agree.agree.GetPropertyExpr) TimeOfExpr(com.rockwellcollins.atc.agree.agree.TimeOfExpr) PrevExpr(com.rockwellcollins.atc.agree.agree.PrevExpr) FoldRightExpr(com.rockwellcollins.atc.agree.agree.FoldRightExpr) TagExpr(com.rockwellcollins.atc.agree.agree.TagExpr) EventExpr(com.rockwellcollins.atc.agree.agree.EventExpr) LatchedExpr(com.rockwellcollins.atc.agree.agree.LatchedExpr) NamedElmExpr(com.rockwellcollins.atc.agree.agree.NamedElmExpr) SelectionExpr(com.rockwellcollins.atc.agree.agree.SelectionExpr) IfThenElseExpr(com.rockwellcollins.atc.agree.agree.IfThenElseExpr) ArraySubExpr(com.rockwellcollins.atc.agree.agree.ArraySubExpr) PreExpr(com.rockwellcollins.atc.agree.agree.PreExpr) RecordLitExpr(com.rockwellcollins.atc.agree.agree.RecordLitExpr) BinaryExpr(com.rockwellcollins.atc.agree.agree.BinaryExpr) UnaryExpr(com.rockwellcollins.atc.agree.agree.UnaryExpr) ExistsExpr(com.rockwellcollins.atc.agree.agree.ExistsExpr) FoldLeftExpr(com.rockwellcollins.atc.agree.agree.FoldLeftExpr) RecordUpdateExpr(com.rockwellcollins.atc.agree.agree.RecordUpdateExpr) ForallExpr(com.rockwellcollins.atc.agree.agree.ForallExpr) Expr(com.rockwellcollins.atc.agree.agree.Expr) ArrayUpdateExpr(com.rockwellcollins.atc.agree.agree.ArrayUpdateExpr) BoolLitExpr(com.rockwellcollins.atc.agree.agree.BoolLitExpr) NodeBodyExpr(com.rockwellcollins.atc.agree.agree.NodeBodyExpr) IntLitExpr(com.rockwellcollins.atc.agree.agree.IntLitExpr) CallExpr(com.rockwellcollins.atc.agree.agree.CallExpr) ArrayLiteralExpr(com.rockwellcollins.atc.agree.agree.ArrayLiteralExpr) AgreeTypeSystem.nameOfTypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.nameOfTypeDef) ArrayTypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.ArrayTypeDef) RecordTypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.RecordTypeDef) TypeDef(com.rockwellcollins.atc.agree.AgreeTypeSystem.TypeDef) Check(org.eclipse.xtext.validation.Check)

Aggregations

Expr (com.rockwellcollins.atc.agree.agree.Expr)103 ENotificationImpl (org.eclipse.emf.ecore.impl.ENotificationImpl)69 BinaryExpr (com.rockwellcollins.atc.agree.agree.BinaryExpr)34 BoolLitExpr (com.rockwellcollins.atc.agree.agree.BoolLitExpr)34 IfThenElseExpr (com.rockwellcollins.atc.agree.agree.IfThenElseExpr)34 NamedElmExpr (com.rockwellcollins.atc.agree.agree.NamedElmExpr)34 RealLitExpr (com.rockwellcollins.atc.agree.agree.RealLitExpr)34 UnaryExpr (com.rockwellcollins.atc.agree.agree.UnaryExpr)34 IntLitExpr (com.rockwellcollins.atc.agree.agree.IntLitExpr)33 EventExpr (com.rockwellcollins.atc.agree.agree.EventExpr)32 PreExpr (com.rockwellcollins.atc.agree.agree.PreExpr)32 SelectionExpr (com.rockwellcollins.atc.agree.agree.SelectionExpr)32 CallExpr (com.rockwellcollins.atc.agree.agree.CallExpr)31 EnumLitExpr (com.rockwellcollins.atc.agree.agree.EnumLitExpr)31 NodeBodyExpr (com.rockwellcollins.atc.agree.agree.NodeBodyExpr)31 PrevExpr (com.rockwellcollins.atc.agree.agree.PrevExpr)31 RecordLitExpr (com.rockwellcollins.atc.agree.agree.RecordLitExpr)31 FoldLeftExpr (com.rockwellcollins.atc.agree.agree.FoldLeftExpr)30 FoldRightExpr (com.rockwellcollins.atc.agree.agree.FoldRightExpr)30 ArraySubExpr (com.rockwellcollins.atc.agree.agree.ArraySubExpr)29