25 lines
398 B
Ruby
25 lines
398 B
Ruby
require './rlox/environment'
|
|
require './rlox/parse'
|
|
require './rlox/scan'
|
|
|
|
class Executor
|
|
def initialize()
|
|
@env = Environment.global
|
|
@scanner = Scanner.new
|
|
@parser = Parser.new
|
|
end
|
|
|
|
def run(source)
|
|
tokens = @scanner.scan_on(source)
|
|
ast = @parser.parse_on(tokens)
|
|
|
|
ast.each { | stmt |
|
|
stmt.eval(@env)
|
|
}
|
|
end
|
|
|
|
def inc_line()
|
|
@scanner.inc_line
|
|
end
|
|
end
|