package silk; import java.io.PrintWriter; import java.io.InputStreamReader; import java.util.Hashtable; import java.util.Vector; import silk.InputPort; import silk.Scheme; /** A Class providing a single static Scheme engine that can be used for various purposes. It is aware of the generic extension. **/ public class EmbeddedScheme extends SchemeUtils { public static silk.Scheme interpreter; /** There is nothing to construct. **/ private EmbeddedScheme() {} static { /** Initialize the underlying Scheme environment. **/ EmbeddedScheme.interpreter = new Scheme(); // Load generic extension. EmbeddedScheme.interpreter.loadFile("src/generic/load.scm"); } /** Load a Scheme file. **/ public static void load(String file) { EmbeddedScheme.interpreter.loadFile(file); } /** Get the value of a Scheme global variable. **/ public static Object getGlobal(String name) { return EmbeddedScheme.interpreter.getGlobal(name); } /** Set the value of a Scheme global variable. **/ public static void setGlobal(String name, Object value) { EmbeddedScheme.interpreter.setGlobal(name, value); } /** Interact with Scheme using System.in and System.out **/ public static void interact(String[] args) { InputPort input = new InputPort(new InputStreamReader(System.in)); PrintWriter output = new PrintWriter(System.out, true); EmbeddedScheme.interact(args, input, output); } public static void interact(String[] args, InputPort input, PrintWriter output) { interpreter.loadFiles(args); interpreter.readEvalWriteLoop("> ", input, output); } public static void main(String[] args) { EmbeddedScheme.interact(args); } }