Seite 1 von 1

Compiler ähnliches Programm. Brauche Hilfe

Verfasst: Dienstag 11. März 2014, 18:22
von PyBeginner
Hallo,
nachdem ich nun über Grundkenntnisse in Python verfüge, möchte ich ein Programm schreiben, das für mich nicht gerade einfach zu schreiben ist :wink:
Ich bin mir nicht sicher ob man das noch Compiler nennen kann (ich kenn jetzt die genaue Definition nicht, aber ich wüsste nicht, wie ich es ohne riesige Umschreibungen nennen sollte.).

Jedenfalls mag ich BASIC, da das besonders für Einsteiger sehr einfach zu erlernen ist.
Ich hab mir ein paar Anweisungen überlegt, die meine eigene kleine, BASIC ähnliche Sprache bilden.
Nun möchte ich ein Programm schreiben, das erst eine .txt Datei öffnet und mit readline() Anweisungen liest und dann den Code meiner Sprache in Python/PyGame Code übersetzt und speichert diesen in einer anderen .txt oder .py Datei.

Ich hab nur mal angefangen, aber komme auf ein Problem:
Sobald eine Variable gesetzt wird oder ein Bild geladen wird, muss ich den Befehl um eine Variable zu setzen, von dem Namen der Variable und den Wert, den die Variable bekommt, unterschieden werden...
Dasselbe gilt auch, wenn man ein Bild laden will.

Ich habe bisher leider keine Lösung dafür gefunden. Kann Python z.B. nur die ersten 5 Buchstaben lesen, dann die nächsten bis man ein = vorfindet (wird als Variable gesetzt) und dann den Rest (Wert, der der Variable zugewiesen wird).

Vielleicht ist das ganze noch eine Nummer zu groß, aber dennoch möchte ich das unbedingt ausprobieren, auch wenns viel zu schwer ist :wink:
Ich hoffe ihr könnt mir helfen.
Danke im Voraus für jegliche Hilfe!

Re: Compiler ähnliches Programm. Brauche Hilfe

Verfasst: Dienstag 11. März 2014, 18:50
von BlackJack
@PyBeginner: Das was Du machen möchtest passt zum Begriff „Compiler”.

Du gehst das aber wohl etwas zu simpel an. Normalerweise definiert man eine Grammatik die die Syntax der zu kompilierenden Sprache beschreibt. Dann schreibt man einen Parser der diese Syntax in eine Struktur im Speicher übersetzt, die sich abstrakter Syntaxbaum („abstract syntax tree”, AST) übersetzt. Und für diese Struktur schreibt man dann Code der sie in die Zielsprache überführt.

Da gehört ein wenig Theorie dazu als Grundlage, reguläre Ausdrücke, kontextfreie Grammatiken, und so weiter.

Re: Compiler ähnliches Programm. Brauche Hilfe

Verfasst: Dienstag 11. März 2014, 19:07
von PyBeginner
@BlackJack
Danke für deine Antwort erstmal :)
Also ist es doch komplizierter als gedacht...
War ja irgendwie klar :wink:

Wie sollte ich das ganze dann angehen?
Wie schreibt man so einen Parser (nur vom Grundgerüst her)?
Und wie kann ich das Problem mit den Variablen lösen?

Bisher wollte ich es so machen:

BASIC_Main = open('BASIC_Main.txt')
PyGame_Main = open('PyGame_Main.txt')
Zeile1 = BASIC_Main.readline()
Zeile2 = BASIC_Main.readline()
und so weiter
und dann z.B.:
If Zeile 1 == Anweisung:
Dann schreibe Text in .txt Datei

Gibts eventuell Links oder sowas, die den Aufbau oder die Herangehensweise erläutern?
Bin momentan irgendwie Hilflos...

Danke im Voraus :)

Re: Compiler ähnliches Programm. Brauche Hilfe

Verfasst: Dienstag 11. März 2014, 19:29
von /me
PyBeginner hat geschrieben:Gibts eventuell Links oder sowas, die den Aufbau oder die Herangehensweise erläutern?
So lange du Variablennamen durchnummerierst kann man dich eigentlich nur auf das Tutorial verweisen, wo du sinnvollere Datenstrukturen kennen lernen wirst.

Es gibt natürlich passende Fachliteratur zum Thema, aber du könntest dir ja erst einmal einen Überblick verschaffen und mit dem einfachen Wikipedia Artikel zum Abstract Syntax Tree anfangen.

Re: Compiler ähnliches Programm. Brauche Hilfe

Verfasst: Dienstag 11. März 2014, 20:04
von PyBeginner
Danke :)
Werd die Links gleichmal ausprobieren.
Für Python speziell gibt's keine Tutorials, oder?

Oh und noch eine Frage:
Kann man in Python Wörter von Wörtern abziehen? Man kann ja zwei Wörter in Python zusammenzählen z.B. Haus + Tür = HausTür rechnen. Kann man z.B. HausTür - Tür = Haus rechnen?

Re: Compiler ähnliches Programm. Brauche Hilfe

Verfasst: Dienstag 11. März 2014, 20:36
von BlackJack
@PyBeginner: Man kann nicht mit Wörtern rechnen. Man kann Zeichenketten konkatenieren und dazu reagieren Zeichenketten ”zufällig” auf den gleichen Operator. Und ``-`` ist auf Zeichenketten nicht definiert, wie man leicht feststellen kann:

Code: Alles auswählen

In [1]: 'HausTür' - 'Tür'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-18823b4b99a5> in <module>()
----> 1 'HausTür' - 'Tür'

TypeError: unsupported operand type(s) for -: 'str' and 'str'
Die Operation die Du beschreibst, kann man natürlich selber, zum Beispiel als Funktion definieren.

Re: Compiler ähnliches Programm. Brauche Hilfe

Verfasst: Dienstag 11. März 2014, 20:45
von PyBeginner
Hm, ok, schade.
Danke für deine Antwort.

Nun ja, ich such im Internet mal nach Tutorials.
Falls jemand einen Link zu einem Tutorial hat, wäre ich natührlich sehr dankbar.

Re: Compiler ähnliches Programm. Brauche Hilfe

Verfasst: Mittwoch 12. März 2014, 12:31
von darktrym
Schau dir mal sma's Video an, nachdem du ein Python Tutorial durch hast.

Re: Compiler ähnliches Programm. Brauche Hilfe

Verfasst: Freitag 14. März 2014, 11:59
von darktrym
Hier gibts eine kurze Einführung in Compilerbau in Python.

Re: Compiler ähnliches Programm. Brauche Hilfe

Verfasst: Samstag 15. März 2014, 17:57
von PyBeginner
Danke für die beiden Links :D
Hab im Moment keine Zeit, aber ich werd mir das in jedem Fall mal ansehen :)