skriptsprache basierend auf java



  • Hallo leute,
    nur mal aus neugier und auf die gefahr hin, dass sich leute über mich hermachen was das denn für ne blöde frage ist aber:

    ist es möglich eine (eigene) skriptsprache, mit eigener syntax einzuführen die auf java basiert bzw. dessen code in javacode übersetzt und kompiliert wird und im prinzip eigentlich ein java programm ist.

    welche "tools" gibt es in die richtung? oder gibt es überhaupt etwas?

    ein ansatz wäre schlicht und einfach einen parser/lexer zu schreiben der mir aus der eigenen skriptsprache nach bestimmten regeln javacode zusammenbastelt. (ja ich weiß ich hab es stark vereinfacht ausgedrückt)....

    ich danke für für eventuelle antworten und diskussionen 🙂

    lg



  • Sowas gibts schon. Nennt sich Groovy http://groovy.codehaus.org/



  • danke für die antwort 🙂

    aber ich meinte eher wie man sowas selbst realisieren könnte...



  • "wie macht man sowas" - tolle frage, bau einen compiler, findst genug im internet darüber, ansonsten solltest du evtl. eine präzisere frage stellen.



  • Wir hatten mal einen Compiler geschrieben, der PL/0 in Java-Bytecode kompiliert. Lies sich gut mit BCEL realisieren.



  • bauerb schrieb:

    Sowas gibts schon. Nennt sich Groovy http://groovy.codehaus.org/

    Es gibt auch noch Scala und sicher noch viele andere.



  • Sowas kann man sogar vergleichsweise einfach machen. Du kannst dir in Java einen Compiler für deine Scriptsprache schreiben, der im Speicher ein Class File erzeugt und das kannst du dann über einen abgeleiteten Classloader mit defineClass() laden. Wenn du dir jetzt noch einen eigenen Java Launcher anpasst (ist als C-Sourcecode im JDK dabei), so dass er direkt immer deine Compiler Main class verwendet, kannst du deine Scripte mit "myloader.exe myscript.myext" ausführen bzw. myloader.exe als Defaultinterpreter für alle *.myext Dateien einrichten. Das jar File mit deinem Compiler und Runtimecode drin kannst du einfach an das exe-File hinten dranhängen und im Laucher argv[0] als Classpath verwenden (Zip Files dürfen vorne dran beliebigen Kram haben).

    Für die JVM zu compileren ist nicht so wild. Es ist eine einfache Stackmaschine und die opcodes sind in der Java VM Spec beschrieben (auch das Format der Classfiles). Es gibt diverse Projekte und Tools, die es evtl. einfacher machen Class Files zu erzeugen, z.B. Apache BCEL oder ObjectWeb ASM (letzteres hat auch ein Eclipse Pugin um sich den disassemblierten Bytecode im Vergelich zum Javasource anzusehen). Aber mit ein bisschen Bytefummelei hat man schnell ein Classfile "zu Fuß" erzeugt.

    http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html
    http://asm.ow2.org/
    http://jakarta.apache.org/bcel/
    http://java-source.net/open-source/bytecode-libraries



  • herzlichen dank 🙂


Anmelden zum Antworten