Autor Beitrag
Teekeks
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: Do 29.04.10 19:33 
CUD, Version 0.1.2

Was ist CUD?
CUD ist eine Scriptsprache die ich in meiner Freizeit gebastelt habe um wieder mal ein wenig zu üben.
Momentan kann CUD nicht allzu viel, das wird sich aber noch ändern.

Bitte fragt mich nicht wofür CUD steht, ich weiß es nicht. Vl. fällt euch ja was ein?

Was kann CUD?

unterstützte Datentypen:
  • Integer
  • String
  • Boolean
  • zum Teil Real


Weitere Merkmale:
  • Parsen von Mathematischen Ausdrücken (z.B. (2+123)*42/7)
  • Einbinden von Units
  • Verwendung von Globalen und Lokalen Proceduren und Funktionen


Syntax von CUD:

Blöcke:
Blöcke werden durch ein [ begonnen und durch ein ] abgeschlossen.
Es ist momentan noch wichtig das jeweils Blockanfang und Blockende eine eigene Zeile bekommen.

Variablendeklaration:
Zum Deklarieren einer Variable wird folgende Syntax verwendet:
#[varname]:[vartype];

Zugriff auf Variablen:
Auf Variablen wird Immer mit folgender Syntax zugegriffen:
$[varname]

Zuweisung von Werten an Variablen:
Syntax:
$[varname]:[value];

Procedurendeklaration:
Eine Procedure kann jederzeit über folgende Syntax Deklariert werden:
proc [Name]([Prarameter1]:[Datentyp1]; [...] [Parametern]:[Datentypn]; );
[codeblock]

Wenn eine Procedure Unitübergreifend Deklariert werden soll muss anstatt proc ein proc* stehen.
Eine Procedure ist nur nach der Deklaration bekannt.

Funkionendeklaration:
Eine Funktion kann jederzeit über folgende Syntax Deklariert werden:
func [Name]([Prarameter1]:[Datentyp1]; [...] [Parametern]:[Datentypn]; ):[resulttyp];
[codeblock]
Auch hier gilt:
Wenn die Funktion Unitübergreifend sein soll, muss sie so lauten: func*

Aufruf von Funktionen und Proceduren:
Syntax:
*[Name]([param1],[param2],[...],[paramn]);
Wenn der Aufruf innerhalb einer Zuweisung erfolgt muss das Semikolon weggelassen werden.

Schleife:
Zur Zeit gibt es nur eine Schleifenart: die for-Schleife.
Die Syntax für diese lautet:
for [Integervariable]([integer],[integer]);
[codeblock]

Bedingte Anweisungen:
Hier gibt es das Stichwort If.
Syntax:
if [boolean] [
[viel Code]
]
Zu beachten ist das Variablen-, Proceduren- und Funkionendefinitionen, welche innerhalb der Schleife sind, auch von der Bedingung abhängen.

Eine Unit Einbinden:
Das einbinden einer Unit erfolgt mit folgender Syntax:
+[Unitname];
Die Unit muss zuvor in der Datei regunits.ini Registriert werden.
Dabei wird folgende Syntax verwendet:
[displayname]
Path=/Pfad/zur/.cud-Datei

Grundbefehle:
  • Out([string]);
  • Outln([string]);
  • Input([variable(integer/string)]);
  • clrscr; (Clear Screen)
  • WOE; (Wait on Enter)
  • Wait([integer]);
  • TextColor([integer]);
  • TextBG([integer]);

Für TextColor und TextBG gilt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
{ Foreground and background color constants }
  Black         = 0;
  Blue          = 1;
  Green         = 2;
  Cyan          = 3;
  Red           = 4;
  Magenta       = 5;
  Brown         = 6;
  LightGray     = 7;

{ Foreground color constants }
  DarkGray      = 8;
  LightBlue     = 9;
  LightGreen    = 10;
  LightCyan     = 11;
  LightRed      = 12;
  LightMagenta  = 13;
  Yellow        = 14;
  White         = 15;

{ Add-in for blinking }
  Blink         = 128;


Parsen mit CUD:
Der Aufruf Erfolgt so:
ausblenden Quelltext
1:
cud datei.cud					


Was noch geplant ist:
  • Boolsche Vergleiche einbauen (= <= => <> or and xor) (erledigt)
  • Operator not
  • Hinzufügen des Datentyps real
  • Hinzufügen des Datentyps pointer
  • Bessere Fehlerbehandlung (erledigt)
  • Einrückung ermöglichen
  • Mehrere Befehle in eine Zeile
  • Dynamischen Binding von Units
  • Einbindung von Units über den Dateipfad
  • records
  • arrays
  • Definition von eigenen Datentypen
  • Sets
  • Dateizugriff realisieren (von/in Datei Lesen/Schreiben)
  • mehr Grundbefehle
  • Input auch für boolean (und später real)
  • u.v.m.


Und zum Schluss:
Anregungen und Kritik ist herzlich erwünscht!
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von Teekeks am Sa 01.05.10 17:51, insgesamt 3-mal bearbeitet
JonS
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 43

XP, Vista, Seven, Ubuntu
Delphi for Win32, Delphi Prism, C#, Java, PHP, VB
BeitragVerfasst: Fr 30.04.10 16:23 
Wie start ich denn deine Demo?? Bei mir kommt nur ne leere Konsole, wenn ich beispiel.cud auf cud.exe ziehe und sie damit öffne... (Windows-Version)

Wieso veröffentlichst du den Quellcode von CUD nicht?

mfg Jon S.
Teekeks Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: Fr 30.04.10 17:12 
du brauchst ein -f noch davor.
(also dann so:
ausblenden Quelltext
1:
cud.exe -f beispiel.cud					

)

Zum Code:
Joahr, stimmt, das könnte ich machen...

Aber ich glaub... JA! Ich mach das -f weg :)
Teekeks Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: Sa 01.05.10 16:15 
Version 0.1.2
Ich habe für euch wieder einmal eine neuere Version im ersten Beitrag.
Was sich geändert hat:
Neuerungen:
  • Die Grundbefehle TextColor und Textbg
  • Nun muss kein -f mehr im Parameter sein...

Verbesserungen:
  • Verbesserte Fehlerbehandlung

Bugfixes:
-
Teekeks Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: Mi 26.05.10 23:17 
Hmmm, besteht hier kein Interesse an so etwas?
Das finde ich ja schade :(

Gruß Teekeks
Teekeks Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: Sa 26.06.10 18:20 
Hier mal wieder ein Zwischenstand der Entwicklung von CUD.
Diese steht keinesfalls still sondern wird momentan einfach nur nicht veröffentlicht.
Das liegt daran das momentan einfach zu viele Baustellen noch schöne Speicherleggs oder dergleichen Produzieren und ich euch das einfach nicht antun wollte (gut, die meisten Speicherleggs sollten behoben sein, aber ich glaube ihr wisst was ich damit meine).

Zu den neuen Funktionen die euch bei der nächsten Version erwarten kann ich folgendes Sagen:
Es wird eine volle Unterstützung von Pointern geben, sowie einer direkten Einbindung von Shell-Script in den Quellcode, wodurch der volle Leistungs- und Funktionsumfang dieser Sprache genutzt werden können.

Der Mathematische Parser wird zwar etwas langsamer werden, doch er wird Zahlen mit beinahe beliebiger Genauigkeit ausgeben können (z.B. bis auf 1000 Stellen hinter dem Komma oder so).

Die Stringverarbeitung wird um ein vielfaches besser sein als bei der bisherigen Version (bei welcher man nicht mal ein normales "+" im Text verwenden konnte ohne das die beiden Zeichen Links und Rechts davon nicht gleich noch mit Ignoriert wurden).

Es werden Konstanten unterstützt werden.

Der Parser wird einige weitere Grundbefehle beherrschen wie z.B. getTime (wäre bei Pascal ein now) und getVarType (gibt den Typ einer Variablen aus) und noch einige andere.

Evtl. werde ich bis dahin auch Records und Arrays realisiert sein.

Des weiteren habe ich eine kleine IDE in der Entwicklung (nichts allzu großes, z.B. leider noch kein Debugger).

Und, um mit meinen Ausführungen zu ende zu kommen, wird der Parser selbst deutlich mehr Einstellungsmöglichkeiten bieten (ist ja auch nicht schwer, waren ja bisher genau 0 :) ).

Bei Fragen, Wünschen, Sorgen oder Problemen bin ich jederzeit zu Sprechen.

Gruß Teekeks
acnut
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 172
Erhaltene Danke: 3

Windows 7, Windows Vista, Windows XP, Ubuntu, Kubuntu, Pardus
Delphi 2010 SV, Java Editor, VS 2010 SV
BeitragVerfasst: Fr 09.07.10 14:33 
hmmm interessant


mfg
acnut