Alan Manuel Gloria:
> It should be trivial to create a Scheme interpreter in Java.
> Actually, you don't even need a scheme interpreter: you just need a
> set of classes to represent common Scheme types, and a virtual member
> function on the base class to print out an s-expression.  That way we
> can use its output directly into a Scheme script that executes the
> Java code on the t-expr input, slurps its s-expr output, and compares
> it to the reference s-expr.

I've done something like that in Java, and it's working!   I've created 
output/scheme/Pair.java; a Pair represents a Scheme Pair, and it has static 
Scheme-like routines like cons, list, append, nullp (for "null?"), pairp, and 
so on.  It's not a full Scheme, but it's enough so that action rules have a 
trivial mapping to Scheme (they basically use Scheme procedure names, with Java 
syntax).  Scheme's () is represented as Java null, Scheme atoms are represented 
as Java strings, and rule results are "$RULENAME.v".  Data is represented as 
Java type "Object" (which is the root of the Java class hierarchy).

Here's an example, it looks pretty clear to me:

body  returns [Object v]  :
   i_expr (same body1=body {$v = cons($i_expr.v, $body1.v);}
  | dedent   {$v = list($i_expr.v);} ) ;

Thoughts?

I think this is better done in Java than in C++.  For one thing, Java has 
automatic garbage collection, and C++ doesn't, which makes Java a better match 
to the problem.

--- David A. Wheeler

------------------------------------------------------------------------------
Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery
and much more. Keep your Java skills current with LearnJavaNow -
200+ hours of step-by-step video tutorials by Java experts.
SALE $49.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122612 
_______________________________________________
Readable-discuss mailing list
Readable-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/readable-discuss

Reply via email to