Ich vermute mal, korrekt wäre result (*((+(2,4)),(+(4,7))). Das hat irgendwie was von LISP, oder?
...
So wie ich die Syntax jetzt verstanden habe, sind doch die Kommata nicht als Parameter-Separierer gedacht, sondern die Leerzeichen. Also wäre der Code eigentlich falsch. Aber naja, wenn's keinen Fehler wirft~
@Topic: Finde das ganze doch recht interessant. Die Syntax sieht lustig und ganz cool aus. Aber Calis hat ja schon ein paar Schwächen aufgezeigt. Bei einer recht simplen Berechnung alà 2+5*4+7 muss man sich den Kopf zerbrechen über die Platzierung der Funktionsaufrufe, Klammern, Leerzeichen, ...
Bin aber auch mal gespannt, wie sich das Projekt entwickelt. Hab auch schon einen kurzen Blick in den Quellcode des Interpreters geworfen, sah aber soweit gut aus, auch wenn ich's mir nur flüchtig angeguckt hab.
Wie gesagt, bleib am Ball. Ist auf jeden Fall 'ne coole Sache.
Geändert von The Best Isaac (06.03.2009 um 00:47 Uhr)
Sorry, konnte nicht frueher antworten, bin die ganze Woche schon irgendwie krank.
Zitat von Calis
result ( + ( 2 Zwischen ( * ( 5 4 ) ) 7 ) )
müsste normal gehen. Nicht so in diesem Fall... (Programm muss beendet werden^^)
...
Keine Klammern um das * Konstrukt herum, sonst nimmt er den Aufrug vor der Klammer nicht als Variable wahr sondern als Aufruf einer Funktion. Das Teil ist nicht besonders fehlertolerant.
result ( + ( 2 Zwischen * ( 5 4 ) 7 ) )
Zitat von DFYX
Das hat irgendwie was von LISP, oder?
...
Ein wenig vom Syntax angelehnt, aber es hat ja nicht wirklich Listen und in Lisp schreibt man afair Operatoren mit in die Liste, also (+ 2 3) statt + (2 3)
Zitat von Calis
result ( + ( ( * ( 5 4 ) ) 2 7 ) )
...
Unnoetige, bzw. verbotene Klammernutzung halt:
result ( + ( * ( 5 4 ) 2 7 ) )
Geht!
Ich hab mal die neue Version hochgeladen die auch if und = != <= < und so einen Kram enthaelt. Download-Link ist immernoch der gleiche. Als Beispiel hier nur anzufuehren:
(Ausschnitt)
und ein kleines Input/If Test Programm was auch beiliegt:
Hab letztens sogar mal versucht die erste Aufgabe von Project Euler damit zu loesen, was im Prinzip sehr einfach geht, aber bei der Mul3 Funktion haengt sich das Teil irgendwann auf (ganz knapp, da wenn ich bei ner hoeheren Zahl starten lasse geht es normalerweise noch), hatte aber wegen besagter Krankheit noch keine Zeit fuer weitere Versuche:
Ich liebe dieses Teil, da kann man richtig schön mit rumprobieren...
Warum funktioniert folgendes nicht?
Ich habe vorher auch probiert die Ask Funktion nicht auszulagern und den Code in der Main zu lassen. Sie funktionierte dann zwar, gab aber am ende folgendes aus: