Compilers / "Dragon Book" - Eigene Scriptsprache

Hi Sunray,

Denke schon alleine wegen dem Sinn von CR LF bleibe ich dabei ;-) Und da die sprache eh nie in Linux eingesetzt wird, geschweigedenn auf Mac, sehe ich da keine Bedenken drin. (Wie gesagt Programm is in VB geschrieben, also kein Einsatz dafür)

"Erste Phase"? Was meinst du damit, steht das im Buch? Ich werde mir die Englische Version kaufen, gerade weil ich denke das das nicht meine letzte Scriptsprache gewesen sein wird ;-)

Danke und Viele Grüße,
KK
 
hehe...

Ein Übersetzungsablauf kann in verschiedene Phasen eingeteilt werden:

  1. Lexikalische Analyse: Eingabe (Zeichenstrom) in Symbole aufteilen
  2. Syntax Analyse: Die Grammatik anwenden. [z.B. LValue "=" Expression] der Syntaxbaum wird erstellt
  3. Semantische Analyse entspricht Dingen wie Typüberprüfung, Überladungs/Sprungziel auflösung.
  4. Erzeugung von Zwischencode
  5. Code Optimierung
  6. Code Erzeugung

In meinem Fall sieht das etwas einfacher aus:
  1. Lexikalische Analyse ("Tokenizer")
  2. Syntax Analyse ("Parser")
  3. Code Erzeugung

Ich habe keinen Zwischencode, keine Optimierung und keine statische Überprüfung (Semantische Analyse). Die Code Erzeugung ist gleich in die Syntax Analyse eingebaut.

Naja CR LF macht nicht wirklich Sinn (jedenfalls heute nicht mehr). ASCII war ja eigentlich ein Kommunikationsprotokoll und CR LF sind Steuerbefehle für Drucker... Ist bei Textdateien eine reine Platzverschwendung. Warum zwei Byte, wenn eines reicht?
 
Also ich würde so eine sprache machen :D

if billgates == .
out(.ja)
else
out(obj.generate(nein))
;

x.0=98
x.1=88
mehrdimensional.1.1 = .megacool //kommentar: [1][1]

each x
out(each)
;

each x
each y
out(each.super) //super ist ein string der addiert wird
out(each,each super) //super ist eine variable. each enthält wert von x
;
;

c meine_klasse
cool
var2
var5

f schnell a=.hallo b=4
if a==b ret b
;

f langsam
ret .super;
;

also strings mit einem punkt
funktionen von klassen mit punkt zugreifen
falls keine instanz mit doppelpunkt (php statt -> ein punkt und statt :: nur ein doppelpunkt
semikolon statt klammern
variablen bei klassen einfach schreiben
== vergleichsoperator, = zuweisung
f = funktion
c = klasse
arrays mit punkt statt [ ]
foreach schlüsselwort=each und variable mit element immer each, bei verschachtelung mit komma eine ebene höher.
ret = return

villeicht ist das was :D LG
 

Neue Beiträge

Zurück