summaryrefslogtreecommitdiff
path: root/src/thue/program.cr
diff options
context:
space:
mode:
Diffstat (limited to 'src/thue/program.cr')
-rw-r--r--src/thue/program.cr12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/thue/program.cr b/src/thue/program.cr
index c59780b..f449f5a 100644
--- a/src/thue/program.cr
+++ b/src/thue/program.cr
@@ -6,8 +6,16 @@ class Thue::Program
end
def interpret
- something = @parser.parse
- puts something
+ rules, state = @parser.parse
+
+ loop do
+ r = rules.find { |r| r.matches?(state) }
+ break if r.nil?
+
+ state = state.sub(r.pattern, r.replacement)
+ end
+
+ puts state
end
end