diff options
author | Andreas Rumpf <andreas@andreas-desktop> | 2010-02-27 00:53:31 +0100 |
---|---|---|
committer | Andreas Rumpf <andreas@andreas-desktop> | 2010-02-27 00:53:31 +0100 |
commit | 230567588b22674e6132411803a518a9a901ff50 (patch) | |
tree | d05b9558a4b4c1a1b4cfc0e69ae88282be1ffbfc /lib/pure/re.nim | |
parent | 40ea1d0330150a6c771baf25eeaadc1d957fa345 (diff) | |
download | Nim-230567588b22674e6132411803a518a9a901ff50.tar.gz |
further cleanup for new GTK wrapper
Diffstat (limited to 'lib/pure/re.nim')
-rwxr-xr-x | lib/pure/re.nim | 60 |
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) |