コード例 #1
0
        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.");
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public void VisitGetExpr(GetExpr expr)
 {
     Resolve(expr.Object);
 }
コード例 #4
0
 public string VisitGetExpr(GetExpr expr)
 {
     throw new System.NotImplementedException();
 }