Little break work on grammer, added Object trait to other stdlib objects

This commit is contained in:
Nathan Braswell
2015-06-30 02:40:46 -04:00
parent 91f801d14f
commit 2fcace72ed
7 changed files with 41 additions and 7 deletions

34
stdlib/grammer.krak Normal file
View File

@@ -0,0 +1,34 @@
import string
import vector
import set
import symbol
obj rule (Object) {
var lhs: symbol::symbol
var rhs: vector::vector<symbol::symbol>
var position: int
var lookahead: set::set<symbol::symbol>
fun construct(): rule* {
lhs.construct()
rhs.construct()
position = 0
lookahead.construct()
}
fun copy_construct(old: rule*) {
lhs.copy_construct(&rule->lhs)
rhs.copy_construct(&rule->rhs)
position = rule->position
lookahead.copy_construct(&rule->lookahead)
}
fun operator=(other: rule) {
destruct()
copy_construct(&other)
}
fun destruct() {
lhs.destruct()
rhs.destruct()
lookahead.destruct()
}
}

View File

@@ -4,7 +4,7 @@ import string
import vector import vector
import util import util
obj lexer { obj lexer (Object) {
var regs: vector::vector<regex::regex> var regs: vector::vector<regex::regex>
var input: string::string var input: string::string
var position: int var position: int

View File

@@ -11,7 +11,7 @@ fun map<T,U>(key:T, value:U): map<T,U> {
return toRet return toRet
} }
obj map<T,U> { obj map<T,U> (Object) {
var keys: vector::vector<T> var keys: vector::vector<T>
var values: vector::vector<U> var values: vector::vector<U>

View File

@@ -14,7 +14,7 @@ fun regex(in: string::string):regex {
return out return out
} }
obj regexState(Object) { obj regexState (Object) {
var character: char var character: char
var next_states: vector::vector<regexState*> var next_states: vector::vector<regexState*>
fun construct(charIn:char): regexState* { fun construct(charIn:char): regexState* {
@@ -40,7 +40,7 @@ obj regexState(Object) {
} }
} }
obj regex(Object) { obj regex (Object) {
var regexString: string::string var regexString: string::string
var begin: regexState* var begin: regexState*

View File

@@ -18,7 +18,7 @@ fun from_vector<T>(items: vector::vector<T>): set<T> {
return toRet return toRet
} }
obj set<T> { obj set<T> (Object) {
var data: vector::vector<T> var data: vector::vector<T>
fun construct() { fun construct() {
data.construct() data.construct()

View File

@@ -20,7 +20,7 @@ fun symbol(nameIn: string::string, terminalIn: bool, dataIn: string::string): sy
return toRet return toRet
} }
obj symbol { obj symbol (Object) {
var data: string::string var data: string::string
var name: string::string var name: string::string
var terminal: bool var terminal: bool

View File

@@ -17,7 +17,7 @@ fun make_pair<T,U>(first: T, second: U): pair<T,U> {
return it return it
} }
obj pair<T,U>(Object) { obj pair<T,U> (Object) {
var first: T var first: T
var second: U var second: U