Eine linksrekursive Grammatik im rekursiven Abstieg parsen

Zur Zeit zerbreche ich mir den Kopf darüber, wie man eine linksrekursive Grammatik mit einem rekursiv-absteigenden Parser parsen kann.

Darauf gekommen bin ich durch das Open-Source-Projekt RpaTk von Martin Stoilov – ein im übrigen sehr geniales Projekt. Es enthält einen grundlegend anderen Ansatz als meine bisherigen Entwicklungen, nämlich einen rekursiv-absteigenden Parser, der Backtracking verwendet und noch einige Geschwindigkeitsoptimierungen durch Caching. Das alles läuft dann auch noch auf Basis einer virtuellen Maschine, die ziemlich rasantes Parsing ermöglicht. Ein sehr durchdachtes Konzept, auch wenn es in direkter Konkurrenz zu den letzten Entwicklungen in der libphorward steht, und dieser auch meilenweit voraus ist – Hut ab. Habe mit dem Autor auch Kontakt aufgenommen, weil ich es einfach verstehen will, wie man mit einem rekursiv-absteigenden Parser eine linksrekursive Grammatik parst.

Nehmen wir mal als Beispiel die Grammatik

und würden diese als plumpen rekursiven Abstieg umsetzen, so wird er noch vor dem lesen des ersten Zeichens in eine Endlosschleife verfallen, weil sich e rekursiv aufruft.

Continue reading

Mal eben ein Flugzeug kaufen

…also das ging mal schnell!

2014-02-19 17_19_54-View

Vorgestern gab mir Markus einen Link auf diese Anzeige bei Segelflug.de. Einen Tag später ist Dirk hingefahren und zack… Anzahlung gemacht & wir nehmen sie!

Pro:

  • Wenig Starts
  • Wenig Stunden
  • Günstig
  • Technisch Top
  • Pendelleitwerk (GEIL GEIL GEIL!!!!)

Contra:

  • Lack (Wellenflugzeug)
  • geteilte Haube
  • Pendelleitwerk

Das war wieder eine typische LSV Unna-Schwerte-Aktion! 😉 Bei dem Preis aber auch unschlagbar, ne LS-1c, evtl. als Astir-Ersatz… am Wochenende holen wir sie ab.

Weitere Fotos: https://picasaweb.google.com/103737304623879508066/GG

*nerdfroi*

Da sich ja Dennis beschwert hat, das hier nix mehr gepostet wird… ein kleines *nerdfroi*!

Musste den ganzen AST-Generator nochmal umbauen. Jetzt tut er so wie er soll, siehe da.

misc-geniusDas war einiges an “Fummeley”, wie der Mittelalternerd jetzt sagen würde…

Phorward OS GNU/Linux?!

Nabend Zusammen!

Diesen Abend hab ich mich mal mit dem Tool archiso beschäftigt. archiso macht das möglich, was ich so einfach nicht so einfach für möglich gehalten hätte: Es ist eine Sammlung an Skripten, die dazu dienen, ein individuelles, auf Arch Linux basierende, bootbares Live-Betriebssystem zusammenzustellen.

Also mit anderen Worten: Man konfiguriert sich sein Linux-Betriebssystem so wie man es haben möchte und mit den Paketen, Konfigurationsdateien, Benutzern usw. die man haben möchte und stellt sich diese dann sozusagen als individuelles Betriebssystem zusammen.

Und das geile daran ist sogar: Es funktioniert fast out-of-the box! Ich habe das Tutorial auf ArchWiki gelesen und entsprechend umgesetzt, und hatte am Ende tatsächlich ein selbst erstelltes Live-System mit

  • meinen individuellen Einstellungen (.bashrc, .vimrc, .xsession, .Xresources)
  • Enlightenment e18
  • und meinem zusammengestelltem Design (Theme, Einstellungen, Icons…)
  • XDM als Login-Manager
  • Geany, Firefox, Thunderbird, Audacious als Programme

Also… man könnte das daraus resultierende ISO-File nun auf eine DVD brennen oder einen USB-Stick kopieren, es booten und so wie es ist installieren. Hammergeil! Sozusagen ein eigenens Betriebssystem, mal eben zusammengestellt.

Hier ein Screenshot des Resultats, welches als Virtual Machine in VirtualBox läuft (oben), unten das build-system 🙂 …shot-2014-01-23_23-26-30

Naja, alles funktionierte natürlich nicht sofort auf dem Live-System. Ich musste erst dem Live-Benutzer “phorward” ein Passwort geben, dann als root manuell den XDM starten und dann konnte ich mich einloggen… aber es läuft wirklich: Es startet ohne noch mehr zu konfigurieren ein e18 Desktop mit meinem Theme, derselben Menüleiste, ich habe xterm, kann vim starten und habe alles zumindest im Ansatz so wie ich mein Betriebssystem konfiguriert habe… GENIAL!

Ich denke es ist hier noch ein bisschen Optimierungsbedarf und man muss noch ein wenig damit rumspielen. Aber letztendlich kann ich mir in Zukunft das Betriebssystem das ich brauche “mal eben” selbst zusammenbauen und kann es genauso booten und schlussendlich installieren, ohne danach noch einen Finger zu rühren. Und das ist ja eben das, was mich in der Vergangenheit immer so geärgert hat. Linux neu Installieren = Extrem viel neu Konfigurieren. Das würde ja dann damit zumindest teilweise enfallen (vielleicht noch Treiber, Performance) aber zumindest das Grobe… :-D).

Man, Linux ist einfach nur geil! Also mein schon mal erwogener Umstieg auf Debian wird wohl doch erstmal weiiiit verschoben!! 😀

Wichtige Dateien aus dem archlive-Baukasten (immer alles als root machen, anders gehts nicht!). Den Rest vorerst nach Tutorial aus dem Wiki gemacht.

~/archlive/releng/packages.both

ls -ltra in ~/archlive/releng/root-image/etc/skel

~/archlive/releng/root-image/root/customize_root_image.sh tat es nicht so wie beschrieben, jedenfalls nicht die letzte Zeilen im File (daher auskommentiert, sonst error bei build.sh). Habe den Benutzer “arch” durch “phorward” ersetzt.

Und Link auf XDM. Starte den XDM aber leider nicht sofort, mal nachprüfen. Link anlegen unter ~/archlive/releng/root-image/etc/systemd/system

 

Stoned Programmer

In den ewigen Jagdgründen meines Filesystems habe ich heute beim “aufräumen” folgendes Selbstportrait gefunden, gemalt mit MS Paint, anno 2001, wohl unter Windows 98.

stonedDas “tc32” lässt auf Turbo/PL², welches sich damals in Entwicklung befand, schließen. Man beachte die unglaublich feinen Details dieses Kunstwerkes.

Aus selbiger Zeit wohl ebenso dieses Webcam-Selbstportrait ;-):

doofNatürlich kann das nicht durch den “Beachcoder” getoppt werden, nach wie vor mein Alias auf SourceForge. Das Bild ist von 2007. Hintergrund dieses Bildes war, das ich die Logik des Programmierens mit der Natur auf gleiche Ebene setzen wollte, mit ein wenig  Gag dabei. Fand die Idee damals cool 😉 … und ja, das Bild ist absolut gestellt!

stuck_with_bugsNun ja, wie die Zeit vergeht… 🙂

Aua!

So, mal wieder ein neuer Post. Momentan gehts mir nicht so gut.IMG_20131119_002948

Der Grund: Ich habe Kaffee gekocht. Nicht, das ich das nicht jeden Morgen machen würde. Nur am Mittwoch letzter Woche… tja … bei meiner absolut unübertreffbaren Dummheit ist es mir dabei passiert, dass die Kaffeekanne mit dem Filter und den frisch augebrüten, heißem Wasser umgekippt ist, und ich Volldepp den Filteraufsatz festgehalten hab.

IMG_20131114_140347 IMG_20131113_205856Resultat: Ein völlig verbrannter linker Arm. Nicht das ich stolz drauf wäre… es tut höllisch weh, auf wenn es auf den Fotos nicht so aussehen mag. Die Haut konnte ich direkt nach dem Unfall abziehen. Zwei Tage krank gefeiert… und warscheinlich erst mal noch 3-4 Wochen nen Verband tragen.

IMG_20131119_002824Naja. Dafür gehts momentan mit der Software voran. Habe viel gemacht die letzten Tage, vor allem die gesamte libphorward von den alten linked-lists befreit und alles auf die neuen plist-Objekte umgeschrieben.

Als nächstes gehts wieder an den neuen Parser. Momentan bin ich noch immer am hin- und herüberlegen, das ganze in C++ zu machen, aber ich mag C ja nunmal, und libphorward soll vorerst C-only bleiben. Vielleicht später ein Interface? Mal sehen.

Was gibts sonst neues?

  • Hand im Arsch (ja, tut weh…)
  • Verein nervt*
  • Die Libelle hab ich nun beim Christoph in Lanstrop in die Halle gestellt 🙂 – wenigstens damit erstmal Ruhe, muss nicht sein das der Hänger mit Flugzeug bei Frost und Kälte draußen stehen muss
  • Regular show rockz… ich bin süchtig!! *g*

* Ja.. diverse Dinge. Man ist der Arsch für alles, reißt sich den Arsch auf und bekommt dann noch Mecker, Rumgeplärre und blödes Gelaber. Mir reichts bald…

T400

So, der T400 wird jetzt endlich zu meinem Hauptrechner und löst meinen letzten Desktop-PC gaia ab. Hab auch keine Lust mehr drei Arch Linux Installationen auf dem aktuellstem Stand zu halten.

t400Für die Umstellung bedarf es leider noch einiger Komponenten, bevor ich gaia wirklich in die Ecke stellen kann:

  • Neuen Acer 24″ Monitor Hanns.G HL272HPB 27″ Monitor, wo der HDMI-Port nicht im Arsch ist wie bei meinem aktuellem (den kann ich dann entweder als Zweitmonitor oder für nen Media-PC benutzen, oder verticken).
    Nachtrag: Nachdem ich einen Testbericht von Stiftung Warentest gelesen habe und auf die Firma “Hanns.G”, auch “Hannspree” genannt, gekommen bin, würde ich vielleicht doch ein wenig mehr Geld investieren für nen RICHTIG geilen Monitor, der noch größer ist und Energieklasse-A hat!
  • Externe USB-Soundkarte für das 5.1 Soundsystem (schon bestellt! :)).
  • Eventuell noch ein schönes Gehäuse für eine externe 3,5″ SATA-HDD, weil ich davon noch so viele rumfliegen hab.

Die restlichen Komponenten sind schon da.

Nachtrag: Das ist übrigens mein Traumcomputer! ;p … allerdings den 14,0 Zoll HD+ (1600 x 900) *gg*

Jo ansonsten gestern die alte Bude am Flugplatz weiter abgerissen und nen schönen 45min Rundflug mit Alpha Uniform zusammen mit Flossi geflogen 🙂 … einmal Möhnetalsperre, Sorpetalsperre und zurück. War sehr schön, vor allem die Sicht! 🙂

Warmlaufen lassen von D-KIAU

Warmlaufen lassen von D-KIAU

Immerhin weis ich jetzt das die Zylinderkopftemeratur bei 100 °C  liegen muss um den Startlauf zu beginnen.

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?

Neue Vereinshomepage, schöner Flugtag & Rock im Pott

Jo mein Wochenende ist zwar schon wieder ein paar Tage her, aber dennoch wallt es wieder mal ein wenig in die Woche hinein.

Zur Zeit bastel ich ziemlich viel an der neuen Vereinshomepage … die alte, hässliche, auf dem Scheiss-CSM “Joomla!” basierende Website wurde ständig von irgendwelchen Bots gehackt, und ich will die Kacke jetzt endlich mal vom Tisch haben. Dafür haben wir bald ein richtig schöne neue Website :).

Dazu habe ich mich auch ein wenig mit dem Programm Inkscape beschäftigt, welches mir immer besser gefällt…Vektorgraphiken sind schööön!

Hier das LSV-Logo als Vektorgraphik (SVG):

logoUnd hier nochmal das Template, welches die Schriftart Segoe Print benötigt.

Auch WordPress überzeugt mich immer mehr – kaum zu glauben das man aus einem CMS, das primär für Blogs gemacht wurde mit ein wenig bastelei eine echt geile Website mit Mitgliederbereich und eigenen SOAP-Funktionen (Flugbuch, Telefonliste) basteln kann!

Plugins, die ich empfehlen kann:

  • Shortcode Exec PHP
    Kleine PHP-Skripte als Shortcodes direkt einbinden
  • Advanced Code Editor
    Syntax-Highlighting für Theme-Dateien und Plugins
  • WP Calendar
    Stellt einen einbettbaren Kalender dar
  • WP-Members
    Bietet eine komplette Verwaltung für Mitglieder inkl. Login-Bereich und Passwortänderungs-/Profilbearbeitungsseite, welche man auf die Website einbetten kann OHNE dafür das Dashboard zu benutzen.

Was war sonst noch? Samstag war ein schöner Flugtag, hatte auch die Libelle aufgerüstet, aber leider gings thermisch nicht so gut. Dafür noch zwei Starts mit dem Mose (D-KIAU, “Alpha Uniform”) gehabt, davon einer Alleine… hier der Freak beim Querabflug:

IMG_8971 IMG_8972 IMG_8973Sonntag ging es dann zum Rock im Pott… bin zwar erst nach 14Uhr dort eingetrudelt, aber die ersten drei Bands waren nicht so der Renner, vor allem dieser blöde Rapper Casper… wer hat den Trottel eigentlich eingeladen? Der wurde letzendlich Ausgepfiffen. Was hat auch so ein Typ bei einem Metal-Konzert verloren? Erinnert mich ein wenig an diesen Spot mit Roberto Blanco und Sodom ;).

Ach ja, ein Bier kostete übrigens günstige 5€… hab ich dann doch nicht so viel getrunken…der Rest war ok, vor allem natürlich Volbeat und System Of A Down – auch wenn letztere recht abprupt das Konzert beendet haben, ohne Zugabe … haben sich verabschiedet, Licht ging an, Ende. Nicht so toll. Dennoch hatte ich gestern und heute Muskelkater im Hals-/Nackenbereich 😉 …