diff --git a/shell.nix b/shell.nix index d5d3e49..596a9d1 100644 --- a/shell.nix +++ b/shell.nix @@ -17,8 +17,8 @@ pkgs.mkShell { src = fetchFromGitHub { owner = "skvadrik"; repo = "re2c"; - rev = "4fedb068c14c6a7aca023080ab90881af6688ce0"; - hash = "sha256-NgwSUqnCbSNuYJcWvgILhEcf+N0jA4DUNs6QJ4/ORZ0="; + rev = "0e97d4917bcbdb8645cca2288c010b19c959278f"; + hash = "sha256-q7Y68MfUrQZDM1bKleqgOD/P3R7WJY6jjXwFLBiX0V8="; }; }) ]; diff --git a/src/lexer.ml.re b/src/lexer.ml.re index dd42543..13f0f92 100644 --- a/src/lexer.ml.re +++ b/src/lexer.ml.re @@ -324,7 +324,7 @@ let rollback_start_to_newline st = // Used in pretty-printing re2c:YYFN = ["escape_string;string", "st;simple_state", "strbuf;Buffer.t"]; - ^ { st.yystart <- st.yycursor; } + !entry { st.yystart <- st.yycursor; } [\n] { Buffer.add_string strbuf "\\n"; escape_string st strbuf } [\r] { Buffer.add_string strbuf "\\r"; escape_string st strbuf } [\t] { Buffer.add_string strbuf "\\t"; escape_string st strbuf } @@ -358,7 +358,7 @@ let escape_string = function (* Tokenizer *) %{rules:tokenizer_base - ^ { save_start_position st; } + !entry { save_start_position st; } * { malformed_utf8 st } %} @@ -493,7 +493,7 @@ let multiline_contents strbuf = %{local re2c:YYFN = ["string;token", "st;tokenizer_state", "prefix;string"]; - ^ { save_start_position st; } + !entry { save_start_position st; } newline @t1 ws? / newline { newline ~pos:st.t1 st; (* Any newline is normalized to \n *) @@ -566,7 +566,7 @@ let check_hashlen st exp_hashlen = "exp_hashlen;int", "prefix;string"]; - ^ { save_start_position st; } + !entry { save_start_position st; } newline @t1 ws? / newline { newline ~pos:st.t1 st; Buffer.add_char st.info.strbuf '\n'; @@ -609,7 +609,7 @@ let raw_string_singleline st exp_hashlen = re2c:YYFN = ["main;token", "st;tokenizer_state"]; !use:tokenizer_base; - ^ { save_token_position st; save_start_position st; } + !entry { save_token_position st; save_start_position st; } ws { main st } newline { newline st; NEWLINE } "//" { singleline_comment st; NEWLINE }