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 util
obj lexer {
obj lexer (Object) {
var regs: vector::vector<regex::regex>
var input: string::string
var position: int

View File

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

View File

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

View File

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

View File

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

View File

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