''
""
'foo'
"foo"
'foo\
bar'
"foo\
bar"

"foo #bar"
"foo #{ 42 } bar"
"\#{a + b}"

%!foo #{ 42 }!
%(foo #{ 42 })
%{foo #{ 42 }}
%[foo #{ 42 }]
%<foo #{ 42 }>
%Q!foo #{ 42 }!
%Q(foo #{ 42 })
%Q{foo #{ 42 }}
%Q[foo #{ 42 }]
%Q<foo #{ 42 }>
%I!foo #{ 42 }!
%I(foo #{ 42 })
%I{foo #{ 42 }}
%I[foo #{ 42 }]
%I<foo #{ 42 }>
%W!foo #{ 42 }!
%W(foo #{ 42 })
%W{foo #{ 42 }}
%W[foo #{ 42 }]
%W<foo #{ 42 }>

<<STRING
  foo #{42} bar
STRING
  <<-STRING
    foo #{42} bar
  STRING
  <<~STRING
    foo #{42} bar
  STRING
<<'STRING'
  foo #{42} bar
STRING
  <<-'STRING'
    foo #{42} bar
  STRING
  <<~'STRING'
    foo #{42} bar
  STRING

----------------------------------------------------

[
	["string-literal", [
		["string", "''"]
	]],
	["string-literal", [
		["string", "\"\""]
	]],
	["string-literal", [
		["string", "'foo'"]
	]],
	["string-literal", [
		["string", "\"foo\""]
	]],
	["string-literal", [
		["string", "'foo\\\r\nbar'"]
	]],
	["string-literal", [
		["string", "\"foo\\\r\nbar\""]
	]],

	["string-literal", [
		["string", "\"foo #bar\""]
	]],
	["string-literal", [
		["string", "\"foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", " bar\""]
	]],
	["string-literal", [
		["string", "\"\\#{a + b}\""]
	]],

	["string-literal", [
		["string", "%!foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "!"]
	]],
	["string-literal", [
		["string", "%(foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", ")"]
	]],
	["string-literal", [
		["string", "%{foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "}"]
	]],
	["string-literal", [
		["string", "%[foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "]"]
	]],
	["string-literal", [
		["string", "%<foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", ">"]
	]],
	["string-literal", [
		["string", "%Q!foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "!"]
	]],
	["string-literal", [
		["string", "%Q(foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", ")"]
	]],
	["string-literal", [
		["string", "%Q{foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "}"]
	]],
	["string-literal", [
		["string", "%Q[foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "]"]
	]],
	["string-literal", [
		["string", "%Q<foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", ">"]
	]],
	["string-literal", [
		["string", "%I!foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "!"]
	]],
	["string-literal", [
		["string", "%I(foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", ")"]
	]],
	["string-literal", [
		["string", "%I{foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "}"]
	]],
	["string-literal", [
		["string", "%I[foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "]"]
	]],
	["string-literal", [
		["string", "%I<foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", ">"]
	]],
	["string-literal", [
		["string", "%W!foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "!"]
	]],
	["string-literal", [
		["string", "%W(foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", ")"]
	]],
	["string-literal", [
		["string", "%W{foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "}"]
	]],
	["string-literal", [
		["string", "%W[foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", "]"]
	]],
	["string-literal", [
		["string", "%W<foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", ">"]
	]],

	["string-literal", [
		["delimiter", [
			["punctuation", "<<"],
			["symbol", "STRING"]
		]],
		["string", "\r\n  foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", " bar\r\n"],
		["delimiter", [
			["symbol", "STRING"]
		]]
	]],
	["string-literal", [
		["delimiter", [
			["punctuation", "<<-"],
			["symbol", "STRING"]
		]],
		["string", "\r\n    foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", " bar\r\n  "],
		["delimiter", [
			["symbol", "STRING"]
		]]
	]],
	["string-literal", [
		["delimiter", [
			["punctuation", "<<~"],
			["symbol", "STRING"]
		]],
		["string", "\r\n    foo "],
		["interpolation", [
			["delimiter", "#{"],
			["content", [
				["number", "42"]
			]],
			["delimiter", "}"]
		]],
		["string", " bar\r\n  "],
		["delimiter", [
			["symbol", "STRING"]
		]]
	]],
	["string-literal", [
		["delimiter", [
			["punctuation", "<<'"],
			["symbol", "STRING"],
			["punctuation", "'"]
		]],
		["string", "\r\n  foo #{42} bar\r\n"],
		["delimiter", [
			["symbol", "STRING"]
		]]
	]],
	["string-literal", [
		["delimiter", [
			["punctuation", "<<-'"],
			["symbol", "STRING"],
			["punctuation", "'"]
		]],
		["string", "\r\n    foo #{42} bar\r\n  "],
		["delimiter", [
			["symbol", "STRING"]
		]]
	]],
	["string-literal", [
		["delimiter", [
			["punctuation", "<<~'"],
			["symbol", "STRING"],
			["punctuation", "'"]
		]],
		["string", "\r\n    foo #{42} bar\r\n  "],
		["delimiter", [
			["symbol", "STRING"]
		]]
	]]
]

----------------------------------------------------

Checks for strings and string interpolation.
