grammar example { #= `grammar` is Raku's construct for writing parsers
token str-open { \" } # A practical parser might support other delims
token str-close { \" } # including paired (balanced) quotes like “ and ”
token code-open { \{ } # Assume interpolations are written like { ... }
token code-close { \} }
token string { <.str-open> <str-content> <.str-open> }
rule interp { <.code-open> <code-content> <.code-close> } # `rule` automatically
# handles whitespace
token str-content { [ <interp> | <!str-close> . ]* }
rule code-content { [ <string> | <!code-close> . ]* }
}
say example .parse: rule => 'string',
'"outer string { "interpolated string { "nested interpolated string" } " } "'