[poincare] Proper RuleSet namespacing

This commit is contained in:
Romain Goyet
2017-09-22 19:01:33 +02:00
parent ec81a5aee8
commit b58bdaba1d
3 changed files with 18 additions and 3 deletions

View File

@@ -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) {

View File

@@ -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;
}

View File

@@ -97,13 +97,28 @@ int yyerror(std::vector<Rule *> ** rules, const char *s) {
}
int main(void) {
std::string rulesetName = "MyRuleSet";
std::vector<Rule *> * rules = new std::vector<Rule *>();
yyparse(&rules);
std::cout << "namespace " << rulesetName << "Rules {" << std::endl;
for (int i=0; i<rules->size(); i++) {
rules->at(i)->generate(i);
}
std::cout << "constexpr Rule rules[" << rules->size() << "] = {";
for (int i=0; i<rules->size(); 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;