Mathematischen ausdruck parsen und speichern



  • Lässt sich ja kombinieren, du kannst auch mit Spirit einen Parsebaum erstellen, und
    dann nach dem Parsen durch die jeweiligen Elemente iterieren.
    Hängt halt auch davon ab, was du letztendlich machen willst.



  • Du kannst auch eine Scriptsprache einbinden. Z.B. ist LUA ganz gut für sowas geeignet. Wenn es keine hochkomplexen mathematischen Formelns sein müssen, würde ich das Rad nicht neu erfinden.



  • na dann schau ich mir des yacc nomma an, iss das an irgendwelche lizensen gebunden ??? weil da iss schon wieder schluss



  • boost::spirit ist unter der Boost Lizenz.
    Bei yacc weiss ich es nicht.



  • damit fällt spirit schonmal flach

    any distributed code contains source code .... ich geh mal davona us, wo ichs einsetze muss ich auch alles offenlegen ....



  • Ceos schrieb:

    damit fällt spirit schonmal flach

    any distributed code contains source code .... ich geh mal davona us, wo ichs einsetze muss ich auch alles offenlegen ....

    How is the Boost license different from the GNU General Public License (GPL)?

    The Boost license permits the creation of derivative works for commercial or non-commercial use with no legal requirement to release your source code. Other differences include Boost not requiring reproduction of copyright messages for object code redistribution, and the fact that the Boost license is not "viral": if you distribute your own code along with some Boost code, the Boost license applies only to the Boost code (and modified versions thereof); you are free to license your own code under any terms you like. The GPL is also much longer, and thus may be harder to understand.

    Die Boost lizenz ist recht frei, solange du boost nicht selber veränderst.



  • mh ok ... trotzdem wird mir im moment nicht ganz klar was genau bei dem spirit hinten rauskommt, wenn ich ihn verwende???

    wenn ich meinen text parse, was kommt am ende dabei raus .... ich hab zwar ne vermutung aber will nicht vorgreifen

    nur um eventuelle missverständnissen vozubeugen, ich möchte zur runtime eine datei mit spezifikationen parsen (c ähnlicher code), diese in einer baumstruktur speichern und dann auf datenströme anwenden, dabei können je nach aus dem datensrom gelesenem wert unterschiedliche interpretationen des datenstrom folgen.



  • Traditionell liefert Spirit eine Information, ob der eingegebene Satz zur Grammatik passt (bzw. die Position des ersten "Syntax"-Fehlers). Aber du kannst an die Regeln auch Anweisungen anhängen, mit denen du z.B. deinen Syntaxbaum zusammenbasteln kannst (ist eine Weile her, daß ich das gemacht habe - aber es funktioniert).



  • Im Forummagazin ist ein sehr aufschlussreicher Artikel zu Spirit! Kann ich nur empfehlen für den Einstieg! 👍



  • Also bei spirit kann so ziemlich alles rauskommen 😉
    Bei deiner Anwendung ists wohl am sinnvollsten einen parse_tree zu nutzen, und dann jeweils
    für die Regeln eine eigene ID zu vergeben (enum z.b.).
    Schau einfach mal im Magazin, da gibt es einen Artikel zu spirit.



  • vielen dank, ich denke das ich damit arbeiten kann, leider bin ich hiermit schon zu weit fortgeschritten, mal davon abgesehen das ich das problem schon gelöst hab .
    ich hab nur meine bedingungen umgedreht, jetzt parst er richtig

    andere frage, wo find ich den boost::spirit eigentlich, verwende BDS2006 und demnächst auch VS.NET?



  • Du musst dir boost herunterladen, oder auf spirit.sourceforge.net gibts auch eine standalone Version von Spirit.



  • hier z.Bsp.
    http://spirit.sourceforge.net/
    Beim BCB mußt du evtl. eine ältere Version verwenden (1.6.3) da die Neuesten zu Borlandcompilern nicht kompatibel waren. Das war zumindest beim BCB5 und 6 so. Spirit habe ich mit dem BDS2006 noch nicht probiert.



  • wenns nich BDS kompatibel iss fällts flach, aber das system iss ja mal voll das was ich gesucht habe, auch wenn mir noch nicht ganz klar geworden ist wie ich geparste texte speichern kann XD aber wie gesagt da mach ich mir später gedanken zu



  • Also auf dem GCC und MS Compilern läuft es, BCB müsste auch unterstützt werden in den 1.6 Zweig.


Anmelden zum Antworten