# Matches various kinds of string literals # Double-quoted string dqstring -> "\"" dstrchar:* "\"" {% function(d) {return d[1].join(""); } %} sqstring -> "'" sstrchar:* "'" {% function(d) {return d[1].join(""); } %} btstring -> "`" [^`]:* "`" {% function(d) {return d[1].join(""); } %} dstrchar -> [^\\"\n] {% id %} | "\\" strescape {% function(d) { return JSON.parse("\""+d.join("")+"\""); } %} sstrchar -> [^\\'\n] {% id %} | "\\" strescape {% function(d) { return JSON.parse("\""+d.join("")+"\""); } %} | "\\'" {% function(d) {return "'"; } %} strescape -> ["\\/bfnrt] {% id %} | "u" [a-fA-F0-9] [a-fA-F0-9] [a-fA-F0-9] [a-fA-F0-9] {% function(d) { return d.join(""); } %}