Skip to content

Commit ef5658d

Browse files
committed
Actually now for the research paper!
1 parent 68318ac commit ef5658d

3 files changed

Lines changed: 47 additions & 13 deletions

File tree

data/script/script_11.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
1-
eval( (((eval((xi (OBJ 0)) [0])))) ["quantity"] )
1+
//x := 14; eval( (((eval((xi (OBJ 14)) [0])))) ["quantity"] )} )
2+
//f := fun x -> { y := (x [0]); z:=(x [1]); eval( (((eval((xi (OBJ y)) [0])))) ["quantity"] )}; lfold( f , 0 : (phi (OBJ 5)))
3+
//lfold( fun x -> { (x[0]) + (eval( (((eval((xi ((x[1]))) [0])))) ["quantity"] )) } , 0 : (phi 5 "type"))
4+
//eval( (((eval((xi (OBJ 6)) [0])))) ["quantity"] )} )
5+
//eval(((eval((xi (OBJ 3)) [0])) ["quantity"]))
6+
eval(((eval((xi (OBJ 0)) [0])) ["quantity"]))

main.cpp

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -411,19 +411,47 @@ void structural_content_scenario() {
411411
auto database = std::make_shared<gsm_inmemory_db>();
412412
gsm_inmemory_db_view view{0, database};
413413
database->O[0].ell = "label \"Product\"";
414-
database->O[0].xi.emplace_back("<\"root\" >> label \"Product\"; \"quantity\" >> ((varphi (OBJ 0)) + 0)>");
415-
createFast(view, 1, "label \"House Cleaner\"", {"< \"type\" >> label \"House Cleaner\"; \"quantity\" >> ((varphi (OBJ 0)) + 0)>"}, {1.0});
416-
createFast(view, 2, "label \"Foood\"", {"< \"type\" >> label \"Food\"; \"quantity\" >> ((varphi (OBJ 0)) +0)>"}, {1.0});
414+
database->O[0].xi.emplace_back("<\"root\" >> label \"Product\"; \"quantity\" >> lfold( fun x -> { (x[0]) + (eval( (((eval((xi ((x[1]))) [0])))) [\"quantity\"] )) } , 0 : (phi 0 \"type\"))>");
415+
createFast(view, 1, "label \"Type\"", {"< \"type\" >> label \"House Cleaner\"; \"quantity\" >> lfold( fun x -> { (x[0]) + (eval( (((eval((xi ((x[1]))) [0])))) [\"quantity\"] )) } , 0 : (phi 1 \"type\"))>"}, {1.0});
416+
createFast(view, 2, "label \"Type\"", {"< \"type\" >> label \"Food\"; \"quantity\" >> lfold( fun x -> { (x[0]) + (eval( (((eval((xi ((x[1]))) [0])))) [\"quantity\"] )) } , 0 : (phi 2 \"type\"))>"}, {1.0});
417417
database->O[0].phi["type"].emplace_back(1);
418418
database->O[0].phi["type"].emplace_back(2);
419-
createFast(view, 3, "label \"Cleaner\"", {"< \"type\" >> label \"Cleaner\"; \"quantity\" >> ((varphi (OBJ 0)) +0) >"}, {1.0});
420-
createFast(view, 4, "label \"Soap\"", {"< \"type\" >> label \"Soap\"; \"quantity\" >> ((varphi (OBJ 0)) +0)>"}, {1.0});
421-
createFast(view, 5, "label \"Diary Product\"", {"< \"type\" >> label \"Diary Product\"; \"quantity\" >> ((varphi (OBJ 0))+0)>"}, {1.0});
422-
createFast(view, 6, "label \"Drink\"", {"< \"type\" >> label \"Food\"; \"Drink\" >> ((varphi (OBJ 0)) +0)>"}, {1.0});
419+
createFast(view, 3, "label \"Category\"", {"< \"type\" >> label \"Cleaner\"; \"quantity\" >> lfold( fun x -> { (x[0]) + (eval( (((eval((xi ((x[1]))) [0])))) [\"quantity\"] )) } , 0 : (phi 3 \"type\")) >"}, {1.0});
420+
createFast(view, 4, "label \"Category\"", {"< \"type\" >> label \"Soap\"; \"quantity\" >> lfold( fun x -> { (x[0]) + (eval( (((eval((xi ((x[1]))) [0])))) [\"quantity\"] )) } , 0 : (phi 4 \"type\"))>"}, {1.0});
421+
createFast(view, 5, "label \"Category\"", {"< \"type\" >> label \"Diary Product\"; \"quantity\" >> lfold( fun x -> { (x[0]) + (eval( (((eval((xi ((x[1]))) [0])))) [\"quantity\"] )) } , 0 : (phi 5 \"type\"))>"}, {1.0});
422+
createFast(view, 6, "label \"Category\"", {"< \"type\" >> label \"Drink\"; \"quantity\" >> lfold( fun x -> { (x[0]) + (eval( (((eval((xi ((x[1]))) [0])))) [\"quantity\"] )) } , 0 : (phi 6 \"type\"))>"}, {1.0});
423423
database->O[1].phi["type"].emplace_back(3);
424424
database->O[1].phi["type"].emplace_back(4);
425425
database->O[2].phi["type"].emplace_back(5);
426426
database->O[2].phi["type"].emplace_back(6);
427+
createFast(view, 7, "label \"Product\"", {"< \"type\" >> label \"Shiny\"; \"quantity\" >> ((varphi (OBJ 7)) + 0) >"}, {1.0});
428+
createFast(view, 8, "label \"Product\"", {"< \"type\" >> label \"Brighty\"; \"quantity\" >> ((varphi (OBJ 8)) + 0)>"}, {1.0});
429+
createFast(view, 9, "label \"Product\"", {"< \"type\" >> label \"CleanHand\"; \"quantity\" >> ((varphi (OBJ 9)) + 0)>"}, {1.0});
430+
createFast(view, 10, "label \"Product\"", {"< \"type\" >> label \"Food\"; \"quantity\" >> ((varphi (OBJ 10)) + 0)>"}, {1.0});
431+
createFast(view, 11, "label \"Product\"", {"< \"type\" >> label \"Milk\"; \"quantity\" >> ((varphi (OBJ 11)) + 0) >"}, {1.0});
432+
createFast(view, 12, "label \"Product\"", {"< \"type\" >> label \"Yogurt\"; \"quantity\" >> ((varphi (OBJ 12)) + 0)>"}, {1.0});
433+
createFast(view, 13, "label \"Product\"", {"< \"type\" >> label \"Water\"; \"quantity\" >> ((varphi (OBJ 13)) + 0)>"}, {1.0});
434+
createFast(view, 14, "label \"Product\"", {"< \"type\" >> label \"Coffee\"; \"quantity\" >> ((varphi (OBJ 14)) + 0)>"}, {1.0});
435+
database->O[3].phi["type"].emplace_back(7);
436+
database->O[3].phi["type"].emplace_back(8);
437+
database->O[4].phi["type"].emplace_back(9);
438+
database->O[4].phi["type"].emplace_back(10);
439+
database->O[5].phi["type"].emplace_back(11);
440+
database->O[5].phi["type"].emplace_back(12);
441+
database->O[6].phi["type"].emplace_back(13);
442+
database->O[6].phi["type"].emplace_back(14);
443+
createFast(view, 15, "label \"CleanHand\"");
444+
createFast(view, 16, "label \"CleanHand\"");
445+
createFast(view, 17, "label \"CleanHand\"");
446+
database->O[9].phi["type"].emplace_back(15);
447+
database->O[9].phi["type"].emplace_back(16);
448+
database->O[9].phi["type"].emplace_back(17);
449+
createFast(view, 18, "label \"Milk\"");
450+
createFast(view, 19, "label \"Milk\"");
451+
createFast(view, 20, "label \"Coffee\"");
452+
database->O[11].phi["type"].emplace_back(18);
453+
database->O[11].phi["type"].emplace_back(19);
454+
database->O[14].phi["type"].emplace_back(20);
427455
script::compiler::ScriptVisitor::bindGSM(database.get());
428456
std::ifstream file{scripts_folder / "script_11.txt"};
429457
std::cout << script::compiler::ScriptVisitor::eval(file)->toString() << std::endl;

src/gsql_gsm/script_1/ScriptAST.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,12 @@ std::string script::structures::ScriptAST::toString(bool quot) const {
135135
return arrayList[0]->toString(true) +" := ("+arrayList[1]->toString(true)+") ";
136136
case Function:
137137
if (function->body.size() == 1)
138-
return function->parameter + " -> {" + function->body[0]->toString(true) + "}";
138+
return "fun " + function->parameter + " -> {" + function->body[0]->toString(true) + "}";
139139
else
140140
{
141141
auto it = function->body.begin();
142142
// it++;
143-
return function->parameter + " -> {" + std::accumulate(it,
143+
return "fun " + function->parameter + " -> {" + std::accumulate(it,
144144
function->body.end(), std::string(""),
145145
[](const std::string& m, DPtr<script::structures::ScriptAST> obj) {
146146
return (m.empty() ? m : m+"; ") + obj->toString(true);
@@ -303,7 +303,7 @@ std::string script::structures::ScriptAST::toString(bool quot) const {
303303
return "(" + arrayList[0]->toString(true) +") != ("+ arrayList[1]->toString(true)+")";
304304

305305
case PhiX:
306-
return "phi (" + arrayList[0]->toString(true) +") * ("+ arrayList[1]->toString(true)+")";
306+
return "(phi (" + arrayList[0]->toString(true) +") ("+ arrayList[1]->toString(true)+"))";
307307

308308
case VarPhiX:
309309
return "varphi (" + arrayList[0]->toString(true) +")";
@@ -966,7 +966,7 @@ DPtr<script::structures::ScriptAST> script::structures::ScriptAST::run() {
966966
// ArrayList<DPtr<script::structures::ScriptAST>> item;
967967
// item.emplace_back(v.emplace_back(script::structures::ScriptAST::integer_((long long)content.id)));
968968
// item.emplace_back(v.emplace_back(script::structures::ScriptAST::double_(content.score)));
969-
v.emplace_back(fromObjectContent(content));
969+
v.emplace_back(integer_(content.id));
970970
}
971971
}
972972
} else {
@@ -1122,8 +1122,9 @@ DPtr<script::structures::ScriptAST> script::structures::ScriptAST::run() {
11221122
case EvalE: {
11231123
std::stringstream ss;
11241124
ss << arrayList[0]->run()->toString(false);
1125+
//std::cerr << ss.str() << std::endl;
11251126
auto res = script::compiler::ScriptVisitor::eval(ss);
1126-
std::cerr << ss.str() << std::endl;
1127+
11271128
return res;
11281129
}
11291130

0 commit comments

Comments
 (0)