main : (~str)*; str : '([rR])(")'{ meta.string, 1: storage.type.string, 2: string.quoted.double punctuation.definition.string.begin } str-impl ; str-impl{meta.string string.quoted.double} : ( ~`""`{constant.character.escape.double-quote} )* ~( '"'{punctuation.definition.string.end} | '\n'{invalid.illegal.unclosed-string} ) ;