Seite 1 von 5

Operno-Interpreter 2.1.1

Verfasst: 27.09.2008 19:52
von Josef Sniatecki
Viele kennen bestimmt schon den Vorgänger, der syntaxisch sehr schlecht
war. Operno 2.0.1 ist nun viel besser. Ich habe die ganze
Programm-Struktur völlig geändert.

@Alle Administratoren:
Das Alte "Operno-Intrepreter"-Thread könnt ihr löschen/sperren.



Features:
- Operno ist ein Token-Interpreter
- Syntax sehr verständlich
- IDE (Konsole)
- Zwei Kontrollstrukturen (If,While)
- Quellcode zum anschauen

Diese Version ist erst mal nur zum Testen da. Z.B. sind nur
wenige Funktionen verfügbar. Noch ist es nicht möglich
eigene Klassen oder Funktionen zu definieren. Wie gesagt: Ist nur zum
testen.



Hier sind einige Beispiele und Erklärungen:
Operno als Taschenrechner:

Code: Alles auswählen

<-- : 100+200
res : 300
<-- : 4**2
res : 16.0000000
<-- : 10+(10-3)*2
res : 24
Variablen verwalten:

Code: Alles auswählen

<-- : x=123
<-- : x+=5
<-- : x
res : 128
Print-Funktion:

Code: Alles auswählen

<-- : print(321-123,50,200)
--> : (long) 198
--> : (long) 50
--> : (long) 200
Funktionen mehrmals wiederholen:

Code: Alles auswählen

<-- : system\beep(1000,500)(500,250)(250,1000)
While-Schleife:

Code: Alles auswählen

<-- : index=0
<-- : while !(index==5); {
<-- :   index++
<-- :   print(index)
<-- :   }


Dies sind nur wenige von möglichen Dingen. Werde später mehr Zeit
haben, um mehr Beispiele zu posten.

Download:
http://www.file-upload.net/download-114 ... 2.zip.html



Nun wie immer: Kommentare, Vorschläge, Bugs.
mfg Josef

PS: Probiert mal "1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1))))))))))" aus.

Verfasst: 27.09.2008 22:01
von kswb73
Dein Tastenrechner ist fehlerhaft. Bei 5*-(5+5) gibt er 0 zurück.
Hier gibt's einen Code:http://www.purebasic.fr/german/viewtopi ... ausrechnen

Verfasst: 28.09.2008 10:00
von Josef Sniatecki
Leider muss man bei meinen Interpreter eine Klammer vor einem
Vorzeichen setzen, sonst kommt es zu einem Fehler. Der Term müsste also
"5*(-(5+5))" lauten. Trotzdem werde ich versuchen, diesen Umweg
wegzuschaffen.

Danke für die Bemerkung, kswb73.

Verfasst: 28.09.2008 10:13
von Josef Sniatecki
Hier sind noch weitere Tipps:

Pointer/Zeiger definieren und nutzen:

Code: Alles auswählen

<-- : var=123
<-- : ptr=@var
<-- : print(var)
--> : 123
<-- : print(ptr\)
--> : 123
<-- : ptr\=321
<-- : print(var)
--> : 321
Mit einem "\" nach einem Zeiger, kann man auf die Variable,
auf die gezeigt wird, zugreifen.

Synonyme für Funktionen erstellen:

Code: Alles auswählen

<-- : beep=system\beep
<-- : beep(1000,500)

Verfasst: 28.09.2008 12:16
von Little John
Josef Sniatecki hat geschrieben:Leider muss man bei meinen Interpreter eine Klammer vor einem Vorzeichen setzen,
Wieso "leider"? Das entspricht genau den Regeln. Das einzige Vorzeichen vor das man keine Klammer setzen muss ist eines ganz am Anfang eines Ausdrucks. Beispielsweise "5*-(5+5)" ist kein gültiger mathematischer Ausdruck.
Josef Sniatecki hat geschrieben:sonst kommt es zu einem Fehler.
Das Programm sollte daher auch besser "Syntaxfehler" o.Ä. anstatt einer 0 ausgeben.

Gruß, Little John

Verfasst: 28.09.2008 12:21
von Josef Sniatecki
Little John hat geschrieben:
Josef Sniatecki hat geschrieben:Leider muss man bei meinen Interpreter eine Klammer vor einem Vorzeichen setzen,
Wieso "leider"? Das entspricht genau den Regeln. Das einzige Vorzeichen vor das man keine Klammer setzen muss ist eines ganz am Anfang eines Ausdrucks. Beispielsweise "5*-(5+5)" ist kein gültiger mathematischer Ausdruck.
Josef Sniatecki hat geschrieben:sonst kommt es zu einem Fehler.
Das Programm sollte daher auch besser "Syntaxfehler" o.Ä. anstatt einer 0 ausgeben.

Gruß, Little John
Du hast schon recht, Little John. Doch Skriptsprachen sollten auch so schnell
wie möglich zu schreiben sein. Natürlich könnte ich jetzt auch sagen, dass
Operno nur mathematische Ausdrücke erlaubt.

Das mit den Fehlermeldungen: Diese Version ist nur eine Test/Beta-
Version. Ich will zuerst alle Funktionen programmieren, bevor ich mit
den Fehlermeldungen anfange.

Verfasst: 28.09.2008 12:28
von Little John
Josef Sniatecki hat geschrieben:Du hast schon recht, Little John. Doch Skriptsprachen sollten auch so schnell wie möglich zu schreiben sein.
Ich sehe keinen Grund, falsche Schreibweisen zu unterstützen. Ist aber natürlich in diesem Fall Deine Entscheidung.

Gruß, Little John

Verfasst: 28.09.2008 13:44
von kswb73
Wird aber auch von PureBasic unterstützt.

Code: Alles auswählen

debug 5*-(5+5)

Verfasst: 28.09.2008 14:10
von STARGÅTE
ja ja, PB lässt sogar so ein "schwachsinn" duchgehen und rechnet sogar richtig ^^:

Code: Alles auswählen

Debug 5----5

Verfasst: 28.09.2008 14:21
von NicTheQuick
Was ist daran Schwachsinn? Drei unäre und ein binäres Minus. Ein Parser
sollte das richtig machen.