   """
   defmacro case(condition, blocks)
 
-  @doc %B"""
+  @doc """
   Execute the given expressions and catch any error, exit
   or throw that may have happened.
 

      rescue: ArgumentError
        IO.puts "Invalid argument given"
      catch: value
        IO.puts "caught #{value}"
      after:
        IO.puts "This is printed regardless if it failed or succeed"
      end

    :erlang.error atom.new(args)
  end

  @doc """
  Handles the sigil %B. It simples returns a binary
  without escaping characters and without interpolations.

  ## Examples

      %B(foo)      #=> "foo"
      %B(f\#{o}o)  #=> "f\\\#{o}o"

  """
  defmacro __B__(string, []) do
    string
  end

  @doc """
  Handles the sigil %b. It returns a binary as if it was double quoted
  string, unescaping characters and replacing interpolations.

  ## Examples

      %b(foo)       #=> "foo"
      %b(f\#{:o}o)  #=> "foo"

  """
  defmacro __b__({ :<<>>, line, pieces }, []) do
    { :<<>>, line, CharList.unescape_tokens(pieces) }
  end

  @doc """
  Handles the sigil %C. It simples returns a char list
  without escaping characters and without interpolations.

  ## Examples

      %C(foo)      #=> 'foo'
      %C(f\#{o}o)  #=> 'f\\\#{o}o'

  """
  defmacro __C__({ :<<>>, _line, [string] }, []) do
    string
  end

  @doc """
  Handles the sigil %c. It returns a char list as if it was single
  quoted string, unescaping characters and replacing interpolations.

  ## Examples

      %c(foo)       #=> 'foo'
      %c(f\#{:o}o)  #=> 'foo'

  """

