class Basic101::ProgramCounter
Public Class Methods
new(program)
click to toggle source
# File lib/basic101/program_counter.rb, line 7 def initialize(program) @program = program @index = 0 @stack = [] end
Public Instance Methods
current_statement()
click to toggle source
# File lib/basic101/program_counter.rb, line 48 def current_statement @program[@index] end
end?()
click to toggle source
# File lib/basic101/program_counter.rb, line 17 def end? @index >= @program.statement_count end
gosub_line(line_number)
click to toggle source
# File lib/basic101/program_counter.rb, line 33 def gosub_line(line_number) @stack.push @index goto_line line_number end
goto_end()
click to toggle source
# File lib/basic101/program_counter.rb, line 38 def goto_end @index = @program.statement_count + 1 end
goto_index(index)
click to toggle source
# File lib/basic101/program_counter.rb, line 21 def goto_index(index) @index = index end
goto_index_after(index)
click to toggle source
# File lib/basic101/program_counter.rb, line 25 def goto_index_after(index) goto_index(index + 1) end
goto_line(line_number)
click to toggle source
# File lib/basic101/program_counter.rb, line 29 def goto_line(line_number) goto_index @program.index_of_line(line_number) end
goto_next_statement()
click to toggle source
# File lib/basic101/program_counter.rb, line 13 def goto_next_statement @index += 1 end
return()
click to toggle source
# File lib/basic101/program_counter.rb, line 42 def return index = @stack.pop raise ReturnWithoutGosub unless index @index = index end