+#line 10002 "src/parser.c"
+ }
+#line 451 "src/parser.re"
+
+
+ character: ;
+
+#line 10009 "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 469 "src/parser.re"
+ { escaped = false; goto character; }
+#line 10025 "src/parser.c"
+yy604:
+ ++cur;
+#line 456 "src/parser.re"
+ { NEWLINE(); goto character; }
+#line 10030 "src/parser.c"
+yy606:
+ ++cur;
+#line 458 "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 10045 "src/parser.c"
+yy608:
+ ++cur;
+#line 457 "src/parser.re"
+ { escaped = !escaped; goto character; }
+#line 10050 "src/parser.c"
+ }
+#line 471 "src/parser.re"
+
+
+ string: ;
+
+#line 10057 "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 489 "src/parser.re"
+ { escaped = false; goto string; }
+#line 10073 "src/parser.c"
+yy614:
+ ++cur;
+#line 476 "src/parser.re"
+ { NEWLINE(); goto string; }
+#line 10078 "src/parser.c"
+yy616:
+ ++cur;
+#line 478 "src/parser.re"
+ {
+ if (escaped) {
+ escaped = false;
+ goto string;
+ }
+ cur -= 1;
+ NEWTOKEN(PSI_T_QUOTED_STRING);
+ cur += 1;
+ token->flags = char_width;
+ goto start;