11/* !re2c
22 re2c:case-insensitive = 1;
3- re2c:encoding:utf8 = 1;
4- re2c:encoding-policy = substitute;
53
4+ re2c:sentinel = 255;
65 re2c:define:YYCTYPE = u8;
7- re2c:define:YYPEEK = "if cursor < len { *s.as_bytes().get_unchecked(cursor) } else { 0 }";
6+ re2c:define:YYPEEK = "if cursor < len { *s.as_bytes().get_unchecked(cursor) } else { 255 }";
87 re2c:define:YYSKIP = "cursor += 1;";
98 re2c:define:YYBACKUP = "marker = cursor;";
109 re2c:define:YYRESTORE = "cursor = marker;";
1413 re2c:indent:string = ' ';
1514 re2c:indent:top = 1;
1615
17- wordchar = [^\x00 -\x20];
16+ wordchar = [^\x01 -\x20\xff ];
1817
1918 spacechar = [ \t\v\f\r\n];
2019
21- reg_char = [^\\()\x00 -\x20];
20+ reg_char = [^\\()\x01 -\x20\xff ];
2221
2322 escaped_char = [\\][!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~-];
2423
2827
2928 attributename = [a-zA-Z_:][a-zA-Z0-9:._-]*;
3029
31- unquotedvalue = [^ \t\r\n\v\f"'=<>`\x00 ]+;
32- singlequotedvalue = ['][^'\x00 ]*['];
33- doublequotedvalue = ["][^"\x00 ]*["];
30+ unquotedvalue = [^ \t\r\n\v\f"'=<>`\xff ]+;
31+ singlequotedvalue = ['][^'\xff ]*['];
32+ doublequotedvalue = ["][^"\xff ]*["];
3433
3534 attributevalue = unquotedvalue | singlequotedvalue | doublequotedvalue;
3635
4140 opentag = tagname attribute* spacechar* [/]? [>];
4241 closetag = [/] tagname spacechar* [>];
4342
44- htmlcomment = "--" ([^\x00 -]+ | "-" [^\x00 -] | "--" [^\x00 >])* "-->";
43+ htmlcomment = "--" ([^\xff -]+ | "-" [^\xff -] | "--" [^\xff >])* "-->";
4544
46- processinginstruction = ([^?>\x00 ]+ | [?][^>\x00 ] | [>])+;
45+ processinginstruction = ([^?>\xff ]+ | [?][^>\xff ] | [>])+;
4746
48- declaration = [A-Z]+ spacechar+ [^>\x00 ]*;
47+ declaration = [A-Z]+ spacechar+ [^>\xff ]*;
4948
50- cdata = "CDATA[" ([^\]\x00 ]+ | "]" [^\]\x00 ] | "]]" [^>\x00 ])*;
49+ cdata = "CDATA[" ([^\]\xff ]+ | "]" [^\]\xff ] | "]]" [^>\xff ])*;
5150
5251 htmltag = opentag | closetag;
5352
5453 in_parens_nosp = [(] (reg_char|escaped_char|[\\])* [)];
5554
56- in_double_quotes = ["] (escaped_char|[^"\x00 ])* ["];
57- in_single_quotes = ['] (escaped_char|[^'\x00 ])* ['];
58- in_parens = [(] (escaped_char|[^)\x00 ])* [)];
55+ in_double_quotes = ["] (escaped_char|[^"\xff ])* ["];
56+ in_single_quotes = ['] (escaped_char|[^'\xff ])* ['];
57+ in_parens = [(] (escaped_char|[^)\xff ])* [)];
5958
6059 scheme = [A-Za-z][A-Za-z0-9.+-]{1,31};
6160*/
@@ -85,7 +84,7 @@ pub fn html_block_end_1(s: &str) -> bool {
8584 let mut marker = 0 ;
8685 let len = s.len ();
8786/* !re2c
88- [^\n\x00 ]* [<] [/] ('script'|'pre'|'textarea'|'style') [>] { return true; }
87+ [^\n\xff ]* [<] [/] ('script'|'pre'|'textarea'|'style') [>] { return true; }
8988 * { return false; }
9089*/
9190}
@@ -95,7 +94,7 @@ pub fn html_block_end_2(s: &str) -> bool {
9594 let mut marker = 0 ;
9695 let len = s.len ();
9796/* !re2c
98- [^\n\x00 ]* '-->' { return true; }
97+ [^\n\xff ]* '-->' { return true; }
9998 * { return false; }
10099*/
101100}
@@ -105,7 +104,7 @@ pub fn html_block_end_3(s: &str) -> bool {
105104 let mut marker = 0 ;
106105 let len = s.len ();
107106/* !re2c
108- [^\n\x00 ]* '?>' { return true; }
107+ [^\n\xff ]* '?>' { return true; }
109108 * { return false; }
110109*/
111110}
@@ -115,7 +114,7 @@ pub fn html_block_end_4(s: &str) -> bool {
115114 let mut marker = 0 ;
116115 let len = s.len ();
117116/* !re2c
118- [^\n\x00 ]* '>' { return true; }
117+ [^\n\xff ]* '>' { return true; }
119118 * { return false; }
120119*/
121120}
@@ -125,7 +124,7 @@ pub fn html_block_end_5(s: &str) -> bool {
125124 let mut marker = 0 ;
126125 let len = s.len ();
127126/* !re2c
128- [^\n\x00 ]* ']]>' { return true; }
127+ [^\n\xff ]* ']]>' { return true; }
129128 * { return false; }
130129*/
131130}
@@ -151,8 +150,8 @@ pub fn open_code_fence(s: &str) -> Option<usize> {
151150 let mut ctxmarker = 0 ;
152151 let len = s.len ();
153152/* !re2c
154- [`]{3,} / [^`\r\n\x00 ]*[\r\n] { return Some(cursor); }
155- [~]{3,} / [^\r\n\x00 ]*[\r\n] { return Some(cursor); }
153+ [`]{3,} / [^`\r\n\xff ]*[\r\n] { return Some(cursor); }
154+ [~]{3,} / [^\r\n\xff ]*[\r\n] { return Some(cursor); }
156155 * { return None; }
157156*/
158157}
@@ -215,7 +214,7 @@ pub fn footnote_definition(s: &str) -> Option<usize> {
215214 let mut marker = 0 ;
216215 let len = s.len ();
217216/* !re2c
218- '[^' ([^\] \r\n\x00 \t]+) ']:' [ \t]* { return Some(cursor); }
217+ '[^' ([^\] \r\n\xff \t]+) ']:' [ \t]* { return Some(cursor); }
219218 * { return None; }
220219*/
221220}
@@ -235,7 +234,7 @@ pub fn autolink_uri(s: &str) -> Option<usize> {
235234 let mut marker = 0 ;
236235 let len = s.len ();
237236/* !re2c
238- scheme [:][^\x00 -\x20<>]*[>] { return Some(cursor); }
237+ scheme [:][^\x01 -\x20\xff <>]*[>] { return Some(cursor); }
239238 * { return None; }
240239*/
241240}
@@ -318,9 +317,9 @@ pub fn link_title(s: &str) -> Option<usize> {
318317 let mut marker = 0 ;
319318 let len = s.len ();
320319/* !re2c
321- ["] (escaped_char|[^"\x00 ])* ["] { return Some(cursor); }
322- ['] (escaped_char|[^'\x00 ])* ['] { return Some(cursor); }
323- [(] (escaped_char|[^()\x00 ])* [)] { return Some(cursor); }
320+ ["] (escaped_char|[^"\xff ])* ["] { return Some(cursor); }
321+ ['] (escaped_char|[^'\xff ])* ['] { return Some(cursor); }
322+ [(] (escaped_char|[^()\xff ])* [)] { return Some(cursor); }
324323 * { return None; }
325324*/
326325}
@@ -363,8 +362,8 @@ pub fn ipv6_relaxed_url_start(s: &str) -> Option<usize> {
363362 table_newline = [\r\n];
364363
365364 table_delimiter = (table_spacechar*[:]?[-]+[:]?table_spacechar*);
366- table_cell = (escaped_char|[^\x00 |\r\n])+;
367- table_cell_spoiler = (escaped_char|table_spoiler|[^\x00 |\r\n])+;
365+ table_cell = (escaped_char|[^\xff |\r\n])+;
366+ table_cell_spoiler = (escaped_char|table_spoiler|[^\xff |\r\n])+;
368367
369368*/
370369
@@ -459,14 +458,15 @@ pub fn tasklist(s: &str) -> Option<(usize, u8)> {
459458 let mut marker = 0 ;
460459 let len = s.len ();
461460
462- let t1;
461+ let mut t1;
463462/* !stags:re2c format = 'let mut @@{tag} = 0;'; */
464463
465464/* !local:re2c
466465 re2c:define:YYSTAGP = "@@{tag} = cursor;";
466+ re2c:define:YYSHIFTSTAG = "@@{tag} = (@@{tag} as isize + @@{shift}) as usize;";
467467 re2c:tags = 1;
468468
469- spacechar* [[] @t1 [^\x00 \r\n] [\]] (spacechar | [\x00 ]) {
469+ spacechar* [[] @t1 [^\xff \r\n] [\]] (spacechar | [\xff ]) {
470470 if cursor == len + 1 {
471471 cursor -= 1;
472472 }
0 commit comments