Module: Pegarus::Machine
- Defined in:
- lib/pegarus/machine.rb,
lib/pegarus/machine/state.rb,
lib/pegarus/machine/compiler.rb,
lib/pegarus/machine/interpreter.rb,
lib/pegarus/machine/instructions.rb
Defined Under Namespace
Modules: Instructions Classes: Compiler, State
Class Method Summary collapse
Class Method Details
.execute(program, subject) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/pegarus/machine/interpreter.rb', line 3 def self.execute(program, subject) state = State.new subject _, fail = Instructions[:fail] total = program.size while state.ip < total break if state.fail? width, code = Instructions[program[state.ip]] case width when 1 code[state] when 2 code[state, program[state.ip+1]] when 3 code[state, program[state.ip+1], program[state.ip+2]] end if state.fail? fail[state] else state.ip += width end end return state.failure? ? nil : state.index end |