diff --git a/lib/imbecile/grammar.rb b/lib/imbecile/grammar.rb index 1a6db4e..e1ac614 100644 --- a/lib/imbecile/grammar.rb +++ b/lib/imbecile/grammar.rb @@ -49,7 +49,7 @@ module Imbecile elsif input.slice!(/\Adrop\s+(\S+)\n/) pattern = $1 @tokens << Token.new(nil, pattern, @tokens.size) - elsif input.slice!(/\Arule\s+(\S+)\s+\[(.*?)\] <<\n(.*?)^>>\n/m) + elsif input.slice!(/\A(\S+)\s*:\s*\[(.*?)\] <<\n(.*?)^>>\n/m) rule_name, rule, code = $1, $2, $3 @rules << Rule.new(rule_name, rule, code) else diff --git a/spec/imbecile_spec.rb b/spec/imbecile_spec.rb index 645daac..7424286 100644 --- a/spec/imbecile_spec.rb +++ b/spec/imbecile_spec.rb @@ -31,7 +31,7 @@ token int \\d+ token plus \\+ token times \\* drop \\s+ -rule Start [] << +Start: [] << >> EOF build_parser