From b58bdaba1d06f8261d5082fb928c13d239bddf14 Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Fri, 22 Sep 2017 19:01:33 +0200 Subject: [PATCH] [poincare] Proper RuleSet namespacing --- .../src/simplification/rules_generation/node.cpp | 2 +- .../src/simplification/rules_generation/rule.cpp | 4 ++-- .../rules_generation/rules_parser.y | 15 +++++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/poincare/src/simplification/rules_generation/node.cpp b/poincare/src/simplification/rules_generation/node.cpp index a60228426..e1776de81 100644 --- a/poincare/src/simplification/rules_generation/node.cpp +++ b/poincare/src/simplification/rules_generation/node.cpp @@ -47,7 +47,7 @@ void Node::generateSelector(Rule * rule) { } void Node::generateTransform() { - std::cout << "constexpr " << *m_name << " t;" << std::endl; + std::cout << "constexpr " << *m_name << " transform;" << std::endl; } int Node::indexOfChildrenWithIdentifier(std::string identifier) { diff --git a/poincare/src/simplification/rules_generation/rule.cpp b/poincare/src/simplification/rules_generation/rule.cpp index bfdef524d..5daa832e0 100644 --- a/poincare/src/simplification/rules_generation/rule.cpp +++ b/poincare/src/simplification/rules_generation/rule.cpp @@ -7,9 +7,9 @@ void Rule::generate(int index) { m_selector->identifyAnonymousChildren(&selectorIndex); m_selector->generateSelector(this); m_transform->generateTransform(); - std::cout << "constexpr Rule r(&" + std::cout << "constexpr Rule rule(&" << m_selector->identifier() - << ", &t);" << std::endl; + << ", &transform);" << std::endl; std::cout << "}" << std::endl; } diff --git a/poincare/src/simplification/rules_generation/rules_parser.y b/poincare/src/simplification/rules_generation/rules_parser.y index 3a466f791..d6a3f6dc7 100644 --- a/poincare/src/simplification/rules_generation/rules_parser.y +++ b/poincare/src/simplification/rules_generation/rules_parser.y @@ -97,13 +97,28 @@ int yyerror(std::vector ** rules, const char *s) { } int main(void) { + std::string rulesetName = "MyRuleSet"; std::vector * rules = new std::vector(); yyparse(&rules); + std::cout << "namespace " << rulesetName << "Rules {" << std::endl; + for (int i=0; isize(); i++) { rules->at(i)->generate(i); } + + std::cout << "constexpr Rule rules[" << rules->size() << "] = {"; + for (int i=0; isize(); i++) { + std::cout << "Rule" << i << "::rule"; + if (i+1 != rules->size()) { + std::cout << ", "; + } + } + std::cout << "};" << std::endl; + std::cout << "};" << std::endl; + std::cout << "constexpr RuleSet " << rulesetName << "(" << rulesetName << "Rules::rules, " << rules->size() << ");" << std::endl; + #if 0 std::cout << "#include \"rules.h\"" << std::endl;