[spirit]Datei parsen
-
void echo(file_iterator<char>,file_iterator<char>){}; template<class iterator_t> struct m_grammar:public grammar<m_grammar<iterator_t> > { template<class ScannerT> struct definition { definition(const m_grammar&){}; rule <ScannerT> start(){return *(anychar_p[&echo]);}; }; }; int main() { typedef file_iterator<char> iterator_t; iterator_t b("test.parse"); iterator_t e=b.make_end(); m_grammar<iterator_t> mg; parse(b,e,mg); return 0; };
Er meckert, dass erecho mit const char* aufrufen will, was natürlich nicht geht. Warum das? Vor allem: wenn echo const char* erwartet, wird file_iterator<char> übergeben, was auch nicht geht...
/edit: hm, bei diesem mini-bsp. lag der Fehler woanders...
-
ness schrieb:
template<class iterator_t> struct m_grammar:public grammar<m_grammar<iterator_t> >
hm, geht das überhaupt ??
Devil
-
Sollte meines wissens nach. Der Fehler tritt übrigens auch auf, wenn ich iterator_t hardcode...
/edit:OMG! Der gcc scheint ganz schön verwirrt gewesen zu sein... Internal compiler error, Fehler a einer unmöglichen Stelle... Jedenfalls hatte ich in einer anderen Funktion den parser noch anders instanziert, das machte irgendwie Probleme.