""
''
"foo"
'foo'
"foo
bar"
'foo
bar'
"'foo'"
'"bar"'
"$@"
"${foo}"
<< STRING_END
foo
bar
STRING_END
<<   EOF
foo $@
bar
EOF
<< 'EOF'
'single quoted string'
"double quoted string"
EOF
<< "EOF"
foo
bar
EOF
<< STRING_END
# comment
STRING_END
"  # comment  "

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

[
	["string", ["\"\""]],
	["string", ["''"]],
	["string", ["\"foo\""]],
	["string", ["'foo'"]],
	["string", ["\"foo\r\nbar\""]],
	["string", ["'foo\r\nbar'"]],
	["string", ["\"'foo'\""]],
	["string", ["'\"bar\"'"]],
	["string", [
		"\"", ["variable", "$@"], "\""
	]],
	["string", [
		"\"", ["variable", "${foo}"], "\""
	]],
	["operator", "<<"],
	["string", ["STRING_END\r\nfoo\r\nbar\r\nSTRING_END"]],
	["operator", "<<"],
	["string", ["EOF\r\nfoo ", ["variable", "$@"], "\r\nbar\r\nEOF"]],
	["operator", "<<"],
	["string", ["'EOF'\r\n'single quoted string'\r\n\"double quoted string\"\r\nEOF"]],
	["operator", "<<"],
	["string", ["\"EOF\"\r\nfoo\r\nbar\r\nEOF"]],
	["operator", "<<"],
	["string", ["STRING_END\r\n# comment\r\nSTRING_END"]],
	["string", ["\"  # comment  \""]]
]

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

Checks for single-quoted and double-quoted strings.
Also checks for variables in strings.