Пример #1
0
        public override MemoryEntry Exit(ExitEx exit, MemoryEntry status)
        {
            var end = new ThrowInfo(new CatchBlockDescription(Flow.ProgramEnd, new GenericQualifiedName(), null), status);

            Flow.SetThrowBranching(new[] { end }, true);
            // Exit expression never returns, but it is still expression so it must return something
            return(new MemoryEntry(OutSet.AnyValue));
        }
Пример #2
0
        public override void VisitExitEx(ExitEx x)
        {
            // NOTE: Added by VisitExpressionStmt already
            // NOTE: similar to ThrowEx but unhandleable

            // connect to Exception block
            Connect(_current, this.GetExceptionBlock());    // unreachable
            _current = NewDeadBlock();
        }
Пример #3
0
 public override void VisitExitEx(ExitEx x)
 {
     ConsumeToken(Tokens.T_EXIT, "exit", x.Span.Start);
     VisitElement(x.ResulExpr);
 }
Пример #4
0
 /// <summary>
 /// Visit exit expression.
 /// </summary>
 /// <param name="x"></param>
 virtual public void VisitExitEx(ExitEx x)
 {
     VisitElement(x.ResulExpr);
 }
Пример #5
0
 override public void VisitExitEx(ExitEx x)
 {
     _serializer.StartSerialize(typeof(ExitEx).Name, SerializeSpan(x.Span));
     base.VisitExitEx(x);
     _serializer.EndSerialize();
 }
Пример #6
0
        public override void VisitExitEx(ExitEx x)
        {
            var resultValue = CreateRValue(x.ResulExpr);

            Result(new ExitExPoint(x, resultValue));
        }
Пример #7
0
 /// <inheritdoc />
 public override void VisitExitEx(ExitEx x)
 {
     RValueResult(x);
 }
Пример #8
0
 /// <summary>
 /// Terminates execution of the PHP code. It gives order to analysis to jump at the end of program.
 /// </summary>
 /// <param name="exit"><c>exit</c> expression</param>
 /// <param name="status">Exit status printed if it is string or returned if it is integer</param>
 /// <returns>Anything, return value is ignored</returns>
 public abstract MemoryEntry Exit(ExitEx exit, MemoryEntry status);
Пример #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ExitExPoint" /> class.
 /// </summary>
 /// <param name="exitEx"><c>exit</c> expression</param>
 /// <param name="resultExpression">Program point with exit status</param>
 internal ExitExPoint(ExitEx exitEx, ValuePoint resultExpression)
 {
     Exit             = exitEx;
     ResultExpression = resultExpression;
 }
Пример #10
0
 private static DieExpression ToDieExpression(ExitEx e)
 {
     return(new DieExpression(ToCallSignature(new CallParameter(Parse(e.ResulExpr), ampersand: false, is_unpack: false))));
 }
Пример #11
0
 /// <inheritdoc />
 override public void VisitExitEx(ExitEx x)
 {
     VisitElement(x.ResulExpr);
     result = new ExitEx(x.Position, (Expression)result);
 }