Inheritance: JoinPattern
コード例 #1
0
ファイル: ZDecompiler.cs プロジェクト: ZingModelChecker/Zing
        private EventPattern VisitEventPattern(EventPattern ep)
        {
            Write("event(");
            this.Visit(ep.ChannelNumber);
            Write(", ");
            this.Visit(ep.MessageType);
            Write(", ");
            this.Visit(ep.Direction);
            Write(")");

            return ep;
        }
コード例 #2
0
ファイル: ZResolver.cs プロジェクト: ZingModelChecker/Zing
        private EventPattern VisitEventPattern(EventPattern ep)
        {
            ep.channelNumber = this.VisitExpression(ep.channelNumber);
            ep.messageType = this.VisitExpression(ep.messageType);
            ep.direction = this.VisitExpression(ep.direction);

            return ep;
        }
コード例 #3
0
ファイル: ZDuplicator.cs プロジェクト: ZingModelChecker/Zing
 private EventPattern VisitEventPattern(EventPattern ep)
 {
     if (ep == null) return null;
     EventPattern result = (EventPattern)ep.Clone();
     result.channelNumber = this.VisitExpression(ep.channelNumber);
     result.messageType = this.VisitExpression(ep.messageType);
     result.direction = this.VisitExpression(ep.direction);
     return result;
 }
コード例 #4
0
ファイル: ZNormalizer.cs プロジェクト: ZingModelChecker/Zing
 private Expression VisitEventPattern(EventPattern ep)
 {
     return (Expression)new Literal(true, SystemTypes.Boolean);
 }
コード例 #5
0
ファイル: ZChecker.cs プロジェクト: ZingModelChecker/Zing
        private EventPattern VisitEventPattern(EventPattern ep)
        {
            if (ep == null) return null;

            if (!currentSelectStatement.visible)
            {
                this.HandleError(ep, Error.InvalidEventPattern);
                return null;
            }

            ep.direction = this.VisitExpression(ep.direction);

            if (ep.direction != null && ep.direction.Type != SystemTypes.Boolean)
            {
                this.HandleError(ep.direction, Error.BooleanExpressionRequired);
                return null;
            }

            ep.channelNumber = this.VisitExpression(ep.channelNumber);

            if (ep.channelNumber != null)
            {
                if (ep.channelNumber.Type == SystemTypes.UInt8)
                {
                    ep.channelNumber = new BinaryExpression(ep.channelNumber, new MemberBinding(null, SystemTypes.Int32),
                        NodeType.Castclass, ep.channelNumber.SourceContext);
                    ep.channelNumber.Type = SystemTypes.Int32;
                }
                else if (ep.channelNumber.Type != SystemTypes.Int32)
                {
                    this.HandleError(ep.channelNumber, Error.IntegerExpressionRequired);
                    return null;
                }
            }

            ep.messageType = this.VisitExpression(ep.messageType);

            if (ep.messageType != null)
            {
                if (ep.messageType.Type == SystemTypes.UInt8)
                {
                    ep.messageType = new BinaryExpression(ep.messageType, new MemberBinding(null, SystemTypes.Int32),
                        NodeType.Castclass, ep.messageType.SourceContext);
                    ep.messageType.Type = SystemTypes.Int32;
                }
                else if (ep.messageType.Type != SystemTypes.Int32)
                {
                    this.HandleError(ep.messageType, Error.IntegerExpressionRequired);
                    return null;
                }
            }
            return ep;
        }