Avatar billede jespersahner Nybegynder
16. marts 2005 - 13:54 Der er 5 kommentarer og
1 løsning

BeanShell - hvad er "tricket"?

Jeg bruger BeanShell (en Java fortolker) i en applikation, og jeg undrer mig over, hvordan den bærer sig ad. Jeg har læst, at BeanShell bruger reflection men ikke bytecode-manipulation.

Gad vide, hvordan flg. virker?

Eksempel:

import java.awt.*;
import bsh.Interpreter;
public class Benyt_BeanShell {
    public static void main(String[] args) throws Exception {
        Interpreter i=new Interpreter();
        Object o;
        i.eval("Point p=new Point();");
        i.eval("p.x=3;");
        i.eval("p.y=4;");       
        o=i.eval("p;");
        System.out.println(o);
    }   
}

- udskriver:
java.awt.Point[x=3,y=4]

Nogle ideer?
Avatar billede simonvalter Praktikant
16. marts 2005 - 14:28 #1
der står lidt om det her
http://www.beanshell.org/manual/parser.html

nu har jeg ikke kigget nærmere på det men jeg kan se den benytter javacc

du skal nok kigge på hvordan man laver en scanner/parser

Interpreter i=new Interpreter(); har en parser tilknyttet.

alt mellem "" i  i.eval("Point p=new Point();"); bliver delt op i tokens af scanneren
og sendt til parseren... du kan læse om javacc her den giver en ok introduktion til syntax,semantics osv. http://www.engr.mun.ca/~theo/JavaCC-Tutorial/javacc-tutorial.pdf&e=7620

for at finde ud af at point er java.awt.point må den vel bruge noget reflection på den klasse Interpreter er i for at finde ud af hvad du mente men det er bare et gæt ;)
Avatar billede simonvalter Praktikant
16. marts 2005 - 14:29 #2
Avatar billede jespersahner Nybegynder
16. marts 2005 - 14:46 #3
->simonvalter: Tak for dit input. Det er dog stadig uklart for mig, hvordan man bærer sig ad rent Java-teknisk - altså hvordan man overhovedet får fortolket/parset  koden og dernæst udført den - selv med reflection til rådighed.
Avatar billede simonvalter Praktikant
16. marts 2005 - 15:19 #4
det er ikke så nemt at forklare ..jeg ser selv kun lige begyndt at lære om compilere.
Sourcen er tilgængelig hvis det kan hjælpe
http://cvs.sourceforge.net/viewcvs.py/beanshell/BeanShell/src/

her er javacc filen

http://cvs.sourceforge.net/viewcvs.py/beanshell/BeanShell/src/bsh/bsh.jj?view=markup
Avatar billede jespersahner Nybegynder
23. marts 2005 - 14:18 #5
->simonvalter: Det må vist være på tide med et svar, så du kan få point :-)
Avatar billede simonvalter Praktikant
23. marts 2005 - 14:26 #6
ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester