+#line 10330 "src/parser.c"
+ }
+#line 453 "src/parser.re"
+
+
+ character: ;
+
+#line 10337 "src/parser.c"
+ {
+ unsigned char yych;
+ if (lim <= cur) if (cur >= lim) goto done;;
+ yych = *cur;
+ switch (yych) {
+ case '\n':
+ case '\r': goto yy602;
+ case '\'': goto yy604;
+ case '\\': goto yy606;
+ default: goto yy600;
+ }
+yy600:
+ ++cur;
+#line 471 "src/parser.re"
+ { escaped = false; goto character; }
+#line 10353 "src/parser.c"
+yy602:
+ ++cur;
+#line 458 "src/parser.re"
+ { NEWLINE(); goto character; }
+#line 10358 "src/parser.c"
+yy604:
+ ++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 10373 "src/parser.c"
+yy606:
+ ++cur;
+#line 459 "src/parser.re"
+ { escaped = !escaped; goto character; }
+#line 10378 "src/parser.c"
+ }
+#line 473 "src/parser.re"
+
+
+ string: ;
+
+#line 10385 "src/parser.c"
+ {
+ unsigned char yych;
+ if (lim <= cur) if (cur >= lim) goto done;;
+ yych = *cur;
+ switch (yych) {
+ case '\n':
+ case '\r': goto yy612;
+ case '"': goto yy614;
+ case '\\': goto yy616;
+ default: goto yy610;
+ }
+yy610:
+ ++cur;
+#line 491 "src/parser.re"
+ { escaped = false; goto string; }
+#line 10401 "src/parser.c"
+yy612:
+ ++cur;
+#line 478 "src/parser.re"
+ { NEWLINE(); goto string; }
+#line 10406 "src/parser.c"
+yy614:
+ ++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 10421 "src/parser.c"
+yy616:
+ ++cur;
+#line 479 "src/parser.re"
+ { escaped = !escaped; goto string; }
+#line 10426 "src/parser.c"