You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
422 B

module Lox
class Resolver
def initialize(interpreter)
@interpreter = interpreter
@scopes = []
end
def resolve(values)
values.each do
value.accept(self)
end
end
def visit_block(stmt)
with_scope do
resolve(stmt.stmts)
end
nil
end
private
def with_block
@scopes.push({})
yield
@scopes.pop
end
end
end