Return by reference and pass by reference working with objects. Closures might present problems, however
This commit is contained in:
@@ -10,32 +10,35 @@ fun main():int {
|
||||
/*var a = load_grammer(read_file(string("../krakenGrammer.kgm")))*/
|
||||
var a = load_grammer(read_file(string("grammer.kgm")))
|
||||
println(a.to_string())
|
||||
/*a.calculate_first_set()*/
|
||||
println("///////////////////START FIRST SET/////////////")
|
||||
println("//TERMINALS//")
|
||||
a.terminals.for_each( fun(terminal: util::pair<symbol::symbol, regex::regex>) {
|
||||
var set_str = string::string("{ ")
|
||||
a.first_set_map[terminal.first].for_each( fun(sym: symbol::symbol) {
|
||||
set_str += sym.to_string() + " "
|
||||
var doFirstSet = fun() {
|
||||
a.calculate_first_set()
|
||||
println("///////////////////START FIRST SET/////////////")
|
||||
println("//TERMINALS//")
|
||||
a.terminals.for_each( fun(terminal: util::pair<symbol::symbol, regex::regex>) {
|
||||
var set_str = string::string("{ ")
|
||||
a.first_set_map[terminal.first].for_each( fun(sym: symbol::symbol) {
|
||||
set_str += sym.to_string() + ", "
|
||||
})
|
||||
set_str += "}"
|
||||
print(terminal.first.to_string() + " first: " + set_str + "\n")
|
||||
})
|
||||
set_str += "}"
|
||||
print(terminal.first.to_string() + " first: " + set_str + "\n")
|
||||
})
|
||||
println("//NON TERMINALS//")
|
||||
a.non_terminals.for_each( fun(non_terminal: symbol::symbol) {
|
||||
var set_str = string::string("{ ")
|
||||
a.first_set_map[non_terminal].for_each( fun(sym: symbol::symbol) {
|
||||
set_str += sym.to_string() + " "
|
||||
println("//NON TERMINALS//")
|
||||
a.non_terminals.for_each( fun(non_terminal: symbol::symbol) {
|
||||
var set_str = string::string("{ ")
|
||||
a.first_set_map[non_terminal].for_each( fun(sym: symbol::symbol) {
|
||||
set_str += sym.to_string() + ", "
|
||||
})
|
||||
set_str += "}"
|
||||
print(non_terminal.to_string() + " first: " + set_str + "\n")
|
||||
println()
|
||||
})
|
||||
set_str += "}"
|
||||
print(non_terminal.to_string() + " first: " + set_str + "\n")
|
||||
println()
|
||||
})
|
||||
println("///////////////////END FIRST SET/////////////")
|
||||
println("///////////////////END FIRST SET/////////////")
|
||||
}
|
||||
doFirstSet()
|
||||
|
||||
var lex = lexer(a.terminals)
|
||||
|
||||
/*lex.set_input(read_file(string("test_grammer.krak")))*/
|
||||
/*lex.set_input(read_file(string("test_grammer.krak")))*/
|
||||
lex.set_input(string("ccdahas spacedhas
|
||||
returndaaaaaaaaaaaaaa"))
|
||||
println("woo lexing:")
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
7
|
||||
8
|
||||
14
|
||||
7.700000
|
||||
construct
|
||||
do
|
||||
do
|
||||
destruct
|
||||
|
||||
@@ -34,6 +34,14 @@ fun byRef(it: ref int) {
|
||||
it = it + 1
|
||||
}
|
||||
|
||||
fun id(it: ref int): ref int {
|
||||
return it
|
||||
}
|
||||
|
||||
fun id<T>(it: ref T): ref T {
|
||||
return it
|
||||
}
|
||||
|
||||
// what about cosures closing over references?
|
||||
|
||||
fun main():int {
|
||||
@@ -42,12 +50,15 @@ fun main():int {
|
||||
println(a)
|
||||
byRef(&a)
|
||||
println(a)
|
||||
id(a) = 14
|
||||
println(a)
|
||||
var b = 6.7
|
||||
byRef(b)
|
||||
println(b)
|
||||
|
||||
var t.construct() : test_cons
|
||||
call(t)
|
||||
id(t).do()
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@@ -67,18 +67,12 @@ Destroyed: 303
|
||||
Destroyed: 302
|
||||
Copied: 104 to 105
|
||||
Copied: 105 to 106
|
||||
Copied: 106 to 107
|
||||
Destroyed: 106
|
||||
Destroyed: 105
|
||||
Copied: 204 to 205
|
||||
Copied: 205 to 206
|
||||
Copied: 206 to 207
|
||||
Destroyed: 206
|
||||
Destroyed: 205
|
||||
Copied: 304 to 305
|
||||
Copied: 305 to 306
|
||||
Copied: 306 to 307
|
||||
Destroyed: 306
|
||||
Destroyed: 305
|
||||
Destroyed: 104
|
||||
Destroyed: 204
|
||||
@@ -86,30 +80,24 @@ Destroyed: 304
|
||||
Destroyed: 301
|
||||
Destroyed: 201
|
||||
Destroyed: 101
|
||||
Copied: 106 to 107
|
||||
Copied: 107 to 108
|
||||
Copied: 108 to 109
|
||||
Copied: 109 to 110
|
||||
Destroyed: 109
|
||||
Destroyed: 108
|
||||
Copied: 207 to 208
|
||||
Copied: 208 to 209
|
||||
Copied: 209 to 210
|
||||
Destroyed: 209
|
||||
Destroyed: 208
|
||||
Copied: 307 to 308
|
||||
Copied: 308 to 309
|
||||
Copied: 309 to 310
|
||||
Destroyed: 309
|
||||
Destroyed: 308
|
||||
Destroyed: 107
|
||||
Copied: 206 to 207
|
||||
Copied: 207 to 208
|
||||
Destroyed: 207
|
||||
Copied: 306 to 307
|
||||
Copied: 307 to 308
|
||||
Destroyed: 307
|
||||
Destroyed: 210
|
||||
Copied: 310 to 311
|
||||
Destroyed: 310
|
||||
Destroyed: 106
|
||||
Destroyed: 206
|
||||
Destroyed: 306
|
||||
Destroyed: 208
|
||||
Copied: 308 to 309
|
||||
Destroyed: 308
|
||||
done
|
||||
Destroyed: 110
|
||||
Destroyed: 311
|
||||
Destroyed: 108
|
||||
Destroyed: 309
|
||||
Destroyed: 300
|
||||
Destroyed: 200
|
||||
Destroyed: 100
|
||||
|
||||
Reference in New Issue
Block a user