XML-Parser: jemand lust zu testen?



  • ich hab jetzt endlich eine lauffähige und hoffentlich fehlerfreie version meines parsers fertig, und ich wollte mal fragen, ob jemand lust hätte ihn zu testen 🙂

    um ihn zu benutzen braucht man boost auf dem Pc(wegen spirit und anderer kleinigkeiten). Ein Beispiel findet ihr in der im Paket enthaltenen test.cpp

    Zum thema doku: da siehts noch etwas Mau aus, da ich glaube, dass sich das interface jetzt noch sehr stark ändern wird, genauso wie das design ansich.

    Ich hoffe, das Beispiel ist ausführlich genug, damit man auch ohne Doku testen kann.

    ansonsten:

    //allgemeines
    op[](const Key& key) sucht alle knoten mit dem übergebenen schlüssel raus
    access(int n) liefert den nten Knoten zurück
    begin()/end() liefern das iteratorpaar um über die Kindknoten zu iterieren

    //für Nodes
    get() liefert den im Knoten gespeicherten Wert als string zurück
    get<T>() liefert den nach T konvertierten wert zurück

    //parsen
    parseFromFile(filename) übergeben wird entweder ein std::basic_string oder ein cstring.
    parse(...) nimmt entweder einen string, einen cstring oder ein iteratorpaar auf den zu parsenden code.

    link zum Download

    hoffe, es ist nich ganz sos chlimm, was ich da fabriziert hab 😃



  • hi,

    habs mal compiliert:

    ------ Build started: Project: XMLParser, Configuration: Debug Win32 ------
    
    Compiling...
    test.cpp
    c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\test.cpp(27) : warning C4288: nonstandard extension used : 'i' : loop control variable declared in the for-loop is used outside the for-loop scope; it conflicts with the declaration in the outer scope
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\test.cpp(26) : definition of 'i' used
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\test.cpp(23) : definition of 'i' ignored
    c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\Node.hpp(92) : error C3861: 'assert': identifier not found, even with argument-dependent lookup
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\Node.hpp(91) : while compiling class-template member function 'XML::Node<Char> &XML::Node<Char>::access(size_t)'
            with
            [
                Char=char
            ]
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\TagTree.hpp(16) : see reference to class template instantiation 'XML::Node<Char>' being compiled
            with
            [
                Char=char
            ]
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\test.cpp(5) : see reference to class template instantiation 'XML::TagTree<Char>' being compiled
            with
            [
                Char=char
            ]
    
    Build log was saved at "file://c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\Debug\BuildLog.htm"
    XMLParser - 1 error(s), 1 warning(s)
    
    ---------------------- Done ----------------------
    
        Build: 0 succeeded, 1 failed, 0 skipped
    

    dann hab ich das int i auskommentiert in der test.cpp, in header (Node.hpp, Nodecollection.hpp) die #include <cassert> dazu gemacht...

    noch mal compiliert:

    ------ Build started: Project: XMLParser, Configuration: Debug Win32 ------
    
    Compiling...
    test.cpp
    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\xstring(360) : error C2512: 'std::basic_string<_Elem>::_Bxty' : no appropriate default constructor available
            with
            [
                _Elem=const char
            ]
            c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\xstring(358) : while compiling class-template member function 'std::basic_string<_Elem>::basic_string(_Elem *)'
            with
            [
                _Elem=const char
            ]
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\char_convert.hpp(158) : see reference to class template instantiation 'std::basic_string<_Elem>' being compiled
            with
            [
                _Elem=const char
            ]
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\TagParser.hpp(32) : see reference to function template instantiation 'utility::privat::ConvertHelper<To,From,__formal>::returnType utility::char_convert<XML::TagParser::definition<Scanner>::Char,const char[3]>(From (&))' being compiled
            with
            [
                To=XML::TagParser::definition<scanner_t>::Char,
                From=const char [3],
                __formal=false,
                Scanner=scanner_t
            ]
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\TagParser.hpp(28) : while compiling class-template member function 'XML::TagParser::definition<Scanner>::definition(const XML::TagParser &)'
            with
            [
                Scanner=scanner_t
            ]
            c:\Boost\include\boost-1_32\boost\spirit\core\non_terminal\impl\grammar.ipp(262) : see reference to class template instantiation 'XML::TagParser::definition<Scanner>' being compiled
            with
            [
                Scanner=scanner_t
            ]
            c:\Boost\include\boost-1_32\boost\spirit\core\non_terminal\impl\grammar.ipp(281) : see reference to function template instantiation 'void boost::spirit::impl::call_helper<0>::do_<result_t,definition_t,ScannerT>(RT &,DefinitionT &,const ScannerT &)' being compiled
            with
            [
                ScannerT=scanner_t,
                RT=result_t,
                DefinitionT=definition_t
            ]
            c:\Boost\include\boost-1_32\boost\spirit\core\non_terminal\grammar.hpp(53) : see reference to function template instantiation 'boost::spirit::parser_result<ParserT,ScannerT>::type boost::spirit::impl::grammar_parser_parse<0,XML::TagParser,boost::spirit::parser_context<>,ScannerT>(const boost::spirit::grammar<DerivedT> *,const ScannerT &)' being compiled
            with
            [
                ParserT=boost::spirit::grammar<XML::TagParser>::self_t,
                ScannerT=scanner_t,
                DerivedT=XML::TagParser
            ]
            c:\Boost\include\boost-1_32\boost\spirit\core\non_terminal\grammar.hpp(63) : see reference to function template instantiation 'boost::spirit::parser_result<ParserT,ScannerT>::type boost::spirit::grammar<DerivedT>::parse_main<ScannerT>(const ScannerT &) const' being compiled
            with
            [
                ParserT=boost::spirit::grammar<XML::TagParser>::self_t,
                ScannerT=scanner_t,
                DerivedT=XML::TagParser
            ]
            c:\Boost\include\boost-1_32\boost\spirit\core\composite\kleene_star.hpp(58) : see reference to function template instantiation 'boost::spirit::parser_result<ParserT,ScannerT>::type boost::spirit::grammar<DerivedT>::parse<ScannerT>(const ScannerT &) const' being compiled
            with
            [
                ParserT=boost::spirit::grammar<XML::TagParser>::self_t,
                ScannerT=scanner_t,
                DerivedT=XML::TagParser
            ]
            c:\Boost\include\boost-1_32\boost\spirit\tree\ast.hpp(273) : see reference to function template instantiation 'boost::spirit::parser_result<ParserT,ScannerT>::type boost::spirit::kleene_star<S>::parse<scanner_t>(const ScannerT &) const' being compiled
            with
            [
                ParserT=boost::spirit::kleene_star<XML::TagParser>::self_t,
                ScannerT=scanner_t,
                S=XML::TagParser
            ]
            c:\Boost\include\boost-1_32\boost\spirit\tree\ast.hpp(289) : see reference to function template instantiation 'boost::spirit::tree_parse_info<IteratorT> boost::spirit::ast_parse<boost::spirit::node_val_data_factory<ValueT>,IteratorT,boost::spirit::kleene_star<S>,SkipT>(const IteratorT &,const IteratorT &,const boost::spirit::parser<DerivedT> &,const SkipT &,const AstFactoryT &)' being compiled
            with
            [
                IteratorT=Iterator,
                ValueT=boost::spirit::nil_t,
                S=XML::TagParser,
                SkipT=boost::spirit::space_parser,
                DerivedT=boost::spirit::kleene_star<XML::TagParser>,
                AstFactoryT=boost::spirit::node_val_data_factory<boost::spirit::nil_t>
            ]
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\XMLParser.hpp(39) : see reference to function template instantiation 'boost::spirit::tree_parse_info<IteratorT> boost::spirit::ast_parse<Iterator,boost::spirit::kleene_star<S>,boost::spirit::space_parser>(const IteratorT &,const IteratorT &,const boost::spirit::parser<DerivedT> &,const SkipT &)' being compiled
            with
            [
                IteratorT=Iterator,
                Iterator=Iterator,
                S=XML::TagParser,
                DerivedT=boost::spirit::kleene_star<XML::TagParser>,
                SkipT=boost::spirit::space_parser
            ]
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\XMLParser.hpp(92) : see reference to function template instantiation 'XML::TagTree<Char> XML::parse<Iterator>(Iterator,Iterator)' being compiled
            with
            [
                Char=char,
                Iterator=Iterator
            ]
            c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\test.cpp(9) : see reference to function template instantiation 'XML::TagTree<Char> XML::parseFromFile<char>(const Char *)' being compiled
            with
            [
                Char=char
            ]
    
    Build log was saved at "file://c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\Debug\BuildLog.htm"
    XMLParser - 1 error(s), 0 warning(s)
    
    ---------------------- Done ----------------------
    
        Build: 0 succeeded, 1 failed, 0 skipped
    

    naja in der xstring woll ich nicht ändern;-) was soll ich nun ändern?

    cu



  • oh, den fehler hab ich ja jetzt garnicht erwartet... bei mir compiled das so fehlerfrei...



  • keine ahnung, was da los ist. der fehler dürfte eigentlich nicht auftauchen. Wenn du eine ide benutzt, weist du, in welcher Datei/zeile ich diesen verhängnisvollen aufruf tätige?

    aber wenn ich mir die fehlermeldungen mal anschaue:

    macht xstring denn in diesem ctor auch sonst probleme?
    std::basic_string<_Elem>::basic_string(_Elem 😉



  • mit dem gcc kompilierts auch nicht.



  • ähm ich benutze den gcc und bei mir kompilierts 🙄

    sag mal die fehlermeldungen



  • zunächst fehlte da in zwei dateien include <cassert>.

    Danach kommt das hier (oder muss man da noch irgendwelche compiler-optionen für boost mit angeben?):

    /tmp/xml% g++ --version
    g++ (GCC) 3.3.5 (Debian 1:3.3.5-8)
    
    /tmp/xml% g++ *.cpp
    /usr/include/boost/spirit/tree/common.hpp: In member function `void 
       boost::spirit::common_tree_match_policy<MatchPolicyT, IteratorT, 
       NodeFactoryT, TreePolicyT>::group_match(MatchT&, const 
       boost::spirit::parser_id&, const IteratorT2&, const IteratorT2&) const [with 
       MatchT = boost::spirit::tree_match<boost::spirit::file_iterator<char, 
       boost::spirit::fileiter_impl::std_file_iterator<char> >, 
       boost::spirit::node_val_data_factory<boost::spirit::nil_t>, 
       std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, 
       IteratorT2 = boost::spirit::file_iterator<char, 
       boost::spirit::fileiter_impl::std_file_iterator<char> >, MatchPolicyT = 
       boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, 
       boost::spirit::fileiter_impl::std_file_iterator<char> >, 
       boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, IteratorT = 
       boost::spirit::file_iterator<char, 
       boost::spirit::fileiter_impl::std_file_iterator<char> >, NodeFactoryT = 
       boost::spirit::node_val_data_factory<boost::spirit::nil_t>, TreePolicyT = 
       boost::spirit::ast_tree_policy<boost::spirit::ast_match_policy<boost::spirit::file_iterator<char,
       boost::spirit::fileiter_impl::std_file_iterator<char> >, 
       boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, 
       boost::spirit::node_val_data_factory<boost::spirit::nil_t> >]':
    /usr/include/boost/spirit/core/non_terminal/impl/rule.ipp:191:   instantiated from `typename boost::spirit::parser_result<DerivedT, ScannerT>::type boost::spirit::impl::rule_base<DerivedT, EmbedT, T0, T1, T2>::parse_main(const ScannerT&) const [with ScannerT = boost::spirit::scanner<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::space_parser, boost::spirit::iteration_policy>, boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, boost::spirit::action_policy> >, DerivedT = boost::spirit::rule<boost::spirit::scanner<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::space_parser, boost::spirit::iteration_policy>, boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, boost::spirit::action_policy> >, boost::spirit::closure_context<XML::Closure1<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, boost::spirit::nil_t>, EmbedT = const boost::spirit::rule<boost::spirit::scanner<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::space_parser, boost::spirit::iteration_policy>, boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, boost::spirit::action_policy> >, boost::spirit::closure_context<XML::Closure1<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, boost::spirit::nil_t>&, T0 = boost::spirit::scanner<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::space_parser, boost::spirit::iteration_policy>, boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, boost::spirit::action_policy> >, T1 = boost::spirit::closure_context<XML::Closure1<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, T2 = boost::spirit::nil_t]'
    /usr/include/boost/spirit/core/non_terminal/impl/rule.ipp:171:   instantiated from `typename boost::spirit::parser_result<DerivedT, ScannerT>::type boost::spirit::impl::rule_base<DerivedT, EmbedT, T0, T1, T2>::parse(const ScannerT&) const [with ScannerT = boost::spirit::scanner<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::space_parser, boost::spirit::iteration_policy>, boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, boost::spirit::action_policy> >, DerivedT = boost::spirit::rule<boost::spirit::scanner<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::space_parser, boost::spirit::iteration_policy>, boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, boost::spirit::action_policy> >, boost::spirit::closure_context<XML::Closure1<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, boost::spirit::nil_t>, EmbedT = const boost::spirit::rule<boost::spirit::scanner<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::space_parser, boost::spirit::iteration_policy>, boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, boost::spirit::action_policy> >, boost::spirit::closure_context<XML::Closure1<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, boost::spirit::nil_t>&, T0 = boost::spirit::scanner<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::space_parser, boost::spirit::iteration_policy>, boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, boost::spirit::action_policy> >, T1 = boost::spirit::closure_context<XML::Closure1<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, T2 = boost::spirit::nil_t]'
    /usr/include/boost/spirit/core/non_terminal/impl/rule.ipp:233:   instantiated from `typename boost::spirit::match_result<ScannerT, ContextResultT>::type boost::spirit::impl::concrete_parser<ParserT, ScannerT, AttrT>::do_parse_virtual(const ScannerT&) const [with ParserT = boost::spirit::rule<boost::spirit::scanner<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::space_parser, boost::spirit::iteration_policy>, boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, boost::spirit::action_policy> >, boost::spirit::closure_context<XML::Closure1<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, boost::spirit::nil_t>, ScannerT = boost::spirit::scanner<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::space_parser, boost::spirit::iteration_policy>, boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, boost::spirit::fileiter_impl::std_file_iterator<char> >, boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, boost::spirit::action_policy> >, AttrT = boost::spirit::nil_t]'
    /usr/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:98:   instantiated from here
    /usr/include/boost/spirit/tree/common.hpp:730: error: no matching function for 
       call to `
       boost::spirit::ast_tree_policy<boost::spirit::ast_match_policy<boost::spirit::file_iterator<char,
       boost::spirit::fileiter_impl::std_file_iterator<char> >, 
       boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, 
       boost::spirit::node_val_data_factory<boost::spirit::nil_t> >::group_match(
       boost::spirit::tree_match<boost::spirit::file_iterator<char, 
       boost::spirit::fileiter_impl::std_file_iterator<char> >, 
       boost::spirit::node_val_data_factory<boost::spirit::nil_t>, 
       std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, 
       const boost::spirit::parser_id&, const boost::spirit::file_iterator<char, 
       boost::spirit::fileiter_impl::std_file_iterator<char> >&, const 
       boost::spirit::file_iterator<char, 
       boost::spirit::fileiter_impl::std_file_iterator<char> >&)'
    /usr/include/boost/spirit/tree/ast.hpp:105: error: candidates are: static void 
       boost::spirit::ast_tree_policy<MatchPolicyT, 
       NodeFactoryT>::group_match(typename 
       boost::spirit::common_tree_tree_policy<MatchPolicyT, 
       NodeFactoryT>::match_t&, const boost::spirit::parser_id&, const Iterator1T&, 
       const Iterator2T&) [with Iterator1T = boost::spirit::file_iterator<char, 
       boost::spirit::fileiter_impl::std_file_iterator<char> >, Iterator2T = 
       boost::spirit::file_iterator<char, 
       boost::spirit::fileiter_impl::std_file_iterator<char> >, MatchPolicyT = 
       boost::spirit::ast_match_policy<boost::spirit::file_iterator<char, 
       boost::spirit::fileiter_impl::std_file_iterator<char> >, 
       boost::spirit::node_val_data_factory<boost::spirit::nil_t> >, NodeFactoryT = 
       boost::spirit::node_val_data_factory<boost::spirit::nil_t>]
    


  • hmm hast du die neueste spirit version? die neueste ist noch in keinem boost package drin sondern wird erst noch separat angeboten. vielleicht liegts ja daran?



  • ich bekomme die geleichen fehler wie DrGreenthumb. wie wärs wenn du ein Makefile dabei gibst?



  • otze schrieb:

    hmm hast du die neueste spirit version? die neueste ist noch in keinem boost package drin sondern wird erst noch separat angeboten. vielleicht liegts ja daran?

    keine ahnung, ich habe natürlich nur das debian-paket.



  • noch nie ne makefile erstellt, hab mich jetzt einfach mal auf den mingw verlassen, dass er das richtig macht:
    makefile

    @DrGreenthumb
    dann hast du wahrscheinlich nicht die neueste version...

    //edit oops in der makefile war noch ne falsche option drin, der wird in der TagParser hpp im ctor von definition das "self" ankreiden wenn ihr die benutzt. war glaub der hebel extra warnings(ist aber so immernoch der einzige fehler der den der mir ankreidet...)



  • Nabend,

    ist die .rar-Datei kaputt? Ich hab dort nur eine ausfuehrbare Datei drin, keinen
    Source.

    Und falls das eine selbst entpackende Datei ist, dann funktioniert sie bei mir
    nicht.

    mfg
    v R



  • mit dem makefile kann ich unter linux nichts anfangen 😃
    ich hab nochmal geguckt, ich kriege exakt die gleiche fehlermeldung wie DrGreenthumb. scheint so als hättest du eine andere boost-version als wir.



  • virtuell Realisticer schrieb:

    Nabend,

    ist die .rar-Datei kaputt? Ich hab dort nur eine ausfuehrbare Datei drin, keinen
    Source.

    Und falls das eine selbst entpackende Datei ist, dann funktioniert sie bei mir
    nicht.

    mfg
    v R

    huch. hab gestern für wen anders diese rar datei als ausführbare datei hochgeladen, wusste net,dass die das überschreiben. ok, ich lad nochmal das paket hoch^^

    //edit ist alles wieder da

    @borg eine andre spirit version



  • ok, ich hab version 1.32, du hast 1.82. daran wirds liegen.
    wenn mir jetzt noch einer erklärt wie dieses jam funtioniert kann ichs vielleicht sogar testen 🤡



  • Hier ist eine Anleitung wie man es machen kann: http://www.kharchi.de/Boost_Installation.html



  • @borg lad dir das boost package runter. auf der selben seite findest du auch die aktuelle jamfile für dein betriebssystem. einfach runterladen und mit den optionen die auf der der seite von kharchi aufgeführt sind ausführen.



  • Gibts jemanden der das ausprobiert hat und bei dem das dann funktionierte? kann ja net sein, dass etwas was bei mir mit -pedantic funktioniert hier niemand zum laufen kriegt 😞



  • keine ahnung, was da los ist. der fehler dürfte eigentlich nicht auftauchen. Wenn du eine ide benutzt, weist du, in welcher Datei/zeile ich diesen verhängnisvollen aufruf tätige?

    aber wenn ich mir die fehlermeldungen mal anschaue:

    macht xstring denn in diesem ctor auch sonst probleme?
    std::basic_string<_Elem>::basic_string(_Elem 😉

    hi,

    hab visual studio .net 2003 mit boost 1.32

    hab noch nie probleme mit xstring gehabt!!!

    hier mal noch die fehlermeldungen mit dem betreffenden code:

    c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\char_convert.hpp(158) : see reference to class template instantiation 'std::basic_string<_Elem>' being compiled
            with
            [
                _Elem=const char
            ]
    
    return privat::ConvertHelper<To,From,boost::is_pointer<From>::value>::convert(input);
    
    c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\TagParser.hpp(32) : see reference to function template instantiation 'utility::privat::ConvertHelper<To,From,__formal>::returnType utility::char_convert<XML::TagParser::definition<Scanner>::Char,const char[3]>(From (&))' being compiled
            with
            [
                To=XML::TagParser::definition<scanner_t>::Char,
                From=const char [3],
                __formal=false,
                Scanner=scanner_t
            ]
    
    endTagBegin=utility::char_convert<Char>("</");
    
     c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\TagParser.hpp(28) : while compiling class-template member function 'XML::TagParser::definition<Scanner>::definition(const XML::TagParser &)'
            with
            [
                Scanner=scanner_t
            ]
    
    definition(const TagParser& self){
    
    c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\XMLParser.hpp(39) : see reference to function template instantiation 'boost::spirit::tree_parse_info<IteratorT> boost::spirit::ast_parse<Iterator,boost::spirit::kleene_star<S>,boost::spirit::space_parser>(const IteratorT &,const IteratorT &,const boost::spirit::parser<DerivedT> &,const SkipT &)' being compiled
            with
            [
                IteratorT=Iterator,
                Iterator=Iterator,
                S=XML::TagParser,
                DerivedT=boost::spirit::kleene_star<XML::TagParser>,
                SkipT=boost::spirit::space_parser
            ]
    
    boost::spirit::tree_parse_info<Iterator> info=boost::spirit::ast_parse(begin,end,*parser,boost::spirit::space_p);
    
    c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\XMLParser.hpp(92) : see reference to function template instantiation 'XML::TagTree<Char> XML::parse<Iterator>(Iterator,Iterator)' being compiled
            with
            [
                Char=char,
                Iterator=Iterator
            ]
    
    return parse(first,last);
    
    c:\Dokumente und Einstellungen\Gerald\Desktop\XMLParser\test.cpp(9) : see reference to function template instantiation 'XML::TagTree<Char> XML::parseFromFile<char>(const Char *)' being compiled
            with
            [
                Char=char
            ]
    
    XML::TagTree<char> test=XML::parseFromFile("test.xml");
    

    hast du den bug schon gefunden...lad die funktionierende version noch mal hoch!! dann test ich noch mal...

    cu



  • Leider kann ich das jetzt nicht mehr runterladen. Der Link ist ungültig. Evtl kann ich das morgen auf der Arbeit mal kurz durchtesten, wenn du das Rar-File noch mal hochlädst.


Anmelden zum Antworten