#include "Piraha.hpp" using namespace piraha; extern smart_ptr compile(smart_ptr g,bool ignCase,smart_ptr gram); smart_ptr pegGrammar = AutoGrammar::reparserGenerator(); void Grammar::compile(std::string name,smart_ptr g) { default_rule = name; smart_ptr p = ::compile(g,false,this); patterns.put(name,p); } void Grammar::compile(std::string name,std::string pattern) { default_rule = name; smart_ptr m = new Matcher(pegGrammar,"pattern",pattern.c_str()); smart_ptr g = m.dup(); if(m->matches()) { smart_ptr p = ::compile(g,false,this); patterns.put(name,p); } else { std::cout << "Could not compile(" << name << "," << pattern << ")" << std::endl; std::cout << "pos = " << m->pos << std::endl; assert(false); } }