Beispiel #1
0
        public IUnboundExpr AcceptTransformer(IUnboundExprTransformer transformer)
        {
            Condition = Condition.AcceptTransformer(transformer);
            ThenBody  = ThenBody.AcceptTransformer(transformer);
            ElseBody  = (ElseBody == null) ? null : ElseBody.AcceptTransformer(transformer);

            return(transformer.Transform(this));
        }
Beispiel #2
0
        public override void ResolveNames(Scope scope, ErrorHandler errorHandler)
        {
            Condition.ResolveNames(scope, errorHandler);
            var newScope = new Scope(scope, this);

            Body.ResolveNames(newScope, errorHandler);
            ElseBody?.ResolveNames(newScope, errorHandler);
        }
Beispiel #3
0
 public override void CheckTypes(ErrorHandler errorHandler)
 {
     if (!Condition.CanConvertTo(PrimTypeName.BOOL, errorHandler))
     {
         errorHandler.AddMessage(Severity.Error, $"Condition must be a boolean", Token);
     }
     Body.CheckTypes(errorHandler);
     ElseBody?.CheckTypes(errorHandler);
 }
Beispiel #4
0
        public override bool Equals(object other)
        {
            var otherNode = other as IfStmtNode;

            if (null == otherNode)
            {
                return(false);
            }

            return(IfExprNode.Equals(otherNode.IfExprNode) &&
                   otherNode != null && IfBody.SequenceEqual(otherNode.IfBody) &&
                   ElseIfList != null && ElseIfList.SequenceEqual(otherNode.ElseIfList) &&
                   ElseBody != null && ElseBody.SequenceEqual(otherNode.ElseBody));
        }
Beispiel #5
0
 public override void VisitChildren(IVisitor visitor)
 {
     Condition.Visit(visitor);
     IfBody.Visit(visitor);
     ElseBody.Visit(visitor);
 }