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