[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.


Anmelden zum Antworten