private Stmt ClassDeclaration() { Token name = Consume(TokenType.IDENTIFIER, "Expect class name"); Expr.Variable superclass = null; if (Match(TokenType.LESS)) { Consume(TokenType.IDENTIFIER, "Expect superclass name."); superclass = new Expr.Variable(Previous()); } Consume(TokenType.LEFT_BRACE, "Expect '{' before body."); List <Stmt.Function> methods = new List <Stmt.Function>(); while (!Check(TokenType.RIGHT_BRACE) && !IsAtEnd()) { methods.Add(Function("method")); } Consume(TokenType.RIGHT_BRACE, "Expect '}' after class body."); return(new Stmt.Class(name, superclass, methods)); }
public Class(Token name, Expr.Variable superclass, List <Stmt.Function> methods) { this.name = name; this.superclass = superclass; this.methods = methods; }
public string VisitVariableExpr(Expr.Variable expr) { throw new NotImplementedException(); }