Syntax und Semantik. Einen String "richtig" auseinandernehmen...



  • hi, die antwort war ja mal superfix.

    sieht scharf aus und hört sich hochtrabend an, da wird sich der prof freuen^^
    EBNF syntax hab ich noch nie gehört, ich werd mich mal damit beschäftigen.

    ich halte den thread aktuell....



  • die syntax ist eigentlich nichts weiteres als ein mittel, um die grammatik zu ordnen. sie hilft dir schwarz auf weis darzustellen, wie eine eingabe aussehen kann.

    am ende ist das nichts weiteres als sowas in eindeutiger schreibweise:

    //pseudocode für einen einfachen parser der addition und multiplikation kennt
    Zahl=ein oder mehr Zeichen von '0' bis '9'
    Addition= Zahl '+' Term
    Multiplikation=Zahl '*' Term 
    Term= Addition oder Multiplikation
    

    das coole an spirit ist, dass es so aufgebaut ist, dass man EBNF fast 1:1 darin übersetzen kann(mit ein paar ekelhaften zusatzfeatures, aber der grundaufbau geht so)



  • hi, ich hab mich mal mit spirit beschäftigt. das problem ist, das ich nicht mal die beispiele machen kann. es heisst im manual "...,the entire framework consists of only header files, with no libraries to link or against to build. Just put the spirit distri in your include path and compile..." gesagt getan. aber er will die #include <spirit-1.8.4/boost/spirit.hpp> datei nicht. bzw ist in der spirit.hpp eine datei die er nicht zu finden behauptet aber sie ist definitiv da.

    es existiert auch kein komplettes beispielprogramm wo zu sehen ist welche header dateien ich includen muss.oO



  • Include-Pfade deines Compilers richtig gesetzt?



  • omg. son mist ... "compiler not supported" geht das mit vs6.0 tatsächlich net? es heißt doch "...the entire framework consists of only header files..." oder hat das eine mit dem anderen nix zu tun???



  • Das eine hat mit dem anderen nix zu tun. Der VC6 ist einfach Mist.



  • Wenn ich mich nicht täusche, gibt es für ne frühere Version einen Workaround für VC6... Musst mal in den Archiven der Spirit Homepage suchen...

    Ansonsten VS2005 Express C++ gibts umsonst... oder den gcc...

    Gruß



  • ich schau mal. vc2005 find ich gelinde gesagt zum K***** die installation/deinstallation dauert ewig. er findet fehler im fertigen programm die in vc6 nichmal als warnung auftauchen und ich bin auch nicht gewillt die ganzen "fehler" die der mir vorwirft aus den über 2500 zeilen code rauszufriemeln. das hab ich schonmal durch und die exe liess sich noch nichteinmal starten.



  • soldalot schrieb:

    ich schau mal. vc2005 find ich gelinde gesagt zum K***** die installation/deinstallation dauert ewig. er findet fehler im fertigen programm die in vc6 nichmal als warnung auftauchen und ich bin auch nicht gewillt die ganzen "fehler" die der mir vorwirft aus den über 2500 zeilen code rauszufriemeln. das hab ich schonmal durch und die exe liess sich noch nichteinmal starten.

    Das liegt aber nicht an VS2005 sondern an Deinem inkorrekten Code.



  • scheinbar ist hat vc6 wirklich langsam ausgedient....

    http://osdir.com/ml/parsers.spirit.general/2003-04/msg00337.html

    ich habe jetzt mal geschaut und auch eine spirit version für vc6+sp3 im sourceforge archiv gefunden. ich hoffe mal es geht. ansonsten werde ich wohl in zukunft die vc8.0er ver nutzen. jetzt umzusteigen ist schlichtweg nicht möglich da insgesamt 4 leute an dem projekt arbeiten. ich möchte denen nicht zumuten jetzt noch vc2005 installieren zu müssen...



  • nutz doch den gcc. Code::Blocks als Ide ist in Ordnung. Übrigens, der VC6 mäkelt soviele sachen nicht an, weil er einfach älter ist, als der erste offizielle standard, und der kam 1998 raus! Nebenbei: 2500zeilen code sind zwar nervig aber kein Weltuntergang. normalerweise sind das kleinigkeiten, und die sind schnell geändert.

    Viel mehr zeit geht wahrscheinlich dadurch verloren, eine uralt spirit Version zum laufen zu bringen, denn seitdem hat sich einiges getan.



  • ich habs übrigens geschafft. ich habs dann doch nochmal mit vc8.0 versucht und siehe da die examples lassen sich kompilieren. die fehler aus unseren prog habe ich auch beseitigt. über was der so alles rummeckert is scho erstaunlich, z.b.

    for(int i=0;i<=temp_str.size();i++)

    "<= konflikt zwischen signed und unsigned...." egal, i als unsigned und es geht.

    jetzt muss ich den anderen nur noch verklickern das sie den neuen compiler brauchen.... so ich muss jetzt erstmal zur vorlesung. ich mache mich dann heute abend noch dabei und schreibe die grammatik in ebnf...


Anmelden zum Antworten