11.3.2
change zmwtlonpqnwxrxoxtzmkunvyvwpqpwnn
commit ae6864408fd5110e35538c332daa6540d559af14
author Alpha Chen <alpha@kejadlen.dev>
date
parent txylvlqy
diff --git a/ruby/lib/lox/resolver.rb b/ruby/lib/lox/resolver.rb
index 1321adf..fdd385a 100644
--- a/ruby/lib/lox/resolver.rb
+++ b/ruby/lib/lox/resolver.rb
@@ -7,7 +7,7 @@ module Lox
       @scopes = []
     end
 
-    def resolve(values)
+    def resolve(*values)
       values.each do
         value.accept(self)
       end
@@ -15,11 +15,18 @@ module Lox
 
     def visit_block(stmt)
       with_scope do
-        resolve(stmt.stmts)
+        resolve(*stmt.stmts)
       end
       nil
     end
 
+    def visit_var(stmt)
+      declare(stmt.name)
+      resolve(stmt.initializer) if stmt.initializer
+      define(stmt.name)
+      nil
+    end
+
     private
 
     def with_block
@@ -28,6 +35,19 @@ module Lox
       @scopes.pop
     end
 
+    def declare(name)
+      scope = @scopes.last
+      return if scope.nil?
+
+      scope[name.lexeme] = false
+    end
+
+    def define(name)
+      scope = @scopes.last
+      return if scope.nil?
+
+      scopes[name.lexeme] = true
+    end
 
   end
 end