diff graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java @ 13761:7c418666c6c9

Refactoring and cleanup of Simple Language (more to come soon)
author Christian Wimmer <christian.wimmer@oracle.com>
date Fri, 24 Jan 2014 18:16:24 -0800
parents 69d2e4baa215
children b16ec83edc73
line wrap: on
line diff
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java	Fri Jan 24 18:13:38 2014 -0800
+++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java	Fri Jan 24 18:16:24 2014 -0800
@@ -24,32 +24,43 @@
 
 import java.io.*;
 
+import com.oracle.truffle.api.dsl.*;
 import com.oracle.truffle.api.source.*;
 import com.oracle.truffle.sl.builtins.*;
+import com.oracle.truffle.sl.nodes.*;
 
 public final class SLContext {
-
-    private final PrintStream printOutput;
+    private final SourceManager sourceManager;
+    private final PrintStream output;
     private final SLFunctionRegistry functionRegistry;
-    private final SourceManager sourceManager;
 
-    public SLContext(PrintStream print) {
-        this.printOutput = print;
+    public SLContext(SourceManager sourceManager, PrintStream output) {
+        this.sourceManager = sourceManager;
+        this.output = output;
         this.functionRegistry = new SLFunctionRegistry();
-        DefaultBuiltins.install(this);
-        this.sourceManager = new SourceManager();
+
+        installBuiltins();
+    }
+
+    public SourceManager getSourceManager() {
+        return sourceManager;
     }
 
     public PrintStream getPrintOutput() {
-        return printOutput;
+        return output;
     }
 
     public SLFunctionRegistry getFunctionRegistry() {
         return functionRegistry;
     }
 
-    public SourceManager getSourceManager() {
-        return sourceManager;
+    private void installBuiltins() {
+        installBuiltin(SLPrintBuiltinFactory.getInstance(), "print");
+        installBuiltin(SLTimeBuiltinFactory.getInstance(), "time");
+        installBuiltin(SLDefineFunctionBuiltinFactory.getInstance(), "defineFunction");
     }
 
+    private void installBuiltin(NodeFactory<? extends SLBuiltinNode> factory, String name) {
+        getFunctionRegistry().register(name, SLRootNode.createBuiltin(this, factory, name));
+    }
 }