Interpreter



  • Hi,

    wollte ma fragen obs irgendwo informationen über die Programmierung von interpretern gibt. Könnt ihr mir da vielleicht ma verraten wie das konzept funktioniert, und könnt ihr vielleicht mir ein minimalistisches Beispiel einer Umsetzung zeigen? Ich danke euch! 🙂

    cya *Hacker*
    🕶



  • Du willst mich programmieren? :p



  • hi,

    versuch mal mit flex und bison unter linux, das is was fuer einen compiler schreiben, sollte damit aber auch gehen denke ich.

    msp



  • Hallo,

    für den Anfang solltest du dich vielleicht mit kontextfreien Grammatiken befassen.
    Wenn du das Konzept verstanden hast und vielleicht einen Mini-Parser zum Lösen von
    Rechenaufgaben befasst hast, kannst du dich ja mit bison oder flex befassen.

    Ich versuch mal eine Minimalgrammatik für Rechenaufgaben der Form:
    2 + 3 + 4 * 5
    zu schreiben.

    <term> ::= <term> + <muldiv> 
               <term> - <muldiv>
               <muldiv>
    
    <muldiv> ::= <muldiv> * <skalar>
                 <mudliv> / <skalar>
                 <skalar>
    <skalar> ::= +<zahl>
                 -<zahl>
                 <zahl>
    <zahl> ::= {1,2,3,4,5,6,7,8,9,0}
    

    Diese Grammatik kann fast gar nichts (keine Klammerung von Termen möglich) sollte aber relativ leicht umsetzbar sein.

    Wenn etwas falsch sein sollte, bitte ich mich zu korrigieren.

    Gruß Tobias Bell



  • tobidope schrieb:

    Hallo,

    für den Anfang solltest du dich vielleicht mit kontextfreien Grammatiken befassen.

    Was ein zu eingeschränktes Bild im Bezug auf Parser-Techniken vermitteln dürfte. Es lohnt sich imho sehr sich auch ein wenig mit Grammatiken und Automatentheorie im Allgemeinen zu beschäftigen.

    tobidope schrieb:

    Diese Grammatik kann fast gar nichts (keine Klammerung von Termen möglich) sollte aber relativ leicht umsetzbar sein.

    Wenn etwas falsch sein sollte, bitte ich mich zu korrigieren.

    Die Grammatik ist Linksrekursiv und somit unbrauchbar für deterministische Parser die mittels rekursivem Abstieg arbeiten. (prädiktive Parser) Soll heißen hier wäre z.B. Backtracking notwendig oder ein Parsekonzept, dass völlig anders arbeitet und nicht mehr so ersichtlich ist.

    Wie gesagt, ich denke ein "minimalistisches Beispiel" bringt hier leider überhaupt nichts weil jede Grammatik für sich betrachtet evtl. modifiziert werden muss um mit einer der vielen Parse-Techniken zurecht kommen zu können.

    Wenn's dich (*Hacker*) wirklich interessiert, dann besorg dir z.B. das Drachenbuch (Compilerbau, von Aho,Sethi,Ullman) und idealerweise noch ein Buch das näher auf die Theorie eingeht (Schöning, Theoretische Informatik kurzgefasst).

    Gruß, space



  • zu blöd zum editieren



  • hmm... ich dachte so an eine kleine programmiersprache mit variablen, ausgabe, eingabe und Kontrollstrukturen. Is das vielleicht für den Anfang etwas zu viel?

    Ein Buch für Compilerbau? Compilerbau is doch komplexer, wegen der übersetzung in die Maschinensprache, oder nicht!?



  • Wenn du so etwas noch nicht gemacht hast, ist das vielleicht ein bischen viel.

    Das Parsen von Rechenausrdücken ist meist die erste Übungsaufgabe in der Richtung.
    Kannst dann noch Punkt-Vor-Strich-Rechnung, Klammerstrukturen, trigonometrische
    Funktionen etc. und eine Syntaxüberprüfung einbauen. Das ist erst mal ein schöner
    Anfang 🙂

    Compiler haben mit Maschinensprache nicht zwangsläufig was zu tun. Compiler bedeutet
    erstmal Sprachübersetzter. Das kann auch eine Übersetztung von Java zu C++ sein,
    oder was dir gerade Spaß macht 😉



  • Compilerbau is doch komplexer, wegen der übersetzung in die Maschinensprache, oder nicht!?

    Ein Interpreter wandelt deine Hochsprache auch in Maschinencode um.



  • versuche es mal hiermit:

    "Implementing A Scripting Engine" Flipcode
    http://www.flipcode.com/tutorials/tut_scr01.shtml

    "PxdScript language tutorial series" telemacho
    http://www.peroxide.dk/tuts_scr.shtml


Anmelden zum Antworten