Bugfixes, range(start,end,step), and beginning work on lexer and symbol

This commit is contained in:
Nathan Braswell
2015-06-28 20:25:27 -04:00
parent 48683889da
commit ce6c8241fb
19 changed files with 248 additions and 48 deletions

View File

@@ -1,4 +1,5 @@
import vector
import util
import mem
fun string(in:char*):string {
@@ -25,6 +26,9 @@ obj string (Object) {
data.copy_construct(&vec);
return this;
}
fun construct(str: string): string* {
return construct(str.data);
}
fun copy_construct(old: string*): void {
data.copy_construct(&old->data)
@@ -61,17 +65,32 @@ obj string (Object) {
}
fun length():int { return data.size; }
fun operator==(other: string): bool {
return length() == other.length() && !util::range(length()).any_true(fun(i: int):bool { return data[i] != other[i]; } )
}
fun operator+(str: char*): string {
var newStr.construct(str):string
var ret.construct(data + newStr.data):string
return ret
}
fun operator+(str: string): string {
var newStr.construct(str):string
var ret.construct(data + newStr.data):string
return ret
}
fun operator+=(str: char*): void {
var newStr.construct(str):string
data += newStr.data
}
fun operator+=(str: string): void {
var newStr.construct(str):string
data += newStr.data
}
fun toCharArray(): char* {
var out: char* = mem::new<char>(data.size+1);
for (var i: int = 0; i < data.size; i++;)