Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

machandel

Projektzusammenfassung
Projekt-Maintainer:Mitgliedtheta Projektseite angelegt:26.06.2014
Lizenzierung:k. A. Letzte Bearbeitung:12.07.2014
Projektkategorie:Just-in-time-Compiler      [Zurück zur Übersicht]

machandel

machandel ist eine Programmiersprache mit deutschen Schlüsselwörtern, die an FORTH angelehnt ist, sich aber auch aus anderen, neueren Einflüssen (von Factor) und eigenen Ideen zusammensetzt.

Eine konkatenative Programmiersprache ist eine, bei der die Externer Link!Komposition von Funktionen durch Konkatenation der syntaktischen Entsprechungen bewirkt wird. Während man in vielen anderen Programmiersprachen f(g(x)) schreibt, schreibt man in konkatenativen Programmiersprachen z.B. x g f .Hier wird zuerst x ausgewertet. Dann wird g darauf angewandt und auf das Ergebnis dessen wird f angewandt.

Ein wesentlicher Unterschied zu FORTH besteht darin, dass es Blöcke (=anonyme Funktionen) gibt, die nicht nur von allen Kontrollstrukturen genutzt werden, sondern sich auch zu neuen Blöcken zusammensetzen lassen (Komposition zweier anonymer Funktionen). Außerdem ist ein größerer Einfluss auf den Lexer möglich.

Der größte Unterschied - zumindest zu allen mir bekannten Programmiersprachen - besteht in der syntaktischen Definition von Unterprogrammen. Anders als in FB oder anderen Programmiersprachen haben Unterprogramme nicht einen einzigen Namen, sondern können mehrere Namen haben, die durch Externer Link!reguläre Ausdrücke definiert sind, so auch Zahlen([+-]?[0-9]+) und Strings, die gleichberechtigt neben allen anderen Unterprogrammen stehen. Um für einen gegebenen Ausdruck möglichst das richtige Unterprogramm auszuwählen - sofern mehrere zutreffende syntaktische Definition existieren - gibt es ein Auswahlverfahren, das mit einem Hierarchiesystem und anhand der ...ähm..."Spezifität"... der syntaktischen Definition versucht, das sicherzustellen ([0-9]? ist spezifischer als [0-9]* [a-e] ist spezifischer als [a-z] usw.).

Implementierung

Meine Implementierung in FB generiert x86-Maschinencode und nutzt PCRE für reguläre Ausdrücke. Das Projekt befindet sich momentan in einem Entwicklungszustand mit kleiner Standardbibliothek, bei dem sich noch einiges ändern kann. Insofern würde ich mich sehr über Feedback freuen :)

Projektseite bei launchpad.net

machandel inkl. Quelltext kann von Externer Link!launchpad.net zu den Bedingungen der EUPL (GPL-kompatibel) heruntergeladen werden.

Einführung

Eine Einführung im PDF-Format findet sich im Ordner "Dokumentation" des Downloads.

Dateimanager
Es wurden bisher keine Sources abgelegt.