Little break work on grammer, added Object trait to other stdlib objects
This commit is contained in:
34
stdlib/grammer.krak
Normal file
34
stdlib/grammer.krak
Normal 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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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*
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user