コード例 #1
0
 public BlockExprFrame(EvalVisitor evaluator, BlockExpr e)
     : base(evaluator, e)
 {
     foreach (var local in ((BlockExpr)Expr).Locals)
     {
         Visitor.ScopeManager.Register(local);
     }
 }
コード例 #2
0
 public BlockExprFrame( EvalVisitor evaluator, BlockExpr e )
     : base(evaluator, e)
 {
     foreach( var local in ((BlockExpr)Expr).Locals )
     {
         _visitor.ScopeManager.Register( local );
     }
 }
コード例 #3
0
 protected Frame( EvalVisitor visitor, Expr e )
 {
     _visitor = visitor;
     _prev = visitor._currentFrame;
     if( _prev != null ) _prev._next = this;
     else visitor._firstFrame = this;
     visitor._currentFrame = this;
     _expr = e;
 }
コード例 #4
0
 /// <summary>
 /// Resets the current execution. This frees the <see cref="ScriptEngine"/>: new calls to its <see cref="G:ScriptEngine.Execute"/> can be made.
 /// </summary>
 public void Dispose()
 {
     if (_visitor != null)
     {
         _engine.StopExecution();
         _error   = null;
         _result  = null;
         _status  = ScriptEngineStatus.None;
         _visitor = null;
     }
 }
コード例 #5
0
            internal protected AccessorCallFrame(EvalVisitor visitor, AccessorCallExpr e)
                : base(visitor, e)
            {
                var declaredFunc = Expr.DeclaredFunctions;

                if (declaredFunc != null)
                {
                    foreach (var df in declaredFunc)
                    {
                        Visitor.ScopeManager.Register(df);
                    }
                }
            }
コード例 #6
0
 protected Frame(EvalVisitor visitor, Expr e)
 {
     Visitor = visitor;
     _prev   = visitor._currentFrame;
     if (_prev != null)
     {
         _prev._next = this;
     }
     else
     {
         visitor._firstFrame = this;
     }
     visitor._currentFrame = this;
     _expr = e;
 }
コード例 #7
0
 internal protected AccessorMemberFrame(EvalVisitor visitor, AccessorMemberExpr e)
     : base(visitor, e)
 {
 }
コード例 #8
0
 public PrePostIncDecExprFrame(EvalVisitor evaluator, PrePostIncDecExpr e)
     : base(evaluator, e)
 {
 }
コード例 #9
0
ファイル: PExpr.cs プロジェクト: dopeldead/yodii-script
 internal PExpr( EvalVisitor.Frame pending, DeferredKind status )
     : this(pending, null, status)
 {
 }
コード例 #10
0
 public IfExprFrame(EvalVisitor evaluator, IfExpr e)
     : base(evaluator, e)
 {
 }
コード例 #11
0
 public WithExprFrame(EvalVisitor evaluator, WithExpr e)
     : base(evaluator, e)
 {
 }
コード例 #12
0
 public WhileExprFrame(EvalVisitor evaluator, WhileExpr e)
     : base(evaluator, e)
 {
 }
コード例 #13
0
ファイル: PExpr.cs プロジェクト: dopeldead/yodii-script
 PExpr( EvalVisitor.Frame pending, RuntimeObj resultOrSignal, DeferredKind status )
 {
     Frame = pending;
     Result = resultOrSignal;
     DeferredStatus = status;
 }
コード例 #14
0
 internal Result(ScriptEngine e)
 {
     _engine  = e;
     _visitor = e._visitor;
 }
コード例 #15
0
 /// <summary>
 /// Initializes a new <see cref="ScriptEngine"/>, optionally bound to an existing <see cref="GlobalContext"/>.
 /// </summary>
 /// <param name="ctx">Optional global context to use.</param>
 /// <param name="breakPointManager">Optional <see cref="BreakpointManager"/> instance to use.</param>
 /// <param name="scopeManager">Optional <see cref="DynamicScope"/> to use.</param>
 public ScriptEngine(GlobalContext ctx = null, BreakpointManager breakPointManager = null, DynamicScope scopeManager = null)
 {
     _breakpoints   = breakPointManager ?? new BreakpointManager();
     _globalContext = ctx ?? new GlobalContext();
     _visitor       = new EvalVisitor(_globalContext, _breakpoints.MustBreak, scopeManager);
 }
コード例 #16
0
        /// <summary>
        /// Simple static helper to evaluate an expression (typically a pure expression without side effects).
        /// </summary>
        /// <param name="e">The expression to evaluate.</param>
        /// <param name="ctx">The <see cref="GlobalContext"/>. When null, a new default GlobalContext is used.</param>
        /// <returns>The result of the evaluation.</returns>
        public static RuntimeObj Evaluate(Expr e, GlobalContext ctx = null)
        {
            EvalVisitor v = new EvalVisitor(ctx ?? new GlobalContext());

            return(v.VisitExpr(e).Result);
        }
コード例 #17
0
 public FlowBreakingExprFrame(EvalVisitor evaluator, FlowBreakingExpr e)
     : base(evaluator, e)
 {
 }
コード例 #18
0
 internal Result( ScriptEngine e )
 {
     _engine = e;
     _visitor = e._visitor;
 }
コード例 #19
0
 /// <summary>
 /// Resets the current execution. This frees the <see cref="ScriptEngine"/>: new calls to its <see cref="G:ScriptEngine.Execute"/> can be made. 
 /// </summary>
 public void Dispose()
 {
     if( _visitor != null )
     {
         _engine.StopExecution();
         _error = null;
         _result = null;
         _status = ScriptEngineStatus.None;
         _visitor = null;
     }
 }
コード例 #20
0
 /// <summary>
 /// Simple static helper to evaluate an expression (typically a pure expression without side effects).
 /// </summary>
 /// <param name="e">The expression to evaluate.</param>
 /// <param name="ctx">The <see cref="GlobalContext"/>. When null, a new default GlobalContext is used.</param>
 /// <returns>The result of the evaluation.</returns>
 public static RuntimeObj Evaluate( Expr e, GlobalContext ctx = null )
 {
     EvalVisitor v = new EvalVisitor( ctx ?? new GlobalContext() );
     return v.VisitExpr( e ).Result;
 }
コード例 #21
0
 /// <summary>
 /// Initializes a new <see cref="ScriptEngine"/>, optionally bound to an existing <see cref="GlobalContext"/>.
 /// </summary>
 /// <param name="ctx">Optional global context to use.</param>
 /// <param name="breakPointManager">Optional <see cref="BreakpointManager"/> instance to use.</param>
 /// <param name="scopeManager">Optional <see cref="DynamicScope"/> to use.</param>
 public ScriptEngine( GlobalContext ctx = null, BreakpointManager breakPointManager = null, DynamicScope scopeManager = null )
 {
     _breakpoints = breakPointManager ?? new BreakpointManager();
     _globalContext = ctx ?? new GlobalContext();
     _visitor = new EvalVisitor( _globalContext, _breakpoints.MustBreak, scopeManager );
 }
コード例 #22
0
 AccessorMemberFrameLookup(EvalVisitor visitor, RuntimeObj o, AccessorMemberFrame f)
     : base(visitor, f.Expr)
 {
     _o = o;
     _f = f;
 }
コード例 #23
0
 public ForeachExprFrame(EvalVisitor evaluator, ForeachExpr e)
     : base(evaluator, e)
 {
 }
コード例 #24
0
 public TryCatchExprFrame(EvalVisitor evaluator, TryCatchExpr e)
     : base(evaluator, e)
 {
 }
コード例 #25
0
 public AssignExprFrame(EvalVisitor evaluator, AssignExpr e)
     : base(evaluator, e)
 {
 }
コード例 #26
0
 public BinaryExprFrame(EvalVisitor evaluator, BinaryExpr e)
     : base(evaluator, e)
 {
 }
コード例 #27
0
 public ListOfExprFrame(EvalVisitor evaluator, ListOfExpr e)
     : base(evaluator, e)
 {
     _statements = new PExpr[e.List.Count];
 }