Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Programmiersprache selbst entwickeln

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Bauchredner



Anmeldungsdatum: 11.01.2008
Beiträge: 57

BeitragVerfasst am: 11.01.2009, 14:13    Titel: Programmiersprache selbst entwickeln Antworten mit Zitat

Hallo mal wieder!

Als ich im Internet etwas rumgeforscht hab, hab ich folgendes entdeckt: http://de.wikipedia.org/wiki/Esoterische_Programmiersprache

Da hab ich gedacht, warum nicht auch mal ne Programmiersprache entwickeln? Ich weiss, was hier auf mich zu kommt und habe durch Selbstrecherche das http://andremueller.gmxhome.de/toc.html gefunden. Zeit werd ich wohl genug finden. Aber habt ihr sonst noch Informationen, wie man eine Programmiersprache entwickelt?

Danke zum Voraus,
Bauchredner
_________________
Zu meiner Homepage
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 11.01.2009, 16:24    Titel: Re: Programmiersprache selbst entwickeln Antworten mit Zitat

Bauchredner hat Folgendes geschrieben:
Zeit werd ich wohl genug finden.


Das glaube ich eher nicht.

Eine komplette Programmiersprache allein zu entwickeln auf dem Wissensstand, auf den ich jetzt mal einfach so einschätze, könnte ohne weiteres zur Lebensaufgabe werden.

hf & gl.
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 11.01.2009, 17:00    Titel: Antworten mit Zitat

Assembler brauchst nicht unbedingt, und die Implementierung eines Interpreters für eine esoterische Programmiersprache (natürlich trotzdem abhängig davon, welche...) ist in vertretbarer Zeit durchaus machbar. Es bietet sich z.B. der 19942375. Brainfuck-Interpreter o.ä. an. zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bauchredner



Anmeldungsdatum: 11.01.2008
Beiträge: 57

BeitragVerfasst am: 11.01.2009, 18:24    Titel: Antworten mit Zitat

Oder ich mach nur einen oder zwei Begriffe, die man dann gebrauchen kann. Nur wo erstelle ich den Code für eine neue Programmiersprache? Im Texteditor? Im DOS Eingabefenster? Oder wär dann das Erlernen einer Assemblersprache doch besser?
_________________
Zu meiner Homepage
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 11.01.2009, 19:11    Titel: Antworten mit Zitat

Ich denke mal, am einfachsten wird es sein, einen Interpreter zu schreiben; also das Programm, das in deiner Sprache geschrieben sein soll, als normale Textdatei zu speichern und diese dann durch den Interpreter zu jagen. Die erste Frage für mich lautet in diesem Fall: Wie gestalte ich die Sprache, dass ich sie möglichst leicht parsen kann?
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 11.01.2009, 22:13    Titel: Antworten mit Zitat

Also wenn du fragst wo du den Code eingeben must, und dann noch wissen willst wie man eine Programmiersprache schreibt...

Selbst einen einfachen Interpreter mit vertretbarer Syntax und Expression-System ist alleine sicherlich nicht in unter 4 Wochen zu realisieren.

Schau dir doch mal an wieviel Sourcecode nur der FBC hat (und das ist noch nicht der Assembler/Linker!!): http://www.ohloh.net/p/543

Zitat:
Codebase 493,599 [zeilen]
Effort (est.) 134 Person Years
[...]
$ 7,369,630 [entwicklungskosten]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 12.01.2009, 00:19    Titel: Antworten mit Zitat

Es hängt natürlich davon ab, was die Sprache alles können soll. fbc ist ja schließlich schon sehr umfangreich.
Zunächst einmal würde ich mich auf einfache Zahlenberechnung, Schleifen und Bedingungen konzentrieren; in LISP-Syntax geht das sogar relativ flott. Danach fängt die Arbeit erst an, aber ausbauen kann man das ja dann nach und nach (sofern Durchhaltevermögen vorhanden happy ).
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 12.01.2009, 11:03    Titel: Antworten mit Zitat

Also .. ich habe schon mehrere Interpreter geschrieben, kann kann dir nur sagen, das du dir erstmal gedanken darüebr machen solltest, wie dein Sourcecode aussehen soll.

Schreibe dir einfach mal ein Textfile mit befehle zurecht. so als wenn du einen Sourcecode für FB schreiben würdest. Wenn dir deien Syntax dann gefällt, und du zufrieden mit dem aufbau der Befehle bist, vorallem so, das sie syntax gleich bleibt. dann kannst du anfangen einen Parser zu schreiben, der dir diesen Sourcecode einlist. Dabei sollte der Parser die Daten so lesen, das du anschliessend alle nötigen parameter zusammen hast, um einen Befehl ausführen zu können.

Anfangen würde ich beim parser mit dem Einlesen. Sprich. Du beginsnt mit einem Main(), das die erste Datei, welche du deinem eigenem Compiler übergibst, weiterreicht. Wenn du compileroptionen eingeben möchtest, oder dies später mal vor hast, kannst du diese zusätzlich in Main() verarbeiten.

Die Datei,w elche gelesen werden soll, übergibst du anschliessend einer Lesefunktion, die dafür sorgt, das der quelltext eingelesen und dessen Befehlszeilen zerlegt werden. Die Lesefunktion für eien Datei sollte dabei absichtlich seperat sein, udnnicht im Main, damit spätere includfiles, bzw Befehle die weitere Datein includieren möchten, ebenfalls die selbe Dateilese-funktion aufrufen können, udn du dir 2x die selbe arbeit, sparen kannst.

In dieser lesefunktion werden anschliessend die zerlegten befehlszeilen (die je nach deiner syntax zerteilt werden), einer ausführungs oder umsetzungsfunktion zugewiesen. Dort wird anschliessend die Befehlszeile soweit zerlegt, und aufbereitet, das sie später verabrietet werden kann.

Dabei ist noch hinzuzufügen, das diese funktion rekrusiv arbeitet.

Als beispiel von BASIC Lang:
Code:
Print "a"

Ist ein Befehl, der relativ unkomplex ist, und nicht einen Text ausgibt. Dabei ist Print ein statement, das einen Wert ("a") benötigt. Hast du jedoch komplexe funktionsaufrufe
Code:
Print Funktion("a", Subfunktion("b"))

Dann musst du natürlich zuerst die Subfunktion verarbeiten, so das diese ihre rückgabe an die Funktion weiter leiten kann, welche wiederum ihr ergebniss an Print weiterreicht.

Darum ist eine Rekrusive verarbeitungsfunktion sinvoller, da solche parsingmechanissmen einfacher mit eienr funktion zu lösen sind, als mit mehreren Komplexen.

Dies ist übrigens der Schwierigste teil an einem Parser.

Nachdem du nun die einzelstukturen auseinander gefriement hast, musst du diese an eine verarbeitungsfunktion weiter reichen, welche die übergebenen parameter und den Befehl "SubFunktion" (aufzurufender befehl) und "b" (Parameter) verarbeitet. bzw. in ein ergebniss umsetzt.

Hier teilt sich die aufgabe in 2 funktionen auf. Einmal eine eigene funktiosn udn routine ausführungsfunktion, welche die funktion einlist, und deren quellcode erneut über den verarbeitunsprozess jagt, um das ergebniss zu modelieren. und anschliessend an zurückgibt, und die zweite, welche interne Compilerbefehle wie "Print", "Cls", "Open", usw. verarbeitet. Solche Befehle sind feststehen, und müssen direkt vom compiler / Interpreter verarbeitet, bzw umgesetzt werden.

Beim Interpreter würde dieser jetzt den Befehle direkt ausführen und verarbeiten. Beim Compiler wird das ganze in ASM oder direktem Maschinencode umgesetzt und in eine ausgabedatei geschrieben.


Und damit ist das dann schon alles geschaft, und dein Interpreter / compiler arbeitet.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 12.01.2009, 15:16    Titel: Antworten mit Zitat

also ne interpretierte sprache mit (wenn erwünscht furchtbar abgedrehter) syntax ist eigentlich super einfach, du baust dir drei vier grundelemente, dann noch zwei rekursionskonstruktoren, implementierst dir ne map für den systemzustand und baust für jedes grundelement und jeden konstruktor die übersetzung auf den systemzustand und du kannst anfangen zu programmieren. Ist überhaupt nicht viel stress und könnten die meisten sogar schaffen.

wenn man allerdings bei ner programmiersprache an ne vollwertige sprache denkt, in der leute auch wirklich leistungsfähige applikationen schreiben können und nicht nur grad ein paar ausdrücke auswerten, dann sieht das ganze anders aus. das ist klar. Bis man da mal was in ne vernünftige runtime-umgebung gebracht hat wo's auch funktioniert, dann noch das kann schon viel arbeit sein, und dann brauchts aber für ne taugliche programmiersprache die auch wirklich anklang finden soll ne hinreichend gute API, das ist unter anderem auch noch ein punkt bei dem freebasic noch viele mankos hat.

aber nur ne kleine funktionale auswertungssprache, das ist in der tat einfach. syntax-check ist jetzt auch nicht so schwer, gibt fertige LL-parser die das übernehmen können, man muss sich halt nur vorher in logische syntax einarbeiten, wenn man gut ist und vernünftige lernmaterialien hat *kann* man das eingeschränkt in ner woche schaffen, wenn man das thema breiter auslegt kommt man da aber problemlos auch auf n halbes jahr. Aber aus studiumserfahrung - wir hatten im ersten und zweiten semester jeweils eine kleine Logik-Vorlesung, und anderthalb entsprechende vorlesungen zu formaler modellierung im dritten semester, und da haben wir uns mehrere auswertungssprachen selbst gebastelt, deren auswertung zu implementieren wäre überhaupt kein problem gewesen.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 12.01.2009, 18:24    Titel: Antworten mit Zitat

lol:

Code:
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.

Das ist ein Hello World Programm! Die Sprache heißt Ook! und soll für Orang-Utans verständlich sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 12.01.2009, 18:57    Titel: Antworten mit Zitat

Whitespace ist viel cooler - einfach nur ausdrucken, und der Quelltext ist vor jedem Spionageangriff sicher.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 12.01.2009, 20:22    Titel: Antworten mit Zitat

Malbolge ist auch toll. Mehr dazu gleich nach der Werbung, nein in Wikipedia zwinkern : http://de.wikipedia.org/wiki/Malbolge
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 12.01.2009, 21:03    Titel: Antworten mit Zitat

frebas hat Folgendes geschrieben:
lol:
[...]
Das ist ein Hello World Programm! Die Sprache heißt Ook! und soll für Orang-Utans verständlich sein.

Der Bibliothekar der Unsichtbaren Universität (Ankh Morphork, Scheibenwelt) hätte daran sicher seine freude grinsen
Terry Pratchett lässt grüßen.
mfg
The_Muh
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eisbaer



Anmeldungsdatum: 16.10.2004
Beiträge: 354
Wohnort: Deutschland,Bayern

BeitragVerfasst am: 25.02.2009, 01:27    Titel: Antworten mit Zitat

Ich poste hier mal das Stadartwerk von EPS zu dem Thema,
der hat sich die Mühe gemacht und eine mini Script Sprache in
Quick Basic Entworfen.

http://www.east-power-soft.de/index.php?menu=quickbasic_quickbasic_tuts_script

Wenn du es wirklich richtig erlernen willst gibt es nur einen Weg,
und auch nur ein Standart Werk.

http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886/ref=sr_1_4?ie=UTF8&s=books&qid=1235517961&sr=1-4
_________________
Eigene Webseite:
http://www.eisbaer-studios.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz