[Mulgara-svn] r1610 - in branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog: . ast

pag at mulgara.org pag at mulgara.org
Fri Mar 13 01:32:04 UTC 2009


Author: pag
Date: 2009-03-12 18:32:03 -0700 (Thu, 12 Mar 2009)
New Revision: 1610

Modified:
   branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/Program.java
   branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Axiom.java
   branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/CanonicalPredicate.java
   branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Rule.java
   branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Statement.java
Log:
Updated to use CanonicalStatement instead of a raw list of Canonical Predicates.

Modified: branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/Program.java
===================================================================
--- branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/Program.java	2009-03-13 01:31:24 UTC (rev 1609)
+++ branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/Program.java	2009-03-13 01:32:03 UTC (rev 1610)
@@ -18,7 +18,7 @@
 import java.util.List;
 
 import org.apache.log4j.Logger;
-import org.mulgara.krule.rlog.ast.CanonicalPredicate;
+import org.mulgara.krule.rlog.ast.CanonicalStatement;
 import org.mulgara.krule.rlog.ast.Statement;
 
 /**
@@ -40,7 +40,7 @@
   private List<Statement> statements;
 
   /** The canonical forms of the statements that make up the program */
-  private List<List<CanonicalPredicate>> canonicalStatements;
+  private List<CanonicalStatement> canonicalStatements;
 
   /** The list of imports */
   private List<URL> imports;
@@ -50,7 +50,7 @@
    */
   public Program() {
     statements = new ArrayList<Statement>();
-    canonicalStatements = new ArrayList<List<CanonicalPredicate>>();
+    canonicalStatements = new ArrayList<CanonicalStatement>();
   }
 
   /**
@@ -76,7 +76,7 @@
    * @param s The statement to add.
    */
   public void add(Statement s) {
-    List<CanonicalPredicate> canonical = s.getCanonical();
+    CanonicalStatement canonical = s.getCanonical();
     if (!statementPresent(s, canonical)) {
       statements.add(s);
       canonicalStatements.add(canonical);
@@ -116,9 +116,9 @@
    * @param canonical The canonicalized form of the statement to look for.
    * @return <code>true</code> if an equivalent statement is found, <code>false</code> otherwise.
    */
-  private boolean statementPresent(Statement stmt, List<CanonicalPredicate> canonical) {
+  private boolean statementPresent(Statement stmt, CanonicalStatement canonical) {
     if (logger.isDebugEnabled()) logger.debug("Testing for presence of: " + stmt);
-    for (List<CanonicalPredicate> s: canonicalStatements) {
+    for (CanonicalStatement s: canonicalStatements) {
       if (canonical.equals(s)) {
         if (logger.isDebugEnabled()) logger.debug(canonical.toString() + " == " + s);
         return true;

Modified: branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Axiom.java
===================================================================
--- branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Axiom.java	2009-03-13 01:31:24 UTC (rev 1609)
+++ branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Axiom.java	2009-03-13 01:32:03 UTC (rev 1610)
@@ -16,8 +16,6 @@
 
 package org.mulgara.krule.rlog.ast;
 
-import java.util.Collections;
-import java.util.List;
 import java.util.Set;
 
 import org.mulgara.krule.rlog.ParseContext;
@@ -108,8 +106,8 @@
   }
 
   @Override
-  public List<CanonicalPredicate> getCanonical() {
-    return Collections.singletonList(predicate.getCanonical());
+  public CanonicalStatement getCanonical() {
+    return new CanonicalStatement(predicate.getCanonical());
   }
 
   /** @see java.lang.Object#toString() */

Modified: branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/CanonicalPredicate.java
===================================================================
--- branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/CanonicalPredicate.java	2009-03-13 01:31:24 UTC (rev 1609)
+++ branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/CanonicalPredicate.java	2009-03-13 01:32:03 UTC (rev 1610)
@@ -12,8 +12,6 @@
 
 package org.mulgara.krule.rlog.ast;
 
-import java.util.Arrays;
-
 /**
  * Represents a canonicalization of a predicate.
  *
@@ -117,7 +115,25 @@
    * @see java.lang.Object#toString()
    */
   public String toString() {
-    return (invertFlag ? "~" : "") + Arrays.asList(elements).toString();
+    StringBuilder s = new StringBuilder();
+    if (invertFlag) s.append("~");
+    switch (elements.length) {
+    case NULL_LENGTH:
+      s.append("<<null>>");
+      break;
+    case UNARY_LENGTH:
+      s.append(elements[0]);
+      s.append("(").append(elements[1]).append(")");
+      break;
+    case BINARY_LENGTH:
+      s.append(elements[1]);
+      s.append("(").append(elements[0]).append(", ");
+      s.append(elements[2]).append(")");
+      break;
+    default:
+      throw new IllegalStateException("Illegal predicate structure. Length = " + elements.length);
+    }
+    return s.toString();
   }
 
 

Modified: branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Rule.java
===================================================================
--- branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Rule.java	2009-03-13 01:31:24 UTC (rev 1609)
+++ branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Rule.java	2009-03-13 01:32:03 UTC (rev 1610)
@@ -212,15 +212,11 @@
   }
 
   @Override
-  public List<CanonicalPredicate> getCanonical() {
+  public CanonicalStatement getCanonical() {
     List<CanonicalPredicate> list = new ArrayList<CanonicalPredicate>(body.size() + 1);
     // reorder the predicates
     for (Predicate p: body) C.ascendingInsert(list, p.getCanonical());
-    list.add(head.getCanonical());
-    // rename the variables
-    VariableCanonicalizer vc = new VariableCanonicalizer();
-    for (CanonicalPredicate p: list) p.renameVariables(vc);
-    return list;
+    return new CanonicalStatement(head.getCanonical(), list);
   }
 
 

Modified: branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Statement.java
===================================================================
--- branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Statement.java	2009-03-13 01:31:24 UTC (rev 1609)
+++ branches/consistency/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/Statement.java	2009-03-13 01:32:03 UTC (rev 1610)
@@ -16,8 +16,6 @@
 
 package org.mulgara.krule.rlog.ast;
 
-import java.util.List;
-
 import org.mulgara.krule.rlog.ParseContext;
 
 /**
@@ -42,6 +40,6 @@
    * statement must be sorted, but if a head exists then it must be at the end.
    * @return A list containing the statement in canonical form.
    */
-  public abstract List<CanonicalPredicate> getCanonical();
+  public abstract CanonicalStatement getCanonical();
 }
 




More information about the Mulgara-svn mailing list