public override Expr Visit(AccessorMemberExpr e) { if (_unboundCollector != null) { if (e.IsUnbound) { _unboundCollector(e); } else { VisitExpr(e.Left); } } return(e); }
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.")); }
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)))); }
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)); }
public PExpr Visit(AccessorMemberExpr e) => Run(new AccessorMemberFrame(this, e));
internal protected AccessorMemberFrame(EvalVisitor visitor, AccessorMemberExpr e) : base(visitor, e) { }
public PExpr Visit(AccessorMemberExpr e) { return(Run(new AccessorMemberFrame(this, e))); }