diff --git a/lib/metamorpher/drivers/ruby.rb b/lib/metamorpher/drivers/ruby.rb
index <HASH>..<HASH> 100644
--- a/lib/metamorpher/drivers/ruby.rb
+++ b/lib/metamorpher/drivers/ruby.rb
@@ -59,7 +59,7 @@ module Metamorpher
         # omitting a necessary keyword. Note that these are the symbols produced
         # by Parser which are not necessarily the same as Ruby keywords (e.g.,
         # Parser sometimes produces a :zsuper node for a program of the form "super")
-        @keywords ||= %i(nil false true self array)
+        @keywords ||= %i(nil false true self array hash)
       end
 
       def ast_for(literal)
diff --git a/spec/unit/drivers/ruby_spec.rb b/spec/unit/drivers/ruby_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/unit/drivers/ruby_spec.rb
+++ b/spec/unit/drivers/ruby_spec.rb
@@ -87,7 +87,7 @@ module Metamorpher
         end
       end
 
-      { "[]" => :array }.each do |ruby_literal, type|
+      { "[]" => :array, "{}" => :hash }.each do |ruby_literal, type|
         describe "for a program containing the '#{ruby_literal}' Ruby literal" do
           let(:source)  { "a = #{ruby_literal}" }
           let(:metamorpher_literal) { builder.lvasgn(:a, type) }
Fix bug in unparsing Ruby code with {} literal.