Browse Source

refactoring

Roberto Saccon 17 years ago
parent
commit
59acfc5ac9
3 changed files with 29 additions and 16 deletions
  1. 19 3
      src/erlydtl/erlydtl_parser.erl
  2. 9 1
      src/erlydtl/erlydtl_parser.yrl
  3. 1 12
      src/erlydtl/erlydtl_server.erl

+ 19 - 3
src/erlydtl/erlydtl_parser.erl

@@ -2,17 +2,24 @@
 -export([parse/1, parse_and_scan/1, format_error/1]).
 -file("src/erlydtl/erlydtl_parser.yrl", 68).
 
+string({_, String}) ->
+    erl_syntax:binary([erl_syntax:binary_field(erl_syntax:integer(X)) || X <- String]).
+
+
 var({_, Line, Var}) ->
     {var, Line, list_to_atom("A" ++ Var)}.
 
+
 extends({_, Line, [Name]}) ->
     %% TODO: check if string (enclosed with  "") or variable. 
     %% for now we handle it (even not enclosed with "") as string
     {extends, Line, string:strip(Name, both, $")}.
 
+
 block({_, Line, [Name]}, Content) ->
     {block, Line, list_to_atom(Name), Content}.
 
+
 tag({_, Line, [TagName | Args]}) ->
     %% TODO: check if string (enclosed with  "") or variable. 
     %% for now we handle it (even not enclosed with "") as string
@@ -31,6 +38,7 @@ tag({_, Line, [TagName | Args]}) ->
     	Args),
     {tag, Line, TagName, Args2}.
 
+
 for({_, Line, [Iterator, _, Var]}, Content) ->
     {for, Line, list_to_atom("A" ++ Iterator), list_to_atom("A" ++ Var), Content}.
 -file("/Users/rsaccon/R11B/erlang/lib/parsetools-1.4.1.1/include/yeccpre.hrl", 0).
@@ -126,7 +134,7 @@ yecctoken2string(Other) ->
 
 
 
--file("src/erlydtl/erlydtl_parser.erl", 129).
+-file("src/erlydtl/erlydtl_parser.erl", 137).
 
 yeccpars2(0, __Cat, __Ss, __Stack, __T, __Ts, __Tzr) ->
  __NewStack = yeccpars2_0_(__Stack),
@@ -161,7 +169,8 @@ yeccpars2(5, __Cat, __Ss, __Stack, __T, __Ts, __Tzr) ->
  __NewStack = yeccpars2_5_(__Stack),
  yeccpars2(9, __Cat, [5 | __Ss], __NewStack, __T, __Ts, __Tzr);
 yeccpars2(6, __Cat, __Ss, __Stack, __T, __Ts, __Tzr) ->
- yeccpars2(yeccgoto('Element', hd(__Ss)), __Cat, __Ss, __Stack, __T, __Ts, __Tzr);
+ __NewStack = yeccpars2_6_(__Stack),
+ yeccpars2(yeccgoto('Element', hd(__Ss)), __Cat, __Ss, __NewStack, __T, __Ts, __Tzr);
 yeccpars2(7, __Cat, __Ss, __Stack, __T, __Ts, __Tzr) ->
  __NewStack = yeccpars2_7_(__Stack),
  yeccpars2(yeccgoto('Element', hd(__Ss)), __Cat, __Ss, __NewStack, __T, __Ts, __Tzr);
@@ -261,6 +270,13 @@ yeccpars2_5_(__Stack) ->
    nil
   end | __Stack].
 
+-compile({inline,{yeccpars2_6_,1}}).
+-file("src/erlydtl/erlydtl_parser.yrl", 57).
+yeccpars2_6_([__1 | __Stack]) ->
+ [begin
+   string ( __1 )
+  end | __Stack].
+
 -compile({inline,{yeccpars2_7_,1}}).
 -file("src/erlydtl/erlydtl_parser.yrl", 61).
 yeccpars2_7_([__1 | __Stack]) ->
@@ -290,4 +306,4 @@ yeccpars2_12_([__3,__2,__1 | __Stack]) ->
   end | __Stack].
 
 
--file("src/erlydtl/erlydtl_parser.yrl", 100).
+-file("src/erlydtl/erlydtl_parser.yrl", 108).

+ 9 - 1
src/erlydtl/erlydtl_parser.yrl

@@ -57,7 +57,7 @@ Rootsymbol
 Elements -> '$empty' : nil.
 Elements -> Elements Element : ['$1', '$2'].
 
-Element -> string : '$1'.
+Element -> string : string('$1').
 Element -> var : var('$1').
 Element -> extends : extends('$1').
 Element -> block Elements endblock : block('$1', '$2').
@@ -67,17 +67,24 @@ Element -> for Elements endfor : for('$1', '$2').
 
 Erlang code.
 
+string({_, String}) ->
+    erl_syntax:binary([erl_syntax:binary_field(erl_syntax:integer(X)) || X <- String]).
+
+
 var({_, Line, Var}) ->
     {var, Line, list_to_atom("A" ++ Var)}.
 
+
 extends({_, Line, [Name]}) ->
     %% TODO: check if string (enclosed with  "") or variable. 
     %% for now we handle it (even not enclosed with "") as string
     {extends, Line, string:strip(Name, both, $")}.
 
+
 block({_, Line, [Name]}, Content) ->
     {block, Line, list_to_atom(Name), Content}.
 
+
 tag({_, Line, [TagName | Args]}) ->
     %% TODO: check if string (enclosed with  "") or variable. 
     %% for now we handle it (even not enclosed with "") as string
@@ -96,5 +103,6 @@ tag({_, Line, [TagName | Args]}) ->
     	Args),
     {tag, Line, TagName, Args2}.
 
+
 for({_, Line, [Iterator, _, Var]}, Content) ->
     {for, Line, list_to_atom("A" ++ Iterator), list_to_atom("A" ++ Var), Content}.

+ 1 - 12
src/erlydtl/erlydtl_server.erl

@@ -269,9 +269,6 @@ build_tree(nil, [{for, _Line, Iterator, Var, [HFor | TFor]}], Out, Args, _, Ext,
     Body = erl_syntax:generator(erl_syntax:variable(Iterator), erl_syntax:variable(Var)),  
     Out1 = erl_syntax:list_comp(erl_syntax:list(List1), [Body]),
     {regular, Out1, Args2};   
- 
-build_tree(nil, [{string, Val}], Out, Args, _, _, _) ->
-     {regular, [binary_string(Val) | Out], Args}; 
     
 build_tree(nil, [Token], Out, Args, _, _, _) ->
     {regular, [Token | Out], Args}; 
@@ -302,9 +299,6 @@ build_tree([H | T], [{for, _Line, Iterator, Var, [HFor | TFor]}], Out, Args, Doc
     Body = erl_syntax:generator(erl_syntax:variable(Iterator), erl_syntax:variable(Var)),  
     Out1 = erl_syntax:list_comp(erl_syntax:list(List1), [Body]),
     build_tree(H, T, lists:flatten([Out1, Out]), Args2, DocRoot, Ext, IgnoreVar);
-    	
-build_tree([H | T], [{string, Val}], Out, Args, DocRoot, Ext, IgnoreVar) ->      
-    build_tree(H, T, [binary_string(Val) | Out], Args, DocRoot, Ext, IgnoreVar);
         	
 build_tree([H | T], [Token], Out, Args, DocRoot, Ext, IgnoreVar) ->      
     build_tree(H, T, [Token | Out], Args, DocRoot, Ext, IgnoreVar).
@@ -318,8 +312,6 @@ parse_transform({block, _Line, Name, [nil, Val]}, List, Args, Ext, IgnoreVar) ->
 		    {_, List2, Args2} = build_tree(H, T, [], Args, undefined, Ext, IgnoreVar),
             parse_transform(lists:reverse(List2), List, Args2, Ext, IgnoreVar)
  	end;
-parse_transform({string, Val}, _, Args, _, _) ->    
-    {binary_string(Val), Args};
 parse_transform(Other, _What, Args, _, _) ->    
     {Other, Args}.
 
@@ -336,9 +328,7 @@ parse_transform(Other, _) ->
         
 
 parse_transform({block, _Line , _Name, [nil, T]}) ->
-	parse_transform(T);
-parse_transform({string, Val}) ->
-    binary_string(Val); 
+	parse_transform(T); 
 parse_transform({var, L, Val}) ->
     erl_syntax:variable(Val);
 parse_transform(Other) ->    
@@ -361,7 +351,6 @@ load_tag(TagName, TagArgs, Acc0, default, Ext, IgnoreVar) ->
   
     
 binary_string(String) ->
-%    erl_syntax:string(String).
     erl_syntax:binary([erl_syntax:binary_field(erl_syntax:integer(X)) || X <- String]).