Move read-eval-print code to its own repl package

These are not required for Gerrit Code Review's server usage
so pull them into their own package outside of lang.

Change-Id: I790d74f70bda5903a9432ec83f94d731fa2d3cc0
diff --git a/BUCK b/BUCK
index a8a7a37..a82bf42 100644
--- a/BUCK
+++ b/BUCK
@@ -3,7 +3,6 @@
 
 REPL = [
   SRC + 'builtin/PRED_$write_toString_2.java',
-  SRC + 'lang/PrologMain.java',
 ]
 
 IO = [
@@ -101,13 +100,13 @@
 
 java_binary(
   name = 'cafeteria',
-  main_class = 'com.googlecode.prolog_cafe.lang.PrologMain',
+  main_class = 'com.googlecode.prolog_cafe.repl.PrologMain',
   deps = [':cafeteria_lib'],
 )
 
 java_library(
   name = 'cafeteria_lib',
-  srcs = REPL + [':cafeteria_srcs'],
+  srcs = glob([SRC + 'repl/*.java']) + REPL + [':cafeteria_srcs'],
   deps = [
     ':builtin',
     ':io',
@@ -149,7 +148,9 @@
 
 java_sources(
   name = 'cafeteria_src',
-  srcs = REPL + ['src/builtin/cafeteria.pl'],
+  srcs = glob([SRC + 'repl/*.java']) + REPL + [
+    'src/builtin/cafeteria.pl',
+  ],
 )
 
 maven_package(
diff --git a/src/lang/BlockingPrologControl.java b/src/repl/BlockingPrologControl.java
similarity index 96%
rename from src/lang/BlockingPrologControl.java
rename to src/repl/BlockingPrologControl.java
index 907997d..c8927c8 100644
--- a/src/lang/BlockingPrologControl.java
+++ b/src/repl/BlockingPrologControl.java
@@ -1,4 +1,10 @@
-package com.googlecode.prolog_cafe.lang;
+package com.googlecode.prolog_cafe.repl;
+
+import com.googlecode.prolog_cafe.lang.HashtableOfTerm;
+import com.googlecode.prolog_cafe.lang.Predicate;
+import com.googlecode.prolog_cafe.lang.PrologControl;
+import com.googlecode.prolog_cafe.lang.PrologException;
+import com.googlecode.prolog_cafe.lang.Term;
 
 /**
  * Prolog thread.<br>
@@ -110,11 +116,12 @@
 
   /** Constructs a new <code>BlockingPrologControl</code>. */
   public BlockingPrologControl() {
+    engine.init();
   }
 
-  /** Constructs a new <code>BlockingPrologControl</code>. */
-  public BlockingPrologControl(PrologMachineCopy pmc) {
-    super(pmc);
+  /** Returns the stream manager. */
+  HashtableOfTerm getStreamManager() {
+    return engine.getStreamManager();
   }
 
   /**
@@ -368,8 +375,6 @@
   public void run() {
     try {
       executePredicate();
-  } catch (JavaInterruptedException e) {
-     System.exit(1);
   } catch (PrologException e){
       System.out.println(e.toString());
   } catch (Exception e){
diff --git a/src/lang/PrologMain.java b/src/repl/PrologMain.java
similarity index 88%
rename from src/lang/PrologMain.java
rename to src/repl/PrologMain.java
index 956248e..c0d16f6 100644
--- a/src/lang/PrologMain.java
+++ b/src/repl/PrologMain.java
@@ -1,4 +1,12 @@
-package com.googlecode.prolog_cafe.lang;
+package com.googlecode.prolog_cafe.repl;
+import com.googlecode.prolog_cafe.lang.HaltException;
+import com.googlecode.prolog_cafe.lang.JavaObjectTerm;
+import com.googlecode.prolog_cafe.lang.ListTerm;
+import com.googlecode.prolog_cafe.lang.Prolog;
+import com.googlecode.prolog_cafe.lang.StructureTerm;
+import com.googlecode.prolog_cafe.lang.SymbolTerm;
+import com.googlecode.prolog_cafe.lang.Term;
+
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.InputStreamReader;
@@ -55,17 +63,16 @@
 	    }
 
 	    p = new BlockingPrologControl();
-	    p.engine.init();
-		p.engine.getStreamManager().put(
+		p.getStreamManager().put(
 			SymbolTerm.intern("user_input"),
 			new JavaObjectTerm(new PushbackReader(new BufferedReader(
 				new InputStreamReader(System.in)),
 				Prolog.PUSHBACK_SIZE)));
-		p.engine.getStreamManager().put(
+		p.getStreamManager().put(
 			SymbolTerm.intern("user_output"),
 			new JavaObjectTerm(new PrintWriter(new BufferedWriter(
 				new OutputStreamWriter(System.out)), true)));
-		p.engine.getStreamManager().put(
+		p.getStreamManager().put(
 			SymbolTerm.intern("user_error"),
 			new JavaObjectTerm(new PrintWriter(new BufferedWriter(
 				new OutputStreamWriter(System.err)), true)));