+#line 453 "src/parser.re"
+
+
+ character: ;
+
+#line 10011 "src/parser.c"
+ {
+ unsigned char yych;
+ if (lim <= cur) if (cur >= lim) goto done;;
+ yych = *cur;
+ switch (yych) {
+ case '\n':
+ case '\r': goto yy604;
+ case '\'': goto yy606;
+ case '\\': goto yy608;
+ default: goto yy602;
+ }
+yy602:
+ ++cur;
+#line 471 "src/parser.re"
+ { escaped = false; goto character; }
+#line 10027 "src/parser.c"
+yy604:
+ ++cur;
+#line 458 "src/parser.re"
+ { NEWLINE(); goto character; }
+#line 10032 "src/parser.c"
+yy606:
+ ++cur;
+#line 460 "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 10047 "src/parser.c"
+yy608:
+ ++cur;
+#line 459 "src/parser.re"
+ { escaped = !escaped; goto character; }
+#line 10052 "src/parser.c"
+ }
+#line 473 "src/parser.re"
+
+
+ string: ;
+
+#line 10059 "src/parser.c"
+ {
+ unsigned char yych;
+ if (lim <= cur) if (cur >= lim) goto done;;
+ yych = *cur;
+ switch (yych) {
+ case '\n':
+ case '\r': goto yy614;
+ case '"': goto yy616;
+ case '\\': goto yy618;
+ default: goto yy612;
+ }
+yy612:
+ ++cur;
+#line 491 "src/parser.re"
+ { escaped = false; goto string; }
+#line 10075 "src/parser.c"
+yy614:
+ ++cur;
+#line 478 "src/parser.re"
+ { NEWLINE(); goto string; }
+#line 10080 "src/parser.c"
+yy616:
+ ++cur;
+#line 480 "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 10095 "src/parser.c"
+yy618:
+ ++cur;
+#line 479 "src/parser.re"
+ { escaped = !escaped; goto string; }
+#line 10100 "src/parser.c"
+ }
+#line 493 "src/parser.re"