summary refs log tree commit diff stats
path: root/lib/pure/re.nim
diff options
context:
space:
mode:
authorAndreas Rumpf <andreas@andreas-desktop>2010-02-27 00:53:31 +0100
committerAndreas Rumpf <andreas@andreas-desktop>2010-02-27 00:53:31 +0100
commit230567588b22674e6132411803a518a9a901ff50 (patch)
treed05b9558a4b4c1a1b4cfc0e69ae88282be1ffbfc /lib/pure/re.nim
parent40ea1d0330150a6c771baf25eeaadc1d957fa345 (diff)
downloadNim-230567588b22674e6132411803a518a9a901ff50.tar.gz
further cleanup for new GTK wrapper
Diffstat (limited to 'lib/pure/re.nim')
-rwxr-xr-xlib/pure/re.nim60
1 files changed, 49 insertions, 11 deletions
diff --git a/lib/pure/re.nim b/lib/pure/re.nim
index 953f9c744..1964bf200 100755
--- a/lib/pure/re.nim
+++ b/lib/pure/re.nim
@@ -279,19 +279,57 @@ const ## common regular expressions
     ## describes an URL
 
 when isMainModule:
-  echo matchLen("key", re"[a-zA-Z_][a-zA-Z_0-9]*")
+  assert match("(a b c)", re"'(' @ ')'")
+  assert match("WHiLe", re(r"while", {reIgnoreCase}))
+  
+  assert "0158787".match(re"\d+")
+  assert "ABC 0232".match(re"\w+\s+\d+")
+  assert "ABC".match(re"\d+ / \w+")
+
+  for word in split("00232this02939is39an22example111", re"\d+"):
+    writeln(stdout, word)
+
+  assert matchLen("key", re(reIdentifier)) == 3
+
+  var pattern = re"[a-z0-9]+\s*=\s*[a-z0-9]+")
+  assert matchLen("key1=  cal9", pattern) == 11
+  
+  var c: TMatchClosure
+  var s = "a+b +  c +d+e+f"
+  assert m(s, expr.rule, 0, c) == len(s)
+  var a = ""
+  for i in 0..c.ml-1:
+    a.add(copy(s, c.matches[i][0], c.matches[i][1]))
+  assert a == "abcdef"
+  #echo expr.rule
 
-  var pattern = re"[a-zA-Z_][a-zA-Z_0-9]*\s*=\s*[a-zA-Z_][a-zA-Z_0-9]*"
-  echo matchLen("key1=  cal9", pattern, 2)
+  #const filename = "lib/devel/peg/grammar.txt"
+  #var grammar = parsePeg(newFileStream(filename, fmRead), filename)
+  #echo "a <- [abc]*?".match(grammar)
+  assert find("_____abc_______", term("abc")) == 5
+  assert match("_______ana", peg"A <- 'ana' / . A")
+  assert match("abcs%%%", peg"A <- ..A / .A / '%'")
 
-  echo find("_____abc_______", re("abc"), 3)
-  #echo "var1=key; var2=key2".replace(peg"{\ident}'='{\ident}", "$1<-$2$2")
-  #echo "var1=key; var2=key2".endsWith(peg"{\ident}'='{\ident}")
+  if "abc" =~ peg"{'a'}'bc' 'xyz' / {\ident}":
+    assert matches[0] == "abc"
+  else:
+    assert false
+  
+  var g2 = peg"""S <- A B / C D
+                 A <- 'a'+
+                 B <- 'b'+
+                 C <- 'c'+
+                 D <- 'd'+
+              """
+  assert($g2 == "((A B) / (C D))")
+  assert match("cccccdddddd", g2)
+  assert("var1=key; var2=key2".replace(peg"{\ident}'='{\ident}", "$1<-$2$2") ==
+         "var1<-keykey; var2<-key2key2")
+  assert "var1=key; var2=key2".endsWith(peg"{\ident}'='{\ident}")
 
-  if "abc" =~ re"(a)bc xyz|([a-z]+)":
-    echo matches[0]
+  if "aaaaaa" =~ peg"'aa' !. / ({'a'})+":
+    assert matches[0] == "a"
   else:
-    echo "BUG"
+    assert false
+
 
-#  for word in split("00232this02939is39an22example111", peg"\d+"):
-#    writeln(stdout, word)