<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -2,7 +2,7 @@ ERL=erl
 ERLC=erlc
 ERLC_OPT=+debug_info -W -o ebin
 
-all: tools src_src
+all: src_src
 
 clean_gen:
 	rm -f src/herml_scan.erl
@@ -17,14 +17,7 @@ ebin:
 ebin_tests:
 	mkdir ebin_tests
 
-special: tools src/herml_scan.erl src/herml_parse.erl
-
-ebin_tools:
-	mkdir -p tools/ebin
-
-tools: ebin_tools
-	cd tools/src;erl -make
-	cp tools/src/leexinc.hrl tools/ebin
+special: src/herml_scan.erl src/herml_parse.erl
 
 src_src: ebin src/herml_parse.erl src/herml.app
 	cd src;erl -make
@@ -44,4 +37,3 @@ src/herml_parse.erl: src/herml_scan.erl
 clean: clean_gen
 	rm -f ebin/*
 	rm -f ebin_tests/*
-	rm -f tools/ebin/*</diff>
      <filename>Makefile</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,2 @@
 * Add a real front-end to manage and serve herml templates
-* Add iteration over variables
 * Add the &quot;alligator&quot; operators (&lt;&gt;)</diff>
      <filename>TODO</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,14 @@
 Nonterminals
-tag_decl tag_stem id_attr class_attr attr_list attrs attr string
-chr_list name name_list var_ref fun_call shortcuts
+tag_decl tag_stem id_attr class_attr attr_list attrs attr name 
+var_ref fun_call shortcuts
 class_list iter_item iter iter_list
 template_stmt doctype_name.
 
 Terminals
 tag_start class_start id_start number
-lcurly rcurly lbrace rbrace lparen rparen
-at comma quote chr colon slash
-dash lt space bang underscore.
+lcurly rcurly lbrace rbrace
+at comma chr colon slash
+dash lt space bang underscore string.
 
 Rootsymbol template_stmt.
 
@@ -29,32 +29,7 @@ iter_list -&gt; iter_item comma iter_list : ['$1'|'$3'].
 var_ref -&gt; at name : {var_ref, unwrap('$2')}.
 fun_call -&gt; at name colon name : {fun_call, name_to_atom('$2'), name_to_atom('$4')}.
 
-string -&gt; quote chr_list quote : {string, '$2'}.
-string -&gt; quote quote : {string, &quot;&quot;}.
-
-chr_list -&gt; chr : unwrap('$1').
-chr_list -&gt; number :  number_to_list('$1').
-chr_list -&gt; tag_start : &quot;%&quot;.
-chr_list -&gt; chr chr_list : unwrap('$1') ++ '$2'.
-chr_list -&gt; number chr_list : number_to_list('$1') ++ '$2'.
-chr_list -&gt; tag_start chr_list : &quot;%&quot; ++ '$2'.
-chr_list -&gt; class_start : &quot;.&quot;.
-chr_list -&gt; class_start chr_list : &quot;.&quot; ++ '$2'.
-chr_list -&gt; id_start : &quot;#&quot;.
-chr_list -&gt; id_start chr_list : &quot;#&quot; ++ '$2'.
-chr_list -&gt; lparen : &quot;(&quot;.
-chr_list -&gt; lparen chr_list : &quot;(&quot; ++ '$2'.
-chr_list -&gt; rparen : &quot;)&quot;.
-chr_list -&gt; rparen chr_list : &quot;)&quot; ++ '$2'.
-chr_list -&gt; colon : &quot;:&quot;.
-chr_list -&gt; colon chr_list : &quot;:&quot; ++ '$2'.
-chr_list -&gt; space : unwrap('$1').
-chr_list -&gt; space chr_list : unwrap('$1') ++ '$2'.
-
-name -&gt; name_list : {name, '$1'}.
-
-name_list -&gt; chr : unwrap('$1').
-name_list -&gt; chr name_list : unwrap('$1') ++ '$2'.
+name -&gt; chr : {name, unwrap('$1')}.
 
 id_attr -&gt; id_start name : unwrap_label_attr(id, '$2').
 id_attr -&gt; id_start number : unwrap_label_attr(id, '$2').
@@ -124,7 +99,7 @@ unwrap({text, _, Value}) -&gt;
   Value;
 unwrap({chr, _, Value}) -&gt;
   Value;
-unwrap({string, Value}) -&gt;
+unwrap({string, _, Value}) -&gt;
   Value;
 unwrap({space, _, Value}) -&gt;
   Value;</diff>
      <filename>src/herml_parse.yrl</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,7 @@ Definitions.
 
 D = [0-9]
 STRCHAR = [a-z|A-Z|0-9|_]
+
 Rules.
 
 _           :  {token, {underscore, TokenLine, TokenChars}}.
@@ -10,6 +11,9 @@ _           :  {token, {underscore, TokenLine, TokenChars}}.
 \.          :  {token, {class_start, TokenLine, TokenChars}}.
 #           :  {token, {id_start, TokenLine, TokenChars}}.
 {D}+        :  {token, {number, TokenLine, list_to_integer(TokenChars)}}.
+'(\\\^.|\\.|[^'])*' :
+  S = lists:sublist(TokenChars, 2, TokenLen - 2),
+  {token, {string, TokenLine, S}}.
 {STRCHAR}+  :  {token, {chr, TokenLine, TokenChars}}.
 {           :  {token, {lcurly, TokenLine, TokenChars}}.
 }           :  {token, {rcurly, TokenLine, TokenChars}}.
@@ -29,4 +33,3 @@ _           :  {token, {underscore, TokenLine, TokenChars}}.
 \s          :  {token, {space, TokenLine, TokenChars}}.
 
 Erlang code.
-%% Not used
\ No newline at end of file</diff>
      <filename>src/herml_scan.xrl</filename>
    </modified>
    <modified>
      <diff>@@ -9,9 +9,7 @@ tokenizing_test_() -&gt;
    ?_assertMatch({ok, [{class_start, _, _}], _}, herml_scan:string(&quot;.&quot;)),
    ?_assertMatch({ok, [{id_start, _, _}], _}, herml_scan:string(&quot;#&quot;)),
    ?_assertMatch({ok, [{chr, _, &quot;abc&quot;}], _}, herml_scan:string(&quot;abc&quot;)),
-   ?_assertMatch({ok, [{quote, _, _},
-                       {chr, _, &quot;testing&quot;},
-                       {quote, _, _}], _}, herml_scan:string(&quot;'testing'&quot;)),
+   ?_assertMatch({ok, [{string, _, &quot;testing&quot;}], _}, herml_scan:string(&quot;'testing'&quot;)),
    ?_assertMatch({ok, [{lcurly, _, _}], _}, herml_scan:string(&quot;{&quot;)),
    ?_assertMatch({ok, [{rcurly, _, _}], _}, herml_scan:string(&quot;}&quot;)),
    ?_assertMatch({ok, [{lbrace, _, _}], _}, herml_scan:string(&quot;[&quot;)),
@@ -23,7 +21,9 @@ tokenizing_test_() -&gt;
    ?_assertMatch({ok, [{slash, _, &quot;/&quot;}], _}, herml_scan:string(&quot;/&quot;)),
    ?_assertMatch({ok, [{dash, _, &quot;-&quot;}], _}, herml_scan:string(&quot;-&quot;)),
    ?_assertMatch({ok, [{chr, _, &quot;abc&quot;},
-                       {dash, _, &quot;-&quot;},
-                       {chr, _, &quot;def&quot;}], _}, herml_scan:string(&quot;abc-def&quot;)),
+                      {dash, _, &quot;-&quot;},
+                      {chr, _, &quot;def&quot;}], _}, herml_scan:string(&quot;abc-def&quot;)),
    ?_assertMatch({ok, [{lt, _, &quot;&lt;&quot;}], _}, herml_scan:string(&quot;&lt;&quot;)),
-   ?_assertMatch({ok, [{gt, _, &quot;&gt;&quot;}], _}, herml_scan:string(&quot;&gt;&quot;))].
+   ?_assertMatch({ok, [{gt, _, &quot;&gt;&quot;}], _}, herml_scan:string(&quot;&gt;&quot;)),
+   ?_assertMatch({ok, [{string, _, &quot;http://weblog.hypotheticalabs.com/?p=139&quot;}], _}, 
+              herml_scan:string(&quot;'http://weblog.hypotheticalabs.com/?p=139'&quot;))].</diff>
      <filename>tests/test_herml_scan.erl</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>tools/src/Emakefile</filename>
    </removed>
    <removed>
      <filename>tools/src/leex.erl</filename>
    </removed>
    <removed>
      <filename>tools/src/leexinc.hrl</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>645d219913447ba9b5297a840b80539dda8ba277</id>
    </parent>
  </parents>
  <author>
    <name>Sean Cribbs</name>
    <email>seancribbs@gmail.com</email>
  </author>
  <url>http://github.com/kevsmith/herml/commit/2044afdab982eb5abd5efcc9d673f6b2f60e14e0</url>
  <id>2044afdab982eb5abd5efcc9d673f6b2f60e14e0</id>
  <committed-date>2009-02-17T12:38:35-08:00</committed-date>
  <authored-date>2009-02-17T12:38:35-08:00</authored-date>
  <message>Use new leex and judo our string problem.</message>
  <tree>b0830a2df1f38ff22f12ba6cd85967e5afff3cf2</tree>
  <committer>
    <name>Sean Cribbs</name>
    <email>seancribbs@gmail.com</email>
  </committer>
</commit>
