27 lines
751 B
Plaintext
27 lines
751 B
Plaintext
|
# 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("");
|
||
|
}
|
||
|
%}
|