Suche geeignete Scriptsprache für Interpreterbau



  • eignet sich scheme denn als eingebetfege programmiersprache? für was wir das denn benutzt?



  • Nun, die meisten Lispdialekte werden selten benutzt. Benutzt wird es beispielsweise in Gimp. Javascript basiert stark auf Scheme, hat sich davon aber eher wegentwickelt. Ein Profi-Lisp Clozure CL wird bei

    ITA Software for the business logic of a new Airline Reservation System for Air Canada.

    eingesetzt. Damals auch bei Amazon. Viele modernere Scriptsprachen basieren auf diesen Ideen, bspw. Python.

    Es gibt viel Matrial im Netz fuer Schemeinterpreter, viele Buecher, die Scheme als Basis fuer Interpreterbau heranziehen , ... Aber sei gewarnt, die Sprache basiert auf dem beruehmt beruechtigten Lambda-Kalkuel.

    Scheme in Form von ChickenScheme eignet sich sehr gut als eingebettete Sprache, kann interpretiert werden und als ueber C als Zwischensprache auch kompiliert werden. ChickenScheme ist aber ungeeignet um anhand des Sourcecodes eigene Interpeterbau zu entwickeln.



  • ok,wenn ich den wikipedia artikel richtig verstanden hab, ist scheme keine sprache an sich, sondern nur eine sprachengruppe. welche schemeaprachen ausser chickenscheme ist geeignet?



  • Es gibt sehr viele Scheme Implementierungen die unterschiedliche Scheme Reports mit unterschiedlichen Erweiterungen implementieren und das auf unterschiedliche Weise.
    Der neuste Report ist der R7RS-Small (referenz Implementierung Chibi-Scheme).
    Scheme ist relativ klein und die Syntax ist sehr einfach, aber pass auf es enthält auch einige Knaller wie zB Makros, call/cc.

    hier ein kleines Beispiel von listen Operationen

    (define (sum list)
      (let sum ((acc 0) (list list))
        (if (null? list)
    	acc
    	(sum (+ acc (car list)) (cdr list)))))
    
    (define (list-iter list)
      (lambda () 
        (if (null? list) '()
    	(let ((first (car list)))
    	  (set! list (cdr list))
    	  first))))
    

    um zu zeigen wie die Syntax aussieht. (zum testen habe ich gnu guile benutzt)



  • also perfekt zum interpreterbau üben. wie ist das mit den standards genau? gibts den kostenlos online?





  • Und wenn man dann Rekursion gelernt hat, sollten Patterns benutzt werden, bspw. fold-left.

    Aber um beim Thema zu bleibe: Eine andere Option ist Forth.



  • was denn nun? forth oder scheme? was würdet ihr denn implementieren? was ist leichter?



  • Einmal eine etwas andere version für knivil

    (import (srfi srfi-1))
    (import (ice-9 match))
    
    (define (sum list)
      (reduce + 0 list))
    
    (define (list-iter list)
      (lambda ()
        (match list
    	   (() '())
    	   ((f r ...) (set! list r) f))))
    

    !hobbyprogrammierer! schrieb:

    was denn nun? forth oder scheme? was würdet ihr denn implementieren? was ist leichter?

    Das musst du selbst entscheiden, vll willst du ja auch was anderes machen als scheme/forth. Denn es gibt ja noch mehr Programmiersprachen oder du denkst dir deine eigene aus oder modifizierst eine bestehnde oder oder oder



  • Kann das Buch:

    Writing Compilers and Interpreters: An Applied Approach Using C++

    empfehlen. Kriegste gebraucht bei Amazon für 20€. Da wird auf knapp 850 Seiten ein kompletter Pascal Compiler programmiert.

    Lg



  • Danke, aber ich programmiere in C.

    Und Geld für ein Buch über Interpreterbau will ich jetzt auch nicht ausgeben... da gibts im Internet sicherlich viele gute Tutorials.


Anmelden zum Antworten