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 --- .../com/craftinginterpreters/lox/LoxInstance.java | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 jlox/src/com/craftinginterpreters/lox/LoxInstance.java (limited to 'jlox/src/com/craftinginterpreters/lox/LoxInstance.java') diff --git a/jlox/src/com/craftinginterpreters/lox/LoxInstance.java b/jlox/src/com/craftinginterpreters/lox/LoxInstance.java new file mode 100644 index 0000000..64989e0 --- /dev/null +++ b/jlox/src/com/craftinginterpreters/lox/LoxInstance.java @@ -0,0 +1,34 @@ +package com.craftinginterpreters.lox; + +import java.util.HashMap; +import java.util.Map; + +class LoxInstance { + private LoxClass klass; + private final Map fields = new HashMap<>(); + + LoxInstance(LoxClass klass) { + this.klass = klass; + } + + Object get(Token name) { + if (fields.containsKey(name.lexeme)) { + return fields.get(name.lexeme); + } + + LoxFunction method = klass.findMethod(name.lexeme); + if (method != null) + return method.bind(this); + + throw new RuntimeError(name, "Undefined proprety '" + name.lexeme + "'."); + } + + void set(Token name, Object value) { + fields.put(name.lexeme, value); + } + + @Override + public String toString() { + return klass.name + " instance"; + } +} -- cgit v1.2.3-54-g00ecf