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