Saving work pre-references
This commit is contained in:
@@ -11,3 +11,6 @@ d = "has
|
||||
ll\"
|
||||
\\\"y8\" \\\\" ;
|
||||
d = "has space" ;
|
||||
d = e ;
|
||||
e = f | ;
|
||||
f = ;
|
||||
|
||||
@@ -3,15 +3,41 @@ import grammer:*
|
||||
import lexer:*
|
||||
import string:*
|
||||
import util:*
|
||||
import symbol:*
|
||||
|
||||
fun main():int {
|
||||
var a = load_grammer(read_file(string("../krakenGrammer.kgm")))
|
||||
/*var a = load_grammer(read_file(string("grammer.kgm")))*/
|
||||
|
||||
/*var a = load_grammer(read_file(string("../krakenGrammer.kgm")))*/
|
||||
var a = load_grammer(read_file(string("grammer.kgm")))
|
||||
println(a.to_string())
|
||||
var lex = lexer(a.regexs)
|
||||
lex.set_input(read_file(string("test_grammer.krak")))
|
||||
/*lex.set_input(string("ccdahas spacedhas*/
|
||||
/*returndaaaaaaaaaaaaaa"))*/
|
||||
/*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")
|
||||
})
|
||||
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()
|
||||
})
|
||||
println("///////////////////END FIRST SET/////////////")
|
||||
|
||||
var lex = lexer(a.terminals)
|
||||
|
||||
/*lex.set_input(read_file(string("test_grammer.krak")))*/
|
||||
lex.set_input(string("ccdahas spacedhas
|
||||
returndaaaaaaaaaaaaaa"))
|
||||
println("woo lexing:")
|
||||
range(8).for_each(fun(i: int) { println(lex.next().to_string()); } )
|
||||
/*range(80).for_each(fun(i: int) { println(lex.next().to_string()); } )*/
|
||||
|
||||
@@ -9,5 +9,10 @@ false
|
||||
false
|
||||
true
|
||||
true
|
||||
contains set:
|
||||
false
|
||||
false
|
||||
true
|
||||
all:
|
||||
4
|
||||
5
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import io:*
|
||||
import set:*
|
||||
import vector_literals:*
|
||||
|
||||
fun main():int {
|
||||
var s = set(3)
|
||||
@@ -19,6 +20,12 @@ fun main():int {
|
||||
println(s.contains(4))
|
||||
println(s.contains(5))
|
||||
|
||||
println("contains set:")
|
||||
println(s.contains(from_vector(vector(1,2,3))))
|
||||
println(s.contains(from_vector(vector(4,5,3))))
|
||||
println(s.contains(from_vector(vector(4,5))))
|
||||
|
||||
println("all:")
|
||||
s.for_each( fun(it: int) println(it); )
|
||||
return 0
|
||||
}
|
||||
|
||||
8
tests/test_short_circuit.expected_results
Normal file
8
tests/test_short_circuit.expected_results
Normal file
@@ -0,0 +1,8 @@
|
||||
early or
|
||||
was true
|
||||
early and
|
||||
|
||||
late or
|
||||
false_extra: was true
|
||||
late and
|
||||
true_extra:
|
||||
38
tests/test_short_circuit.krak
Normal file
38
tests/test_short_circuit.krak
Normal file
@@ -0,0 +1,38 @@
|
||||
import io:*
|
||||
|
||||
fun is_true():bool {
|
||||
return true
|
||||
}
|
||||
|
||||
fun is_true_extra():bool {
|
||||
print("true_extra: ")
|
||||
return true
|
||||
}
|
||||
|
||||
fun is_false():bool {
|
||||
return false
|
||||
}
|
||||
|
||||
fun is_false_extra():bool {
|
||||
print("false_extra: ")
|
||||
return false
|
||||
}
|
||||
|
||||
fun main():int {
|
||||
println("early or")
|
||||
if (is_true() || is_false_extra())
|
||||
println("was true")
|
||||
println("early and")
|
||||
if (is_false() && is_true_extra())
|
||||
println("was false")
|
||||
println()
|
||||
println("late or")
|
||||
if (is_false_extra() || is_true())
|
||||
println("was true")
|
||||
println("late and")
|
||||
if (is_true_extra() && is_false())
|
||||
println("was false")
|
||||
println()
|
||||
return 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user