Skip to content

Commit

Permalink
fix: removed tree_interpreter functionality in the demo
Browse files Browse the repository at this point in the history
The driver still exists, and should still be used. There's just no neat way of initializing a tree of symbol tables in the CLI
  • Loading branch information
Asger Gitz-Johansen committed Oct 26, 2022
1 parent 5df594e commit 1563f5f
Showing 1 changed file with 1 addition and 16 deletions.
17 changes: 1 addition & 16 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ int main (int argc, char *argv[]) {
env["hello_s"] = "Hello";
std::vector<option_t> my_options = {
{"expression", 'e', argument_requirement::REQUIRE_ARG, "(required) provide the expression to process"},
{"driver", 'd', argument_requirement::REQUIRE_ARG, "(required) determine which driver to use [z3, interpreter, tree_interpreter, compiler]"},
{"driver", 'd', argument_requirement::REQUIRE_ARG, "(required) determine which driver to use [z3, interpreter, compiler]"},
{"environment", 'm', argument_requirement::OPTIONAL_ARG, "provide an environment"},
{"unknown-environment", 'u', argument_requirement::REQUIRE_ARG, "provide an environment of unknown variables (z3 driver only)"},
{"parser-trace", 'p', argument_requirement::NO_ARG, "enable tracing for the parser"},
Expand Down Expand Up @@ -88,20 +88,11 @@ int main (int argc, char *argv[]) {
unknowns = i.result;
}

// TODO: Clean this up - but how? 🤔
// maybe have a completely separate executable?
symbol_table_tree_t tt{env};
tt.emplace(unknowns);
auto it = tt.begin();
it++;

std::shared_ptr<driver> drv{};
if(cli_arguments["driver"].as_string() == "compiler")
drv = std::make_shared<compiler>(std::initializer_list<std::reference_wrapper<const expr::symbol_table_t>>{env});
else if(cli_arguments["driver"].as_string() == "interpreter")
drv = std::make_shared<interpreter>(std::initializer_list<std::reference_wrapper<const expr::symbol_table_t>>{env});
else if(cli_arguments["driver"].as_string() == "tree_interpreter")
drv = std::make_shared<tree_interpreter>(it);
#ifdef ENABLE_Z3
else if(cli_arguments["driver"].as_string() == "z3")
drv = std::make_shared<z3_driver>(env,unknowns);
Expand Down Expand Up @@ -135,12 +126,6 @@ int main (int argc, char *argv[]) {
std::cout << drv_i->result << "\n";
std::cout << "expression_result: " << drv_i->expression_result << std::endl;
}
if(cli_arguments["driver"].as_string() == "tree_interpreter") {
auto drv_t = std::dynamic_pointer_cast<tree_interpreter>(drv);
if(!drv_t->result.empty())
std::cout << drv_t->result << "\n";
std::cout << "expression_result: " << drv_t->expression_result << "\n\n" << tt;
}
#ifdef ENABLE_Z3
if(cli_arguments["driver"].as_string() == "z3") {
auto drv_z = std::dynamic_pointer_cast<z3_driver>(drv);
Expand Down

0 comments on commit 1563f5f

Please sign in to comment.