Hallo an alle Hardcore-phpler.
Hier geht es nicht direkt um PHP, sondern viel eher um einen Algorithmus, wie man einen Lexer in PHP implementiert.
Ausfuehrlich:
Ich moechte eine kleine Programmiersprache basteln, die dann von PHP interpretiert wird.
Dafuer brauche ich einen sog. Lexer, der den Quellcode der zu interpretierenden Sprache ausliest, in tokens zerlegt, und diese Tokens dann an den Interpreter schickt.
Jetzt wollte ich einfach mal ne Diskussion anfangen, wie man diesen Lexer am guenstigsten implementiert.
Ich bin auf vernuenftige Beitraege gespannt!
P.S. Hier mal ein kurzel Beispiel mit ein paar Elementen der Sprache:
ein token waere z.b. [asign $z=5] in einem vernuenftigen Format, z.B.
$token[typ] = "asign"
$token[args] = "$z+5"
$token[line]=3
Noch eine Bemerkung: ich frage mich im moment vor allem, wie man am besten mit whitespaces umgeht, da diese im code keinerlei bedeutung haben sollten, in strings aber beibehalten werden muessen.
Hier geht es nicht direkt um PHP, sondern viel eher um einen Algorithmus, wie man einen Lexer in PHP implementiert.
Ausfuehrlich:
Ich moechte eine kleine Programmiersprache basteln, die dann von PHP interpretiert wird.
Dafuer brauche ich einen sog. Lexer, der den Quellcode der zu interpretierenden Sprache ausliest, in tokens zerlegt, und diese Tokens dann an den Interpreter schickt.
Jetzt wollte ich einfach mal ne Diskussion anfangen, wie man diesen Lexer am guenstigsten implementiert.
Ich bin auf vernuenftige Beitraege gespannt!
P.S. Hier mal ein kurzel Beispiel mit ein paar Elementen der Sprache:
PHP:
[quest]
[asign $x="Beispielstring mit whitespaces"]
[asign $z=5]
[if $z>666]
Das hier ist normaler Text, der auf dem Bildschirm ausgegeben wird.
Hier muessen whitespaces und Zeilenumbrueche erhalten bleiben.
[/if]
[/quest]
ein token waere z.b. [asign $z=5] in einem vernuenftigen Format, z.B.
$token[typ] = "asign"
$token[args] = "$z+5"
$token[line]=3
Noch eine Bemerkung: ich frage mich im moment vor allem, wie man am besten mit whitespaces umgeht, da diese im code keinerlei bedeutung haben sollten, in strings aber beibehalten werden muessen.
Zuletzt bearbeitet: