update test/datalog.nas

This commit is contained in:
ValKmjolnir 2023-08-31 00:32:01 +08:00
parent a801669888
commit a0e6047296
3 changed files with 44 additions and 2 deletions

View File

@ -41,6 +41,7 @@ std::ostream& help(std::ostream& out) {
<< "option:\n"
<< " -h, --help | get help.\n"
<< " -v, --version | get version.\n"
<< " -r, --repl | use repl interpreter(experimental).\n"
<< "\nnasal [option] <file> [argv]\n"
<< "option:\n"
<< " -a, --ast | view ast after link/optimize process.\n"
@ -54,7 +55,6 @@ std::ostream& help(std::ostream& out) {
<< " --prof | show profiling result, available under debug mode.\n"
<< " --prof-all | show profiling result of all files,"
<< "available under debug mode.\n"
<< " -r, --repl | use repl interpreter(experimental).\n"
<< "file:\n"
<< " <filename> | execute file.\n"
<< "argv:\n"

View File

@ -49,7 +49,7 @@ var count=func(s,c){
}
var column=func(number){
number=number>=1000?substr(str(number/1000),0,3)~'k':str(number);
number=number>=1000?substr(str(number/1000),0,4)~'k':str(number);
return padding.leftpad(number,6);
}

View File

@ -159,4 +159,46 @@ for(var i=10;i<1e6;i*=10) {
println("cartesian");
for(var i=100;i<600;i+=100) {
cartesian(i);
}
var person_data = [];
var person = func(name, age) {
append(person_data, [name, age]);
return person_data;
}
var know_data = [];
var know = func(name_a, name_b) {
append(know_data, [name_a, name_b]);
}
person("a", 1);
person("b", 2);
person("c", 3);
person("d", 4);
know("a", "b");
know("b", "c");
know("c", "d");
know("d", "a");
# maybe_know(a, b) :- know(a, tmp), know(tmp, b).
var maybe_know_data = [];
var temp = [];
foreach(var i; know_data) {
foreach(var j; know_data) {
append(temp, [i[0], i[1], j[0], j[1]]);
}
}
foreach(var i; temp) {
if (!cmp(i[1], i[2])) {
append(maybe_know_data, [i, i[0], i[3]]);
}
}
foreach(var res; maybe_know_data) {
println(res[0], " -> ", res[1], " ", res[2]);
}