From cd9f3bc3f3ecb04eaee42c65880711bd35c7e71b Mon Sep 17 00:00:00 2001 From: Matthew Hall Date: Sat, 3 Sep 2022 16:07:58 +1200 Subject: Able to parse Thue code --- src/thue/rule.cr | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/thue/rule.cr (limited to 'src/thue/rule.cr') diff --git a/src/thue/rule.cr b/src/thue/rule.cr new file mode 100644 index 0000000..34c2396 --- /dev/null +++ b/src/thue/rule.cr @@ -0,0 +1,43 @@ +require "./thue.cr" + +abstract struct Thue::Rule + @pattern : Regex + + def initialize(pattern : String) + @pattern = Regex.new(pattern) + end + + def matches?(str : String) : Bool + str.matches?(@pattern) + end + + abstract def replacement : String +end + +struct Thue::NormalRule < Thue::Rule + def initialize(pattern : String, @replacement : String) + super(pattern) + end + + def replacement : String + @replacement + end +end + +struct Thue::InputRule < Thue::Rule + def replacement : String + gets + end +end + +struct Thue::OutputRule < Thue::Rule + def initialize(pattern : String, @output : String) + super(pattern) + end + + def replacement : String + print @output + return "" + end +end + -- cgit v1.2.1