<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,8 @@
+2009-07-29  Robert Virding  &lt;rv@stanislaw.local&gt;
+
+	* leex.erl (parse_rule): Removed parse check of action tokens,
+	gives false errors (macros) and misses some errors.
+
 2009-07-24  Robert Virding  &lt;rv@stanislaw.local&gt;
 
 	* leex.erl (re_parse): Pass state through parsing and check for</diff>
      <filename>src/ChangeLog</filename>
    </modified>
    <modified>
      <diff>@@ -36,9 +36,9 @@
 
 %%-compile(export_all).
 
--import(lists, [member/2,reverse/1,sort/1,keysearch/3,keysort/2,keydelete/3,
-                map/2,foldl/3,foreach/2,flatmap/2,mapfoldl/3,
-                delete/2]).
+-import(lists, [member/2,reverse/1,sort/1,delete/2,
+		keysearch/3,keysort/2,keydelete/3,keymember/3,
+		map/2,foldl/3,foreach/2,flatmap/2,mapfoldl/3]).
 -import(string, [substr/2,substr/3,span/2,tokens/2,join/2]).
 -import(ordsets, [is_element/2,add_element/2,union/2]).
 -import(orddict, [store/3]).
@@ -139,8 +139,6 @@ format_error({regexp,E})-&gt;
 	     missing_char -&gt; &quot;missing character&quot;
 	 end,
     [&quot;bad regexp `&quot;,Es,&quot;'&quot;];
-format_error({after_regexp,S}) -&gt;
-    [&quot;bad code after regexp &quot;,io_lib:write_string(S)];
 format_error(ignored_characters) -&gt;
     &quot;ignored characters&quot;.
 
@@ -488,25 +486,16 @@ parse_rule(S, Line, Atoks, Ms, N, St) -&gt;
     case parse_rule_regexp(S, Ms, St) of
         {ok,R} -&gt;
 	    %%io:fwrite(&quot;RE = ~p~n&quot;, [R]),
-            case erl_parse:parse_exprs(Atoks) of
-                {ok,_Aes} -&gt;
-                    %% Check for token variables.
-                    TokenChars = var_used('TokenChars', Atoks),
-                    TokenLen = var_used('TokenLen', Atoks),
-                    TokenLine = var_used('TokenLine', Atoks),
-                    {ok,{R,N},{N,Atoks,TokenChars,TokenLen,TokenLine},St};
-                {error,_} -&gt;
-                    add_error({Line,leex,{after_regexp,S}}, St)
-            end;
+	    %% Check for token variables.
+	    TokenChars = var_used('TokenChars', Atoks),
+	    TokenLen = var_used('TokenLen', Atoks),
+	    TokenLine = var_used('TokenLine', Atoks),
+	    {ok,{R,N},{N,Atoks,TokenChars,TokenLen,TokenLine},St};
         {error,E} -&gt;
             add_error({Line,leex,E}, St)
     end.
 
-var_used(Name, Toks) -&gt;
-    case keysearch(Name, 3, Toks) of
-        {value,{var,_,Name}} -&gt; true;
-        _ -&gt; false
-    end.
+var_used(Name, Toks) -&gt; keymember(Name, 3, Toks).
 
 %% parse_rule_regexp(RegExpString, Macros, State) -&gt; {ok,RegExp} | {error,Error}.
 %% Substitute in macros and parse RegExpString. Cannot use re:replace
@@ -519,8 +508,7 @@ parse_rule_regexp(RE0, [{M,Exp}|Ms], St) -&gt;
 parse_rule_regexp(RE, [], St) -&gt;
     %%io:fwrite(&quot;RE = ~p~n&quot;, [RE]),
     case re_parse(RE, St) of
-	{ok,R,[]} -&gt; {ok,R};
-	{ok,_,[C|_]} -&gt; {error,{regexp,{illegal_char,[C]}}};
+	{ok,R} -&gt; {ok,R};
 	{error,E} -&gt; {error,{regexp,E}}
     end.
 
@@ -593,11 +581,12 @@ non_white(S) -&gt;
 %%  The grammar of the current regular expressions. The actual parser
 %%  is a recursive descent implementation of the grammar.
 
-%% re_parse(Chars, State) -&gt; {ok,RegExp,RestChars} | {error,Error}.
+%% re_parse(Chars, State) -&gt; {ok,RegExp} | {error,Error}.
 
 re_parse(Cs0, St) -&gt;
     case catch re_reg(Cs0, 0, St) of
-	{RE,_,Cs1} -&gt; {ok,RE,Cs1};
+	{RE,_,[]} -&gt; {ok,RE};
+	{RE,_,[C|_]} -&gt; {error,{illegal_char,[C]}};
 	{parse_error,E} -&gt; {error,E}
     end.
 </diff>
      <filename>src/leex.erl</filename>
    </modified>
    <modified>
      <diff>@@ -173,9 +173,8 @@ syntax(Config) when is_list(Config) -&gt;
                                &lt;&lt;&quot;Definitions.\n&quot;
                                  &quot;D  = [0-9]\n&quot;
                                  &quot;Rules.\n&quot;
-                                 &quot;{L}+  : &quot;&gt;&gt;),
-    ?line {error,[{_,[{4,leex,{after_regexp,_}}]}],[]} = 
-        leex:file(Filename, Ret),
+                                 &quot;{L}+  : \n&quot;&gt;&gt;),
+    ?line {error,[{_,[{5,leex,missing_code}]}],[]} = leex:file(Filename, Ret),
     ?line ok = file:write_file(Filename, 
                                &lt;&lt;&quot;Definitions.\n&quot;
                                  &quot;D  = [0-9]\n&quot;</diff>
      <filename>test/leex_SUITE.erl</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>2b5e0a1b6cafcd80cbf4e5ea7b04db433fa2f5a3</id>
    </parent>
  </parents>
  <author>
    <name>Robert Virding</name>
    <email>rvirding@gmail.com</email>
  </author>
  <url>http://github.com/rvirding/leex/commit/8b99964ccdee0f93e408391111a8d1c56585725b</url>
  <id>8b99964ccdee0f93e408391111a8d1c56585725b</id>
  <committed-date>2009-07-29T08:44:39-07:00</committed-date>
  <authored-date>2009-07-29T08:12:34-07:00</authored-date>
  <message>Removed parse check of action tokens, gives false errors (macros)
and misses some errors. Fixed test suite for new error return.</message>
  <tree>b82c6769dd704b4be36e3ca999566adb4f4aeda8</tree>
  <committer>
    <name>Robert Virding</name>
    <email>rvirding@gmail.com</email>
  </committer>
</commit>
