Some more bugfixes, got regex working as well as the cpp version. (leaks memory like craaazy)

This commit is contained in:
Nathan Braswell
2015-06-14 18:13:52 -04:00
parent f60148054f
commit 7b6e47544a
9 changed files with 184 additions and 40 deletions

View File

@@ -1,2 +1,42 @@
concat
2
-1
repitition
2
18
26
-1
-1
-1
alternation
1
1
1
1
1
-1
perens!
1
1
2
2
2
12
0
optional!
-1
1
2
Old Contributed
1
2
4
0
2
4
-1
1
5
0
6
9

View File

@@ -2,11 +2,12 @@ import io:*
import regex:*
fun main():int {
println("concat")
var reg = regex("ab")
println(reg.long_match("abab"))
println(reg.long_match("aab"))
println("second")
println("repitition")
reg = regex("a*b+c")
println(reg.long_match("bc"))
@@ -15,5 +16,54 @@ fun main():int {
println(reg.long_match("aaaaaaaaaaaaaaaa"))
println(reg.long_match("aaaaaaaaaaaaaaaac"))
println(reg.long_match("aaaaaaaaaaaaaaaab"))
println("alternation")
reg = regex("a|b")
println(reg.long_match("a"))
println(reg.long_match("b"))
println(reg.long_match("aa"))
println(reg.long_match("bb"))
println(reg.long_match("ab"))
println(reg.long_match("c"))
println("perens!")
reg = regex("(a|b)*")
println(reg.long_match("a"))
println(reg.long_match("b"))
println(reg.long_match("aa"))
println(reg.long_match("bb"))
println(reg.long_match("ab"))
println(reg.long_match("abbbaaababab"))
println(reg.long_match("c"))
println("optional!")
reg = regex("a?b")
println(reg.long_match("a"))
println(reg.long_match("b"))
println(reg.long_match("ab"))
println("Old Contributed")
var re = regex("a*");
println(re.long_match("a"));
println(re.long_match("aa"));
println(re.long_match("aaaab"));
println(re.long_match("b"));
re = regex("a+");
println(re.long_match("aa"));
println(re.long_match("aaaab"));
println(re.long_match("b"));
re = regex("a(bc)?");
println(re.long_match("ab"));
re = regex("((ab)|c)*");
println(re.long_match("ababc"));
println(re.long_match("ad"));
println(re.long_match("ababccd"));
re = regex("bbb((bba+)|(ba+))*a*((a+b)|(a+bb)|(a+))*bbb") ;
println(re.long_match("bbbababbbaaaaaaaaaaaaaaaaaaabbb"));
return 0
}

View File

@@ -2,14 +2,16 @@ import io:*
import mem:*
import vector:*
obj pair<T, U> {
// pair2 because we actually have a pair now
obj pair2<T, U> {
var first: T
var second: U
}
fun id<T>(in: T): T { return in; }
fun idVec<T>(in: vector<T>): T { return in.get(0); }
fun pairFun<T>(in: pair<T, int>, another:double): T {
fun pairFun<T>(in: pair2<T, int>, another:double): T {
println(in.second)
println(another)
return in.first;
@@ -21,7 +23,7 @@ fun main():int {
aVec.addEnd(12)
println(fromTemplateFun)
println(idVec(aVec))
var testPair: pair<char*, int>
var testPair: pair2<char*, int>
testPair.first = "test string"
testPair.second = 9
var someFloat = 13.88

View File

@@ -16,5 +16,10 @@ hayyy
first
first
second
full: 1234
middle: 23
all but first: 234
all but last: 123
just some: 2
done
Destroyed: 0

View File

@@ -85,6 +85,26 @@ fun main(): int {
println(assignTest[0])
println(assignTest[1])
var sliceTest = vector(1)
sliceTest.add(2)
sliceTest.add(3)
sliceTest.add(4)
print("full: ")
sliceTest.do(fun(it:int):void print(it);)
println()
print("middle: ")
sliceTest.slice(1,-2).do(fun(it:int):void print(it);)
println()
print("all but first: ")
sliceTest.slice(1,-1).do(fun(it:int):void print(it);)
println()
print("all but last: ")
sliceTest.slice(0,-2).do(fun(it:int):void print(it);)
println()
print("just some: ")
sliceTest.slice(1,2).do(fun(it:int):void print(it);)
println()
println("done")
return 0;