Просмотр исходного кода

Fix scanner state for extension module on illegal char.

This was a regression when moving to the slex based scanner.
Andreas Stenius 11 лет назад
Родитель
Сommit
9aee8f5822
2 измененных файлов с 16 добавлено и 3 удалено
  1. 8 2
      src/erlydtl_scanner.erl
  2. 8 1
      src/erlydtl_scanner.slex

+ 8 - 2
src/erlydtl_scanner.erl

@@ -36,7 +36,7 @@
 %%%-------------------------------------------------------------------
 -module(erlydtl_scanner).
 
-%% This file was generated 2013-11-28 12:34:50 UTC by slex 0.1.0-1-gfa2a50d.
+%% This file was generated 2013-12-02 15:24:13 UTC by slex 0.1.0-2-gb81b78b.
 %% http://github.com/erlydtl/slex
 -slex_source("src/erlydtl_scanner.slex").
 
@@ -490,7 +490,7 @@ scan([H | T], S, {R, C} = P, {in_number, E} = St) ->
      {R, erlydtl_scanner,
       lists:concat(["Illegal character in column ", C])},
      #scanner_state{template = [H | T], scanned = S, pos = P,
-		    state = St}};
+		    state = {in_code, E}}};
 scan([H | T], S, {R, C} = P, {in_identifier, E})
     when H >= $a andalso H =< $z orelse
 	   H >= $A andalso H =< $Z orelse
@@ -507,6 +507,12 @@ scan([H | T], S, {R, C} = P, {in_identifier, E})
 	   _ -> {R, C + 1}
 	 end,
 	 {in_identifier, E});
+scan([H | T], S, {R, C} = P, {in_identifier, E} = St) ->
+    {error,
+     {R, erlydtl_scanner,
+      lists:concat(["Illegal character in column ", C])},
+     #scanner_state{template = [H | T], scanned = S, pos = P,
+		    state = {in_code, E}}};
 scan([], S, {R, C} = P, in_text = St) ->
     {ok, lists:reverse(post_process(S, eof))};
 scan([], S, {R, C} = P, {in_comment, E} = St) ->

+ 8 - 1
src/erlydtl_scanner.slex

@@ -243,7 +243,7 @@ end.
   expr \
     {error, {R, erlydtl_scanner, \
              lists:concat(["Illegal character in column ", C])}, \
-     #scanner_state{ template=[H|T], scanned=S, pos=P, state=St } \
+     #scanner_state{ template=[H|T], scanned=S, pos=P, state={in_code, E} } \
     } \
   end.
 
@@ -254,6 +254,13 @@ end.
     (H >= $0 andalso H =< $9) orelse \
      H == $_ \
   end: +identifier, in_identifier.
+142 any in_identifier:
+  expr \
+    {error, {R, erlydtl_scanner, \
+             lists:concat(["Illegal character in column ", C])}, \
+     #scanner_state{ template=[H|T], scanned=S, pos=P, state={in_code, E} } \
+    } \
+  end.
 
 200 : in_text- :
   expr \