So much to code…

…so little time!

Wie wahr doch dieser Spruch ist!

Momentan bin ich wieder ziemlich dabei, Phorward Software weiter zu bringen. Was mich ein wenig nervt ist (wieder mal) mein Perfektionsdrang, der sich zur Zeit in einer radikalen Änderung der libphorward wiederspiegelt, wie auch in der Tatsache, dass der UniCC Parser Generator, ein Projekt an dem ich 6 Jahre (!) sporadisch gearbeitet habe, sozusagen für die Katz war. Das Programm ist Feature complete, und ich sehe darin auch keine große Zukunft – weil es nicht flexibel genug ist. Letztendlich. Hm.

Nein, die Zukunft liegt momentan eher in der libphorward, und der Erweiterung die ich vor einiger Zeit mal vorgestellt hatte als pggrammar. Inzwischen ist aus diesem Anfang schon eine beachtliche Menge Code geworden. pggrammar, oder das, was daraus wird, wird eine Spielwiese für Grammatiken, Lexer und Parser, also das, was UniCC als Code Generator verkörpert, nur in Form einer Library. Das schöne dabei ist, dass man bei einer Library – basierend auf einem objektorientiertem Ansatz – eine extrem flexible Software machen kann, die letztendlich keine Wünsche mehr offen lässt. Zumindest denke ich das.

Zur Zeit versuche ich das, was in diesem Klassendiagramm zu finden ist, in die libphorward einzubauen.

pggrammarDas ganze versuche ich natürlich wieder in C zu programmieren – wo auch schon das nächste Problem liegt. Eigentlich würde C++ hier mehr Sinn machen, zumal ich C++ auch gerne mal wirklich lernen würde. Aber dann kann man es nicht mehr in C benutzen… was mich doch wieder dazu veranlasst, es nicht zu tun, und dafür ein wirrwarr an Strukturen und komisch benannten Funktionen aufzubauen… verdammter Perfektionsdrang. Naja, mal sehen. Es macht ja eigentlich gar keinen Sinn, eine C-Library, in die man echt viel Zeit und Arbeit gesteckt hat, jetzt “einfach mal” auf C++ umzuschreiben – zumal dann ein Großteil der Library Funktionen wieder überflüssig wird, denke man nur an die Funktionen für verkettete Listen, Hash-Tables, dynamische Array… sowie das neue Objekt plist, welches sowohl doppelt verkettete Liste, Array als auch Hashtable sein kann. Krank, nicht?? 🙁

Ursprünglich war geplant, das Regular Expression Modul der libphorward nun darauf umzustellen, dass man auch direkt auf FILE-streams arbeiten kann…aber das wäre wieder nicht flexibel genug. Nach reichlicher Überlegung habe ich mich daher nun dazu entschlossen, anstatt das regex-Modul wieder komplett umzukrempeln (und ich finde gerade das ist mir bisher ziemlich gelungen!) nun die pggrammar-Idee in drei Module der libphorward aufzuteilen:

  1. grammar (pgrammar)
    • pgrammar
    • pterminal
    • pnonterminal
    • pproduction
  2. lexer (plexer)
    • plexer
  3. parser (pparser)
    • pparser

Die Module grammar und parser (was den LR/LALR-Teil angeht) sind momentan ja schon auf einem guten Wege, nur zur Zeit noch vereint als Modul “parser” in der libphorward. Das Modul lexer würde dann die Schnittstelle zwischen dem Modul regex und dem parser aufbauen, wäre aber auch ohne beide Module lauffähig.

Ein Modul der libphorward wird immer anhand des Verzeichnisses in src definiert. Die Funktionen sind alle in einer Library, aber bestimmten Themen zugeordnet.

libphorward_module

Die libphorward würde dann aus folgenden Bereichen bestehen:

  • base (Basis-Funktionen, Datenstrukturen)
    • debug
    • llist** (leider geil, da einfach zu bedienen! – sehr häufig benutzt)
    • hashtab*
    • stack*
    • plist (hash-table, double-linked list, stack als einzelnes Objekt)
  • string (erweiterte String Funktionen)
  • regex (Funktionen für reguläre Ausdrücke, NFA/DFA, Zeichenklassen)
  • union* (dynamische Datentypstruktur)
  • xml* (XML-DOM Tools)
  • util* (System-Werkzeuge)
  • grammar*** (Grammatik-Tools)
  • lexer*** (Tools zur Erstellung lexikalischer Analysatoren)
  • parser*** (Tools zur Erstellung von Parsern (LR, LL) auf Basis von grammar und lexer)

* Modul/Datenstruktur nicht mehr sinnvoll?
** Die Datenstruktur LIST, auch LLIST oder llist genannt, ist ein Phänomen. Die Funktionen dafür habe ich mal anno 2006 oder so programmiert – und diese Library ist unschlagbar geil, weil sie so simpel ist. Einfach verkettete Pointer-Listen ohne viel Schnickschnack: LIST. Selbst in pggrammar habe ich viele davon benutzt, weil sie so extrem simpel ist. Daher wird plist “nur” in Fällen genutzt, wo es wirklich Sinn macht – also alles, was hashtab, llist und/oder array sein soll und muss. Wegoptimieren von LIST? Unmöglich. Aber LIST ist cool!:
*** Modul in Planung!

So sieht’s momentan aus. Tja… viel Gedankenmüll. Und das um sinnlose Software. Aber: Ich find’s geil! 😀 Und ist es nicht das, worauf es ankommt?

Spam for History!

Sorry, Leute!

Aber dieses Lied such ich schon seit Ewigkeiten. Es geht um den Remix… der’s geil!!! 😀 1990er… ich vermiss euch!!!! 😀

Every day create your history
Every path you take you’re leaving your legacy
Every soldier dies in his glory
Every legend tells of conquest and liberty

Cocktail Pop

Ein Album der Band Akanoid aus Soest mit dem Namen Civil Demon hab ich schon ein paar Jahre in meiner Sammlung – dieses Album fand ich aber bisher immer sehr ruhig … war eher was fürs chillen. Es ist zwar gut, aber irgendwie haut es einen auch nicht vom Hocker.

Nachdem ich mir dieses alte Album letztens mal wieder angehört hatte kam ich auf die gloreiche Idee, doch mal nach weiteren Songs dieser Band zu suchen… tja… und gestoßen bin ich auf das Album Cocktail Pop, dem Vorgänger von Civil Demon.

cocktail_popUnd ich muss sagen: Wow! Ein Album, das rundherum Spaß macht und auch nicht ganz so ruhig ist. Man kann Akanoid in die Richtung Electro Pop einordnen. Also kein typischer Metal oder so ein Scheiss, nein doch schon eher Richtung Celldweller… mit Synthesizer UND E-Gittarre. Wobei ich finde man kann die Musik eigentlich eher mit Depeche Mode, Celldweller und File Not Found vergleichen… ich weis eigentlich gar nicht so genau. Aber mir gefällts!

Continue reading

Kartoffelsuppe indische Art

Soo ich fang jetzt hier mal mit einer neuen Rubrik an, um auch mal ein paar Kochrezepte zu sammeln. Im Normalfall koche ich was nach Rezept, finde es toll, und schmeisse dann das Rezept weg >.> … irgendwie dumm, hm?

Naja, heute gabs jedenfalls Kartoffelsuppe indische Art mit viel leckerem Curry!

KartoffelsuppeEin paar Tipps noch hierzu:

  • Anstatt Schmand hab ich saure Sahne genommen (weniger Fett, ausserdem hatte der drecks Netto mal wieder nix anderes)
  • Die Möhren zu den Kartoffeln schneiden und dann kleinstampfen
  • Mehr als 500ml Wasser nehmen!
  • Nächste mal den Lauch länger kochen lassen.
  • Petersilie schmeckt gut dabei.

Libellentreff 2013

So schnell das Wochenende kam so schnell ist es auch leider wieder vorbei.

Mit der Romeo-Juliet war ich wieder auf dem diesjährigen Libellentreffen. Im Gegensatz zum Vorjahr waren dieses Jahr anstatt 9 schon 17 Flugzeuge dort vertreten. Diesmal kamen sogar einige Leute aus Belgien, Holland und Hamburg, aber auch viele aus den nahegelegenen Flugplätzen, also Sümmern, Barge, Hegenscheid und natürlich wir aus Hengsen ;).

Leider hat das Wetter nicht so gut mitgespielt, Samstag hatten wir öfters mal Regen und Nebel, gestern ging es halbwegs, so dass man sich zumindest oben halten konnte (yay, eine Stunde Flugzeit :)). Diesmal sind auch richitg tolle Bilder entstanden, aber die werden derzeit noch gesammelt, so dass hier vorerst keine Bilder zu sehen sind (habe selbst keine gemacht, da mir einfach ne vernünftige Kamera fehlt momentan).

IMG_0697Ach ja und gestern hat mich noch der Ralle von den Rheinermärkern mal ne Runde im blauen Kibitz D-MULJ mitgenommen…was das ein geiles Flugerlebnis! Der Kibitz ist ein Ultraleichtflugzeug-Doppeldecker mit zwei Sitzen, wobei der Pilot hinten sitzt. Ich saß also vorne und konnte mal einen richtig geilen Flug in einem offenen Flugzeug genießen! Wir sind an Hengsen vorbei richtung Fröndenberg, dann über Menden-Barge und Menden zurück zur Rheinermark. Alles in einer Höhe von ca. 150-200m… und bei 110 km/h Reiseflug :D.

 

Die WAZ war sogar mit einer Reporterin vor Ort, so dass es auch einen Zeitungsartikel gibt (natürlich wie bei den Medien üblich nicht immer so ganz korrekt).

Das letzte Libellentreffen war damals ja der Anlass, vor einem Jahr diesen Blog hier zu eröffnen, da ich eine Sammelmöglichkeit für Eindrücke und Fotos suchte.

String mit Escape-Sequenzen via Regular Expression matchen

Noch ein kurzer Tipp an mich selbst, nach heute wieder überflüssigem rumgesuche und dem bösen Gedanken, die Phorward Foundation Library könnte hier einen Fehler haben.

http://stackoverflow.com/questions/4166194/how-do-i-write-a-non-greedy-match-in-lex-flex