===================================== empty ===================================== "" --- (source (string)) ===================================== single line ===================================== "Hello, 123!" --- (source (string (quoted_content))) ===================================== multiple lines ===================================== "line 1 line 2" --- (source (string (quoted_content))) ===================================== interpolation ===================================== "hey #{name}!" "hey #{ name }!" "##{name}#" --- (source (string (quoted_content) (interpolation (identifier)) (quoted_content)) (string (quoted_content) (interpolation (identifier)) (quoted_content)) (string (quoted_content) (interpolation (identifier)) (quoted_content))) ===================================== nested interpolation ===================================== "this is #{"number #{1}"}!" --- (source (string (quoted_content) (interpolation (string (quoted_content) (interpolation (integer)))) (quoted_content))) ===================================== escape sequence ===================================== "_\"_\n_\t_\r_\e_\\_\1_\x3f_\u0065\u0301_" --- (source (string (quoted_content) (escape_sequence) (quoted_content) (escape_sequence) (quoted_content) (escape_sequence) (quoted_content) (escape_sequence) (quoted_content) (escape_sequence) (quoted_content) (escape_sequence) (quoted_content) (escape_sequence) (quoted_content) (escape_sequence) (quoted_content) (escape_sequence) (escape_sequence) (quoted_content))) ===================================== escaped interpolation ===================================== "\#{1}" --- (source (string (escape_sequence) (quoted_content))) ===================================== heredoc / string ===================================== """ text with "quotes" """ --- (source (string (quoted_content))) ===================================== heredoc / interpolation ===================================== """ hey #{name}! """ --- (source (string (quoted_content) (interpolation (identifier)) (quoted_content))) ===================================== heredoc / nested interpolation ===================================== """ this is #{ """ number #{1} """ }! """ --- (source (string (quoted_content) (interpolation (string (quoted_content) (interpolation (integer)) (quoted_content))) (quoted_content))) ===================================== heredoc / delimiter in the middle ===================================== """ hey """ """ --- (source (string (quoted_content))) ===================================== heredoc / escaped newline (ignored) ===================================== """ hey \ """ """ hey \ """ """ hey \ there """ --- (source (string (quoted_content)) (string (quoted_content)) (string (quoted_content))) ===================================== heredoc / escaped delimiter ===================================== """ \""" """ """ \"\"\" """ --- (source (string (quoted_content) (escape_sequence) (quoted_content)) (string (quoted_content) (escape_sequence) (escape_sequence) (escape_sequence) (quoted_content))) ===================================== heredoc / escaped interpolation ===================================== """ \#{1} """ --- (source (string (quoted_content) (escape_sequence) (quoted_content)))