summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2016-12-01 14:37:59 +0900
committerNobuyoshi Nakada <[email protected]>2016-12-01 16:48:43 +0900
commit0f08914ac0d433545a4224ee1c3f8d3eb8d51e68 (patch)
tree1b950421591cbd447d61f498c6028fa443b19c38 /mrbgems
parentfed40b44b8ec56c977b85be65ff460dcf713dc3c (diff)
downloadmruby-0f08914ac0d433545a4224ee1c3f8d3eb8d51e68.tar.gz
mruby-0f08914ac0d433545a4224ee1c3f8d3eb8d51e68.zip
Support multiple elements \u syntax
Diffstat (limited to 'mrbgems')
-rw-r--r--mrbgems/mruby-compiler/core/parse.y14
1 files changed, 14 insertions, 0 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y
index 65b89bed3..f0c45b85b 100644
--- a/mrbgems/mruby-compiler/core/parse.y
+++ b/mrbgems/mruby-compiler/core/parse.y
@@ -3995,6 +3995,20 @@ parse_string(parser_state *p)
tokadd(p, '\\');
tokadd(p, c);
}
+ else if (c == 'u' && peek(p, '{')) {
+ /* \u{xxxx xxxx xxxx} form */
+ nextc(p);
+ while (1) {
+ do c = nextc(p); while (ISSPACE(c));
+ if (c == '}') break;
+ pushback(p, c);
+ c = read_escape_unicode(p, 8);
+ if (c < 0) break;
+ tokadd(p, -c);
+ }
+ if (hinf)
+ hinf->line_head = FALSE;
+ }
else {
pushback(p, c);
tokadd(p, read_escape(p));