From 68a2ebd34fc94488e89ffb82b359ec6e7e152ae9 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Thu, 8 Jul 2021 00:14:31 -0700 Subject: Restructure project to make room for clox --- src/com/craftinginterpreters/lox/LoxFunction.java | 52 ----------------------- 1 file changed, 52 deletions(-) delete mode 100644 src/com/craftinginterpreters/lox/LoxFunction.java (limited to 'src/com/craftinginterpreters/lox/LoxFunction.java') diff --git a/src/com/craftinginterpreters/lox/LoxFunction.java b/src/com/craftinginterpreters/lox/LoxFunction.java deleted file mode 100644 index 07dd727..0000000 --- a/src/com/craftinginterpreters/lox/LoxFunction.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.craftinginterpreters.lox; - -import java.util.List; - -class LoxFunction implements LoxCallable { - private final Stmt.Function declaration; - private final Environment closure; - private final boolean isInitializer; - - LoxFunction(Stmt.Function declaration, Environment closure, boolean isInitializer) { - this.isInitializer = isInitializer; - this.closure = closure; - this.declaration = declaration; - } - - LoxFunction bind(LoxInstance instance) { - Environment environment = new Environment(closure); - environment.define("this", instance); - return new LoxFunction(declaration, environment, isInitializer); - } - - @Override - public int arity() { - return declaration.params.size(); - } - - @Override - public Object call(Interpreter interpreter, List arguments) { - Environment environment = new Environment(closure); - - for (int i = 0; i < declaration.params.size(); i++) { - environment.define(declaration.params.get(i).lexeme, arguments.get(i)); - } - - try { - interpreter.executeBlock(declaration.body, environment); - } catch (Return returnValue) { - if (isInitializer) - return closure.getAt(0, "this"); - return returnValue.value; - } - - if (isInitializer) - return closure.getAt(0, "this"); - return null; - } - - @Override - public String toString() { - return ""; - } -} -- cgit v1.2.3-54-g00ecf