parent
0464eb1750
commit
97371d13be
@ -0,0 +1,33 @@
|
|||||||
|
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
|
Loading…
Reference in new issue