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)));