public override Expr Visit(AccessorMemberExpr e)
 {
     if (_unboundCollector != null)
     {
         if (e.IsUnbound)
         {
             _unboundCollector(e);
         }
         else
         {
             VisitExpr(e.Left);
         }
     }
     return(e);
 }
Example #2
0
        public RuntimeError CreateAccessorSyntaxError(AccessorExpr e)
        {
            AccessorMemberExpr m = e as AccessorMemberExpr;

            if (m != null)
            {
                if (m.IsUnbound)
                {
                    return(CreateSyntaxError(e, "Undefined in scope: " + m.Name));
                }
                return(CreateSyntaxError(e, "Unknown property: " + m.Name));
            }
            if (e is AccessorIndexerExpr)
            {
                return(CreateSyntaxError(e, "Indexer is not supported."));
            }
            return(CreateSyntaxError(e, "Not a function."));
        }
Example #3
0
        Expr HandleAssign(AccessorExpr left, AccessorExpr leftSource, string unboundName = null)
        {
            Debug.Assert(left != null);
            var location = _parser.Location;

            if (_parser.Match(TokenizerToken.Assign))
            {
                return(new AssignExpr(location, left, Expression(2)));
            }
            if (leftSource == null)
            {
                leftSource = new AccessorMemberExpr(_parser.Location, null, unboundName, false);
            }
            TokenizerToken binaryTokenType = _parser.CurrentToken.FromAssignOperatorToBinary();

            _parser.Forward();
            return(new AssignExpr(location, left, new BinaryExpr(location, leftSource, binaryTokenType, Expression(2))));
        }
Example #4
0
        public virtual Expr Visit(AccessorMemberExpr e)
        {
            Expr lV = e.Left != null?VisitExpr(e.Left) : null;

            return(lV == e.Left ? e : new AccessorMemberExpr(e.Location, lV, e.Name, e.IsStatement));
        }
Example #5
0
 public PExpr Visit(AccessorMemberExpr e) => Run(new AccessorMemberFrame(this, e));
Example #6
0
 internal protected AccessorMemberFrame(EvalVisitor visitor, AccessorMemberExpr e)
     : base(visitor, e)
 {
 }
 public PExpr Visit(AccessorMemberExpr e)
 {
     return(Run(new AccessorMemberFrame(this, e)));
 }