checkpoint
authoradam <adam@megacz.com>
Mon, 30 Jan 2006 06:03:32 +0000 (01:03 -0500)
committeradam <adam@megacz.com>
Mon, 30 Jan 2006 06:03:32 +0000 (01:03 -0500)
darcs-hash:20060130060332-5007d-67c4c615664c156c8532fbd95c4261dcca525f94.gz

tests/meta.g
tests/regression.tc
tests/testcase.g

index dd222e0..eba7a6d 100644 (file)
@@ -1,6 +1,6 @@
-s             =  !ws Grammar ws              => "gram"
-Grammar       =  NonTerminal +/ ws           => "grammar"
-NonTerminal   =  word  !wp ^"=" !wp RHS
+s             =  gram::    !ws Grammar ws
+Grammar       =  grammar:: NonTerminal +/ ws
+NonTerminal   =            word  !wp ^"=" !wp RHS
         
 RHS           =  (Conjuncts +/ (!ws "|" !ws)) +/ (!ws ">" !ws)
 
@@ -9,48 +9,47 @@ Conjuncts     =  Sequence
               |  Sequence ^"&~" Elements  /ws
 Elements      =  e*/ws
 
-PreSequence   = Elements => "ps"
-              | PreSequence !wp ^"/"  !ws e
-              | PreSequence     ^"->"     e /ws
-              | (Quoted|word)   ^"::" PreSequence /ws
-              | PreSequence     ^"=>" ("[]"|"()"|word|Quoted) /ws
-Sequence      = PreSequence    => "psx"
+PreSequence   = ps::  Elements
+              |       PreSequence !wp ^"/"  !ws e
+              |       PreSequence     ^"->"     e /ws
+              |       (Quoted|word)   ^"::" PreSequence /ws
+              |       PreSequence     ^"=>" ("[]"|"()"|word|Quoted) /ws
+Sequence      = psx:: PreSequence
 
 ec            = ~[\-\]\\]
               | escaped
 
-Range         = ec          => "range"
-              | ec ^"-" ec
-
-e             =
-                (Quoted|word) ^":" e
-              >  word                          => "nonTerminal"
-              |  Quoted                        => "literal"
-              |    ^"()"
-              |    ^"{" Sequence "}"       /ws
-              |    ^"["  Range* "]"
-              |  e ^"++"                   /ws -> ~[/]
-              |  e ^"+"                    /ws -> ~[+]
-              |  e ^"++/" e                /ws        
-              |  e ^"+/"  e                /ws        
-              |  e ^"**"                   /ws -> ~[/]
-              |  e ^"*"                    /ws -> ~[*]
-              |  e ^"**/" e                /ws        
-              |  e ^"*/"  e                /ws        
-              |    ^"!"   e                /ws
-              |  e ^"?"                    /ws
-              |    ^"^" Quoted             /ws
-
-              |     "(" word         ^")"  /ws
-              >    ^"(" RHS  ")"           /ws
-              |    ^"~" e
+Range         = range:: ec
+              |         ec ^"-" ec
+
+e             =                (Quoted|word) ^":" e
+              > nonTerminal::          word
+              | literal::       Quoted
+              |                  ^"()"
+              |                  ^"{" Sequence "}"       /ws
+              |                  ^"["  Range* "]"
+              |                e ^"++"                   /ws -> ~[/]
+              |                e ^"+"                    /ws -> ~[+]
+              |                e ^"++/" e                /ws        
+              |                e ^"+/"  e                /ws        
+              |                e ^"**"                   /ws -> ~[/]
+              |                e ^"*"                    /ws -> ~[*]
+              |                e ^"**/" e                /ws        
+              |                e ^"*/"  e                /ws        
+              |                  ^"!"   e                /ws
+              |                e ^"?"                    /ws
+              |                  ^"^" Quoted             /ws
+
+              |                   "(" word         ^")"  /ws
+              >                  ^"(" RHS  ")"           /ws
+              |                  ^"~" e
 
 word       = [a-zA-Z0-9_]++
 Quoted     = "\"" ((~[\"\\] | escaped)+) "\""
-           | "\"\"" => ""
-escaped    = "\\n" => "\n"
-           | "\\r" => "\r"
-           | "\\" ~[nr]
+           | ""::   "\"\""
+escaped    = "\n":: "\\n"
+           | "\r":: "\\r"
+           |        "\\" ~[nr]
 
 
 w             = " " | "\n" | "\r"
index 394847f..60b4736 100644 (file)
@@ -2,8 +2,8 @@
 //    input  "x";
 //    output "a1:{x}";
 //
-//    s   = a        => a1
-//    a   = s        => s1
+//    s   = a1:: a
+//    a   = s1:: s
 //    a   = ^"x"
 //}
 //
@@ -14,9 +14,9 @@
 //    output "s2:{s0 x}";
 //
 //
-//    s   = s s      => s2
+//    s   = s2:: s s
 //    s   = ^"x"
-//    s   = ()       => s0
+//    s   = s0:: ()
 //}
 
 testcase {
@@ -24,8 +24,8 @@ testcase {
     output "1:{{a b} {c}}";
 
     s     = ids
-    ids   = id (" " ids &~ id ~[]*) => "1"
-          | id (    ids &~ id ~[]*) => "2"
+    ids   = "1":: id (" " ids &~ id ~[]*)
+          | "2":: id (    ids &~ id ~[]*)
           | id
     id    = [a-z]++
 }
@@ -37,8 +37,8 @@ testcase {
     output "1:{{a b} {c}}";
 
     s     = ids
-    ids   = id " " ids => "1"
-          | id     ids => "2"
+    ids   = "1":: id " " ids
+          | "2":: id     ids
           | id
     id    = [a-z]+
 }
@@ -48,8 +48,8 @@ testcase {
     output "ab";
 
     s     = ab & dc
-    ab    = a b       => ab
-    dc    = d c       => dc
+    ab    = ab:: a b
+    dc    = dc:: d c
     a     = "a" a     | ()
     b     = "b" b "c" | ()
     c     = "c" c     | ()
@@ -60,8 +60,8 @@ testcase {
     input "aaabbbbccc";
 
     s     = ab & dc
-    ab    = a b       => ab
-    dc    = d c       => dc
+    ab    = ab:: a b
+    dc    = dc:: d c
     a     = "a" a     | ()
     b     = "b" b "c" | ()
     c     = "c" c     | ()
@@ -73,8 +73,8 @@ testcase {
     output "xbx:{{a} abab:{a b} {b}}";
 
     x     = ~[]
-    s     = x* b x* => xbx
-    b     = [ab][ab] => abab
+    s     = xbx:: x* b x*
+    b     = abab:: [ab][ab]
          &~ ( "aa" | "bb" )
 }
 
@@ -84,9 +84,9 @@ testcase {
     //output "a:{{2 1 2 1}}";
     //output "c:{{c:{1 1} c:{1 1}}}";
 
-    s   = ab => "ab"
-        | ac => "ac"
-        | bc => "bc"
+    s   = ab:: ab
+        | ac:: ac
+        | bc:: bc
         //| a  =>  "a"
         //| b  =>  "b"
         //| c  =>  "c"
@@ -94,8 +94,8 @@ testcase {
     ac   = a & c
     bc   = b & c
     a   = ("1" x)*
-    b   = (x "2" => "b")*
-    c   = (x "2" x "1" => "c")*
+    b   = ("b":: x "2")*
+    c   = ("c":: x "2" x "1")*
     x   = [123]
 }
 
@@ -106,19 +106,19 @@ testcase {
     s   = "q" z
     z   = a z ^"bam"
     z   = ^"x"
-    a   = ()       => "a"
+    a   = a:: ()
 }
 
 testcase {
     input  "baaaa";
     output "s2:{b0 a:{a:{epsilon}}}";
     output "b:{a:{a:{epsilon}} epsilon}";
-    s   = b t        => "s2"
+    s   = s2:: b t
         | ^"b" t b
     t   = ^"a" t "a"
-        | ()         => "epsilon"
-    b   = "b"        => "b0"
-        | ()         => "epsilon"
+        | epsilon:: ()
+    b   = b0:: "b"
+        | epsilon:: ()
 }
 
 testcase {
@@ -127,18 +127,18 @@ testcase {
 
     s   = ^"q" x "q"
     x   = ^"a" a
-    x   = ()        => "epsilon"
-    a   = x         => "s1"
+    x   = epsilon:: ()
+    a   = s1:: x
 }
 
 testcase {
     input "baa";
     output "s1:{a2:{a2:{a0 b0} b0}}";
 
-    s   = "b" a     => "s1"
-    a   = "a" a b   => "a2"
-        | ()        => "a0"
-    b   = ()        => "b0"
+    s   = s1:: "b" a
+    a   = a2:: "a" a b
+        | a0:: ()
+    b   = b0:: ()
 }
 
 testcase {
@@ -155,38 +155,38 @@ testcase {
     output "s3:{epsilon a0 epsilon a0}";
     output "s3:{epsilon a0 a0 epsilon}";
 
-    s   = "a" s a a a => "s3"
-        | ()          => "epsilon"
-    a   = "a"         => "a0"
-        | ()          => "epsilon"
+    s   = s3:: "a" s a a a
+        | epsilon:: ()
+    a   = a0:: "a"
+        | epsilon:: ()
 }
 
 testcase {
     input "aa";
     output "poo:{poo:{poox poox} poox}";
     output "poo:{poox poo:{poox poox}}";
-    s   = s s "a"  => "poo"
-        | ()       => "poox"
+    s   = poo::  s s "a"
+        | poox:: ()
 }
 
 testcase {
     input "baa";
     output "s:{aa:{aa:{a b} b}}";
-    s   = "b" a      => "s"
-    a   = "a" a b    => "aa"
-    a   = ()         => "a"
-    b   = ()         => "b"
+    s   = s:: "b" a
+    a   = aa:: "a" a b
+    a   = a:: ()
+    b   = b:: ()
 }
 
 testcase {
     input "aaab";
     output "sx:{b aa:{aa:{b b} b}}";
-    s   = b d "a" "b"  => "sx"
-    s   = "a" d "a" d  => "sy"
-    d   = "a" a b      => "aa"
-    a   = "a" b b      => "aa"
-    a   = ()           => "a"
-    b   = ()           => "b"
+    s   = sx:: b d "a" "b"
+    s   = sy:: "a" d "a" d
+    d   = aa:: "a" a b
+    a   = aa:: "a" b b
+    a   = a::  ()
+    b   = b::  ()
 }
 
 testcase {
@@ -210,15 +210,15 @@ testcase {
     output "minus:{plus:{stringify:{{a}} stringify:{{b}}} times:{stringify:{{d}} stringify:{{c}}}}";
     w    = " "
     l    = id
-    s    = l "=" q  => "assign"
+    s    = assign:: l "=" q
          | q
     q    = id
-         | l "=" q       => "assign"
-         | q "-" q       => "minus"
-         | q "+" q       => "plus"
-         | q "*" q       => "times"
+         | assign:: l "=" q
+         | minus:: q "-" q
+         | plus:: q "+" q
+         | times:: q "*" q
          | "(" q ")"
-    id     = idl++       => "stringify"
+    id     = stringify:: idl++
     idl    = [a-d]
 }
 
@@ -244,15 +244,15 @@ testcase {
     output "plus:{stringify:{{a}} times:{stringify:{{b}} stringify:{{c}}}}";
     w    = " "
     l    = id
-    s    = l "=" r  => "assign"
+    s    = assign:: l "=" r
          | r
     r    = l
-         | l "=" r       => "assign"
-         | r "+" r       => "plus"
-         > r "*" r       => "times"
+         | assign:: l "=" r
+         | plus:: r "+" r
+         > times:: r "*" r
          | "(" r ")"
-         | r r           => "times"
-    id     = idl++       => "stringify"
+         | times:: r r
+    id     = stringify:: idl++
     idl    = [a-d]
 }
 
@@ -262,7 +262,7 @@ testcase {
 
   s    = q */ ws
   ws   = " "*
-  q    = [a-z]++ => "q"
+  q    = q:: [a-z]++
 }
 
 //testcase {
index 280812d..34584c9 100644 (file)
@@ -1,9 +1,9 @@
-ts         = !ws tests !ws => ts
-tests      = test */ ws
-ws         = w*
-test       = ^"testcase" "{" input output +/ ws   Grammar "}" /ws
-           | ^"testcase" "{" input                Grammar "}" /ws
-           | ^"tibcase"  "{" input output +/ ws   Grammar "}" /ws
-           | ^"tibcase"  "{" input                Grammar "}" /ws
-output     = ^"output" Quoted ";" /ws
-input      = "input"  Quoted ";" /ws
+ts         = ts:: !ws tests !ws
+tests      =      test */ ws
+ws         =      w*
+test       =      ^"testcase" "{" input output +/ ws   Grammar "}" /ws
+           |      ^"testcase" "{" input                Grammar "}" /ws
+           |      ^"tibcase"  "{" input output +/ ws   Grammar "}" /ws
+           |      ^"tibcase"  "{" input                Grammar "}" /ws
+output     =      ^"output" Quoted ";" /ws
+input      =      "input"  Quoted ";" /ws