Cleanup formatting of PrologMain
Change-Id: I979c222ad812b1f3b769dbdfb66c8162f9a25e64
diff --git a/src/repl/PrologMain.java b/src/repl/PrologMain.java
index eea623b..0564913 100644
--- a/src/repl/PrologMain.java
+++ b/src/repl/PrologMain.java
@@ -1,4 +1,5 @@
package com.googlecode.prolog_cafe.repl;
+
import com.googlecode.prolog_cafe.exceptions.HaltException;
import com.googlecode.prolog_cafe.lang.ListTerm;
import com.googlecode.prolog_cafe.lang.Prolog;
@@ -8,88 +9,71 @@
import java.util.EnumSet;
import java.util.StringTokenizer;
-/**
- * Prolog Cafe launcher.
- * The <code>PrologMain</code> class launchs the Prolog Cafe system.<br>
- * The usage is as follows, where
- * <code>package</code> is a package name, and
- * <code>predicate</code> is a predicate name (only atom).
- * <pre>
- * % java -cp $PLCAFEDIR/plcafe.jar com.googlecode.prolog_cafe.lang.PrologMain package:predicate
- * % java -cp $PLCAFEDIR/plcafe.jar com.googlecode.prolog_cafe.lang.PrologMain predicate
- * </pre>
- * Let us show a sample session for launching a small Prolog interpreter:
- * <code>com.googlecode.prolog_cafe.builtin:cafeteria/0</code>.<br>
- * <pre>
- * % java -cp $PLCAFEDIR/plcafe.jar:$CLASSPATH com.googlecode.prolog_cafe.lang.PrologMain com.googlecode.prolog_cafe.builtin:cafeteria
- * Prolog Cafe X.X.X (YYY)
- * Copyright(C) 1997-200X M.Banbara and N.Tamura
- * | ?-
- * </pre>
- *
- * @author Mutsunori Banbara (banbara@kobe-u.ac.jp)
- * @author Naoyuki Tamura (tamura@kobe-u.ac.jp)
- * @version 1.0
- */
+
+/** Launches the meta-interpreter from the command line. */
public class PrologMain {
- private static final String COPYRIGHT = "Copyright(C) 1997-2009 M.Banbara and N.Tamura";
- private static final String HEADER = "Prolog Cafe (" + COPYRIGHT + ")";
+ private static final String COPYRIGHT = "Copyright(C) 1997-2009 M.Banbara and N.Tamura";
+ private static final String HEADER = "Prolog Cafe (" + COPYRIGHT + ")";
- public static void main(String argv[]) {
- BlockingPrologControl p;
- try {
- System.err.println(HEADER);
- if (argv.length != 1) {
- usage();
- System.exit(1);
- }
- Term arg1 = Prolog.Nil;
- arg1 = new ListTerm(SymbolTerm.intern("user"), arg1);
- arg1 = new ListTerm(SymbolTerm.intern(Prolog.BUILTIN), arg1);
- Term arg2 = parseAtomicGoal(argv[0]);
- if (arg2 == null) {
- usage();
- System.exit(1);
- }
+ public static void main(String argv[]) {
+ try {
+ System.err.println(HEADER);
+ if (argv.length != 1) {
+ usage();
+ System.exit(1);
+ }
- p = new BlockingPrologControl();
- p.setEnabled(EnumSet.allOf(Prolog.Feature.class), true);
- p.configureUserIO(System.in, System.out, System.err);
- p.setPredicate(Prolog.BUILTIN, "initialization", arg1, arg2);
- for (boolean r = p.call(); r; r = p.redo()) {}
- System.exit(0);
- } catch (HaltException e) {
- System.exit(e.getStatus());
- } catch (Exception e){
- e.printStackTrace();
- System.exit(1);
- }
+ Term packages = new ListTerm(
+ SymbolTerm.intern(Prolog.BUILTIN),
+ new ListTerm(SymbolTerm.intern("user"), Prolog.Nil));
+
+ Term goal = parseAtomicGoal(argv[0]);
+ if (goal == null) {
+ usage();
+ System.exit(1);
+ }
+
+ BlockingPrologControl p = new BlockingPrologControl();
+ p.setEnabled(EnumSet.allOf(Prolog.Feature.class), true);
+ p.configureUserIO(System.in, System.out, System.err);
+ p.setPredicate(Prolog.BUILTIN, "initialization", packages, goal);
+ for (boolean r = p.call(); r; r = p.redo()) {
+ }
+ } catch (HaltException e) {
+ System.exit(e.getStatus());
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.exit(1);
}
+ }
- /** Returns a term for given string representation of atom goal, or
- * <code>null</code> if parsing fails.
- * @param s a string representation of initial goal (ex. foge:main).
- * @return a term which corresponds to a given string,
- * or <code>null</code> if parsing fails.
- */
- protected static Term parseAtomicGoal(String s) {
- StringTokenizer st = new StringTokenizer(s, ":");
- int i = st.countTokens();
- if (i == 1) {
- Term[] args = {SymbolTerm.intern("user"),
- SymbolTerm.create(st.nextToken())};
- return new StructureTerm(SymbolTerm.intern(":", 2), args);
- } else if (i == 2) {
- Term[] args = {SymbolTerm.create(st.nextToken()),
- SymbolTerm.create(st.nextToken())};
- return new StructureTerm(SymbolTerm.intern(":", 2), args);
- } else {
- return null;
- }
+ /**
+ * Returns a term for given string representation of atom goal, or
+ * <code>null</code> if parsing fails.
+ *
+ * @param s a string representation of initial goal (ex. foge:main).
+ * @return a term which corresponds to a given string, or <code>null</code> if
+ * parsing fails.
+ */
+ private static Term parseAtomicGoal(String s) {
+ StringTokenizer st = new StringTokenizer(s, ":");
+ int i = st.countTokens();
+ if (i == 1) {
+ Term[] args = {
+ SymbolTerm.intern("user"),
+ SymbolTerm.create(st.nextToken())};
+ return new StructureTerm(SymbolTerm.intern(":", 2), args);
+ } else if (i == 2) {
+ Term[] args = {
+ SymbolTerm.create(st.nextToken()),
+ SymbolTerm.create(st.nextToken())};
+ return new StructureTerm(SymbolTerm.intern(":", 2), args);
+ } else {
+ return null;
}
+ }
- /** Shows usage */
- protected static void usage() {
+ private static void usage() {
System.err.println("Usage:");
System.err.println(" java -jar cafeteria.jar package:predicate");
System.err.println(" java -jar cafeteria.jar predicate");