public object VisitGetExpr(GetExpr expr) { var obj = Evaluate(expr.Object); if (obj is LoxInstance) { return(((LoxInstance)obj).Get(expr.Name)); } throw new RuntimeError(expr.Name, "Only instances have properties."); }
private Expr Call() { var expr = Primary(); while (true) { if (Match(TokenType.LeftParen)) { expr = FinishCall(expr); } else if (Match(TokenType.Dot)) { var name = Consume(TokenType.Identifier, "Expected property name after '.'."); expr = new GetExpr(expr, name); } else { break; } } return(expr); }
public void VisitGetExpr(GetExpr expr) { Resolve(expr.Object); }
public string VisitGetExpr(GetExpr expr) { throw new System.NotImplementedException(); }