From c52851502b5c104df5d8e9b79d354c02c2d6b5f0 Mon Sep 17 00:00:00 2001 From: Gregory Brown Date: Tue, 24 Jan 2012 19:58:20 -0500 Subject: [PATCH] Refactoring of tokenizer / scanner --- lib/turing_tarpit/scanner.rb | 16 +++++++++------- lib/turing_tarpit/tokenizer.rb | 11 ++++------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/turing_tarpit/scanner.rb b/lib/turing_tarpit/scanner.rb index 9680197..772a87a 100644 --- a/lib/turing_tarpit/scanner.rb +++ b/lib/turing_tarpit/scanner.rb @@ -9,12 +9,10 @@ def current_char chars[index] end - def validate_index - raise StopIteration if chars.length == index - end - - def consume + def next_char self.index = index + 1 + + current_char end def jump_forward @@ -25,6 +23,12 @@ def jump_back jump("]", "[", -1) end + def validate_index + raise StopIteration if chars.length == index + end + + private + def jump(from, to, step) counter = 1 until counter == 0 @@ -37,8 +41,6 @@ def jump(from, to, step) end end end - - private attr_accessor :chars, :index end diff --git a/lib/turing_tarpit/tokenizer.rb b/lib/turing_tarpit/tokenizer.rb index e06a6b4..6527c6e 100644 --- a/lib/turing_tarpit/tokenizer.rb +++ b/lib/turing_tarpit/tokenizer.rb @@ -15,23 +15,20 @@ def next(cell_value) when "[" scanner.jump_forward if cell_value.zero? - scanner.consume - element = scanner.current_char + element = scanner.next_char when "]" if cell_value.zero? while element == "]" - scanner.consume - element = scanner.current_char + element = scanner.next_char scanner.validate_index end else scanner.jump_back - scanner.consume - element = scanner.current_char + element = scanner.next_char end end - scanner.consume + scanner.next_char element end