+#line 455 "src/parser.re"
+
+
+ character: ;
+
+#line 10481 "src/parser.c"
+ {
+ unsigned char yych;
+ if (lim <= cur) if (cur >= lim) goto done;;
+ yych = *cur;
+ switch (yych) {
+ case '\n':
+ case '\r': goto yy624;
+ case '\'': goto yy626;
+ case '\\': goto yy628;
+ default: goto yy622;
+ }
+yy622:
+ ++cur;
+#line 473 "src/parser.re"
+ { escaped = false; goto character; }
+#line 10497 "src/parser.c"
+yy624:
+ ++cur;
+#line 460 "src/parser.re"
+ { NEWLINE(); goto character; }
+#line 10502 "src/parser.c"
+yy626:
+ ++cur;
+#line 462 "src/parser.re"
+ {
+ if (escaped) {
+ escaped = false;
+ goto character;
+ }
+ cur -= 1;
+ NEWTOKEN(PSI_T_QUOTED_CHAR);
+ cur += 1;
+ token->flags = char_width;
+ goto start;
+ }
+#line 10517 "src/parser.c"
+yy628:
+ ++cur;
+#line 461 "src/parser.re"
+ { escaped = !escaped; goto character; }
+#line 10522 "src/parser.c"
+ }
+#line 475 "src/parser.re"
+
+
+ string: ;
+
+#line 10529 "src/parser.c"
+ {
+ unsigned char yych;
+ if (lim <= cur) if (cur >= lim) goto done;;
+ yych = *cur;
+ switch (yych) {
+ case '\n':
+ case '\r': goto yy634;
+ case '"': goto yy636;
+ case '\\': goto yy638;
+ default: goto yy632;
+ }
+yy632:
+ ++cur;
+#line 493 "src/parser.re"
+ { escaped = false; goto string; }
+#line 10545 "src/parser.c"
+yy634:
+ ++cur;
+#line 480 "src/parser.re"
+ { NEWLINE(); goto string; }
+#line 10550 "src/parser.c"
+yy636:
+ ++cur;
+#line 482 "src/parser.re"
+ {
+ if (escaped) {
+ escaped = false;
+ goto string;
+ }
+ cur -= 1;
+ NEWTOKEN(PSI_T_QUOTED_STRING);
+ cur += 1;
+ token->flags = char_width;
+ goto start;
+ }
+#line 10565 "src/parser.c"
+yy638:
+ ++cur;
+#line 481 "src/parser.re"
+ { escaped = !escaped; goto string; }
+#line 10570 "src/parser.c"
+ }
+#line 495 "src/parser.re"