Adding JMCR-Stable version
[Benchmarks_CSolver.git] / JMCR-Stable / real-world application / jigsaw / src / org / w3c / tools / sexpr / Symbol.java
diff --git a/JMCR-Stable/real-world application/jigsaw/src/org/w3c/tools/sexpr/Symbol.java b/JMCR-Stable/real-world application/jigsaw/src/org/w3c/tools/sexpr/Symbol.java
new file mode 100644 (file)
index 0000000..8353cff
--- /dev/null
@@ -0,0 +1,57 @@
+/*\r
+ *  Symbol.java\r
+ *\r
+ *  Copyright 1997 Massachusetts Institute of Technology.\r
+ *  All Rights Reserved.\r
+ *\r
+ *  Author: Ora Lassila\r
+ *\r
+ *  $Id: Symbol.java,v 1.1 2010/06/15 12:27:51 smhuang Exp $\r
+ */\r
+\r
+package org.w3c.tools.sexpr;\r
+\r
+import java.io.PrintStream;\r
+import java.util.Dictionary;\r
+\r
+/**\r
+ * Base class for lisp-like symbols.\r
+ */\r
+public class Symbol implements SExpr {\r
+\r
+  private String name;\r
+\r
+  /**\r
+   * Creates a symbol and potentially interns it in a symbol table.\r
+   */\r
+  public static Symbol makeSymbol(String name, Dictionary symbols)\r
+  {\r
+    if (symbols == null)\r
+      return new Symbol(name);\r
+    else {\r
+      String key = name.toLowerCase();\r
+      Symbol s = (Symbol)symbols.get(key);\r
+      if (s == null) {\r
+        s = new Symbol(name);\r
+        symbols.put(key, s);\r
+      }\r
+      return s;\r
+    }\r
+  }\r
+\r
+  protected Symbol(String name)\r
+  {\r
+    this.name = name;\r
+  }\r
+\r
+  public String toString()\r
+  {\r
+    return name;\r
+  }\r
+\r
+  public void printExpr(PrintStream out)\r
+  {\r
+    out.print(toString());\r
+  }\r
+\r
+}\r