[jboss-svn-commits] JBL Code SVN: r33525 - in labs/jbossrules/branches/DRLv6: src/main/java/org/drools/lang and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jun 16 12:02:56 EDT 2010


Author: dsotty
Date: 2010-06-16 12:02:54 -0400 (Wed, 16 Jun 2010)
New Revision: 33525

Added:
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DLDescrFactory.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_AndDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_BaseDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_CompositeDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ExistsDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ForallDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ImpliesDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_LeafDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_NegDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_OrDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_PropertyDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_RootNode.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_TypeDescr.java
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/util/DRLTreeFormatter.java
   labs/jbossrules/branches/DRLv6/src/main/resources/DLTreeBuilder.g
Modified:
   labs/jbossrules/branches/DRLv6/out/DRLv6Log.txt
   labs/jbossrules/branches/DRLv6/src/main/java/org/drools/util/ReflectiveVisitor.java
   labs/jbossrules/branches/DRLv6/src/main/resources/DRLv6Lexer.g
   labs/jbossrules/branches/DRLv6/src/main/resources/DRLv6Parser.g
   labs/jbossrules/branches/DRLv6/src/test/java/org/drools/lang/Rule_Test.java
   labs/jbossrules/branches/DRLv6/src/test/java/org/drools/util/ParsingResult.java
Log:


Modified: labs/jbossrules/branches/DRLv6/out/DRLv6Log.txt
===================================================================
--- labs/jbossrules/branches/DRLv6/out/DRLv6Log.txt	2010-06-16 15:45:15 UTC (rev 33524)
+++ labs/jbossrules/branches/DRLv6/out/DRLv6Log.txt	2010-06-16 16:02:54 UTC (rev 33525)
@@ -26,7 +26,7 @@
 			(VT_IMPORT_ID org klass
 			)
 		) 
-		(declare Klass
+		(VT_TYPE_DECLARE Klass
 		) 
 		(rule "ruel" 
 			(when VT_AND_IMPLICIT
@@ -63,7 +63,7 @@
 package_statement
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
+>> TIME to parse 0
 >> SOURCE : 
 package simplePack
 >> OUTPUT : 
@@ -76,7 +76,7 @@
 global
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
+>> TIME to parse 0
 >> SOURCE : 
 global int N 
 >> OUTPUT : 
@@ -146,7 +146,7 @@
 data_type
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
+>> TIME to parse 0
 >> SOURCE : 
 int[][][]
 >> OUTPUT : 
@@ -157,7 +157,7 @@
 import_statement
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
+>> TIME to parse 0
 >> SOURCE : 
 import jav.lang.String
 >> OUTPUT : 
@@ -183,7 +183,7 @@
 import_statement
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 0
+>> TIME to parse 1
 >> SOURCE : 
 import jav.pack.*
 >> OUTPUT : 
@@ -228,7 +228,7 @@
 function
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
+>> TIME to parse 0
 >> SOURCE : 
 function process( int x, org.String zz ) { ... ... }
 >> OUTPUT : 
@@ -274,23 +274,20 @@
 >>>> RESULT :  SUCCESS 
 >> TIME to parse 1
 >> SOURCE : 
-declare Student
+declare Student extends Person
  @role(entity) 
  @namespace(myNS="http:\\www.stix.com\domain\subd#") 
- @subclass(Person)
  age  : int 
  name : String 
  end 
 
 >> OUTPUT : 
 
-	(declare Student 
+	(VT_TYPE_DECLARE Student extends Person 
 		(VT_ATTRIBUTES 
 			(role entity
 			) 
 			(namespace myNS "http:\\www.stix.com\domain\subd#"
-			) 
-			(subclass Person
 			)
 		) 
 		(VT_FIELD age 
@@ -308,10 +305,9 @@
 >>>> RESULT :  SUCCESS 
 >> TIME to parse 1
 >> SOURCE : 
-declare HasFriend 
+declare HasFriend extends Knows
 @role(property) 
 @namespace(myNS="http:\\www.somens.com\arg\test#") 
- at subproperty(Knows) 
 @disjoint(HasEnemy) 
 @symmetric 
 subject	: Person 
@@ -320,14 +316,12 @@
 
 >> OUTPUT : 
 
-	(declare HasFriend 
+	(VT_TYPE_DECLARE HasFriend extends Knows 
 		(VT_ATTRIBUTES 
 			(role property
 			) 
 			(namespace myNS "http:\\www.somens.com\arg\test#"
 			) 
-			(subproperty Knows
-			) 
 			(disjoint HasEnemy
 			) symmetric
 		) 
@@ -344,7 +338,7 @@
 type_declaration
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 2
+>> TIME to parse 1
 >> SOURCE : 
 declare HasSpouse 
 @role(property) 
@@ -358,7 +352,7 @@
 
 >> OUTPUT : 
 
-	(declare HasSpouse 
+	(VT_TYPE_DECLARE HasSpouse 
 		(VT_ATTRIBUTES 
 			(role property
 			) 
@@ -443,30 +437,8 @@
 type_declare_attribute
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
->> SOURCE : 
- at subclass(Type)
->> OUTPUT : 
-
-	(subclass Type
-	)
-**************************************
-type_declare_attribute
-**************************************
->>>> RESULT :  SUCCESS 
 >> TIME to parse 0
 >> SOURCE : 
- at subproperty(SomeProperty)
->> OUTPUT : 
-
-	(subproperty SomeProperty
-	)
-**************************************
-type_declare_attribute
-**************************************
->>>> RESULT :  SUCCESS 
->> TIME to parse 0
->> SOURCE : 
 @disjoint(AnotherType)
 >> OUTPUT : 
 
@@ -524,7 +496,7 @@
 rule
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 0
+>> TIME to parse 1
 >> SOURCE : 
 rule "ruleName" extends "anotherRule" 
  salience 100 
@@ -684,7 +656,7 @@
 rule_attribute
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 0
+>> TIME to parse 1
 >> SOURCE : 
 dialect "java" 
 >> OUTPUT : 
@@ -717,7 +689,7 @@
 rule_attribute
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 0
+>> TIME to parse 1
 >> SOURCE : 
 deductive
 >> OUTPUT : 
@@ -770,7 +742,7 @@
 operator_attributes
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 3
+>> TIME to parse 1
 >> SOURCE : 
 @[
 kind="lukasiewicz", 
@@ -803,7 +775,7 @@
 rule
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 3
+>> TIME to parse 1
 >> SOURCE : 
 rule test when Bus() Car() Taxi()then end
 >> OUTPUT : 
@@ -900,7 +872,7 @@
 rule
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
+>> TIME to parse 0
 >> SOURCE : 
 rule test when $p : Person() xor Dog()then end
 >> OUTPUT : 
@@ -927,7 +899,7 @@
 rule
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 0
+>> TIME to parse 1
 >> SOURCE : 
 rule test when (Person() xor Dog()) equiv Cat()then end
 >> OUTPUT : 
@@ -1073,7 +1045,7 @@
 rule
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
+>> TIME to parse 0
 >> SOURCE : 
 rule "r" when $lab : Person()then end
 >> OUTPUT : 
@@ -1121,7 +1093,7 @@
 rule
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
+>> TIME to parse 0
 >> SOURCE : 
 rule "r" when exists @[crisp] ( $p : Person() and $d : Dog() ) then end
 >> OUTPUT : 
@@ -1156,7 +1128,7 @@
 rule
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 0
+>> TIME to parse 1
 >> SOURCE : 
 rule "r" when  $p : exists Person() then end
 >> OUTPUT : 
@@ -1285,7 +1257,7 @@
 rule
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 0
+>> TIME to parse 1
 >> SOURCE : 
 rule "r" when forall  ( $p : Person()                (Person() Dog()) ) then end
 >> OUTPUT : 
@@ -1380,7 +1352,7 @@
 rule
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 0
+>> TIME to parse 1
 >> SOURCE : 
 rule "r" when Person() @[crisp]then end
 >> OUTPUT : 
@@ -1401,7 +1373,7 @@
 rule
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 2
+>> TIME to parse 3
 >> SOURCE : 
 rule "r" when Person( "john" , 18, height > 150) then end
 >> OUTPUT : 
@@ -1473,7 +1445,7 @@
 literal_object
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
+>> TIME to parse 0
 >> SOURCE : 
 new Thing(13, $var, true)
 >> OUTPUT : 
@@ -1488,7 +1460,7 @@
 literal_object
 **************************************
 >>>> RESULT :  SUCCESS 
->> TIME to parse 1
+>> TIME to parse 0
 >> SOURCE : 
 new Obj(12 - 13*($var*2 + sqrt(4)))
 >> OUTPUT : 
@@ -1511,3 +1483,47 @@
 			)
 		)
 	)
+**************************************
+type_declaration
+**************************************
+>>>> RESULT :  SUCCESS 
+>> TIME to parse 1
+>> SOURCE : 
+declare Student 
+ defined Male() and Human() and (Slave() or worksAt some (School() or Prison()))
+ age  : int 
+ name : String 
+ end 
+
+>> OUTPUT : 
+
+	(VT_TYPE_DECLARE Student 
+		(VT_DL_DEFINITION 
+			(VT_AND 
+				(VT_DL_TYPE Male
+				) 
+				(VT_DL_TYPE Human
+				) 
+				(VT_OR 
+					(VT_DL_TYPE Slave
+					) 
+					(some worksAt 
+						(VT_OR 
+							(VT_DL_TYPE School
+							) 
+							(VT_DL_TYPE Prison
+							)
+						)
+					)
+				)
+			)
+		) 
+		(VT_FIELD age 
+			(VT_DATA_TYPE 0 int
+			)
+		) 
+		(VT_FIELD name 
+			(VT_DATA_TYPE 0 String
+			)
+		)
+	)

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DLDescrFactory.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DLDescrFactory.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DLDescrFactory.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,115 @@
+package org.drools.lang.dl.descr;
+
+import java.util.List;
+
+public class DLDescrFactory {
+
+	private static int N = 0;
+	
+	public static DL_BaseDescr createImplies(List<DL_BaseDescr> children) {
+		DL_CompositeDescr impl = new DL_ImpliesDescr();
+			impl.addChildren(children);
+		impl.setId(nextId());
+		return impl;
+	}
+	
+	public static DL_BaseDescr createAnd(List<DL_BaseDescr> children) {
+		DL_CompositeDescr et = new DL_AndDescr();
+			et.addChildren(children);
+		et.setId(nextId());
+		return et;
+	}
+	
+	public static DL_BaseDescr createOr(List<DL_BaseDescr> children) {
+		DL_CompositeDescr vel = new DL_OrDescr();
+			vel.addChildren(children);	
+		vel.setId(nextId());
+		return vel;
+	}
+	
+	public static DL_BaseDescr createNeg(DL_BaseDescr child) {
+//		DL_CompositeDescr neg = new DL_NegDescr();
+//		if (child instanceof DL_NegDescr) {
+//			return ((DL_NegDescr) child).getChildren().get(0); 
+//		} else if (child instanceof DL_ExistsDescr) {
+//			DL_ExistsDescr ext = (DL_ExistsDescr) child;
+//			ext.setNegated(! ext.isNegated());
+//			return ext;
+//		} else if (child instanceof DL_ForallDescr) {
+//			DL_ForallDescr fal = (DL_ForallDescr) child;
+//			fal.setNegated(! fal.isNegated());
+//			return fal;
+//		} else {
+//			neg.addChild(child);
+//			neg.setId(nextId());
+//			return neg;
+//		}	
+		
+		if (child instanceof DL_NegDescr) {
+			return ((DL_NegDescr) child).getChildren().get(0); 
+		} else {
+			child.setNegated(! child.isNegated());
+			return child;
+		}
+	}
+	
+	
+	public static DL_BaseDescr createType(String klass) {
+		DL_TypeDescr type = new DL_TypeDescr();
+			type.setType(klass);
+		type.setId(nextId());
+		return type;
+	}
+	
+	
+	public static DL_BaseDescr createProperty(String klass) {
+		DL_PropertyDescr prop = new DL_PropertyDescr();
+			prop.setType(klass);
+		prop.setId(nextId());
+		return prop;
+	}
+	
+	
+	public static DL_BaseDescr createExists(DL_BaseDescr prop, DL_BaseDescr klass) {
+		DL_CompositeDescr exist = new DL_ExistsDescr();
+			exist.addChild(prop);
+			exist.addChild(klass);
+		exist.setId(nextId());
+		return exist;
+	}
+	
+	
+	public static DL_BaseDescr createForall(DL_BaseDescr prop, DL_BaseDescr klass) {
+		DL_CompositeDescr foral = new DL_ForallDescr();
+			foral.addChild(prop);
+			foral.addChild(klass);
+		foral.setId(nextId());
+		return foral;
+	}
+	
+	
+	public static DL_BaseDescr buildRootType(String klass, DL_BaseDescr def) {
+		DL_RootNode root = new DL_RootNode();
+			root.setType(klass);
+			root.addChild(def);
+		root.setId(nextId());
+		return root;
+	}
+	
+	
+	public static DL_TypeDescr buildRandomTypeDescr() {
+		int id = nextId();
+		String type = "klass_"+id;
+		DL_TypeDescr td = new DL_TypeDescr();
+			td.setType(type);
+		td.setId(id);	
+		return td;
+	}
+	
+	public static int nextId() {
+		return N++;
+	}
+	
+	
+	
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_AndDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_AndDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_AndDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,13 @@
+package org.drools.lang.dl.descr;
+
+
+public class DL_AndDescr extends DL_CompositeDescr {
+
+	@Override	
+	public String getType() {
+		return (isNegated() ? "not" : "") +  "DL_AND";
+	}
+	
+	
+	
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_BaseDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_BaseDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_BaseDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,112 @@
+package org.drools.lang.dl.descr;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+public abstract class DL_BaseDescr  {
+
+    private static final long serialVersionUID = 400L;       
+    private int id;
+    private DL_CompositeDescr father;
+    private boolean negated = false;
+//    private int level = 0;
+    
+        
+    
+    
+    
+    public String toUpwardString() {
+    	StringBuilder sb = new StringBuilder();
+    		sb.append(this.toString());
+    		sb.append(" | son-of " + 
+    						((father == null) ? "null" : father.toUpwardString()) 
+    						);    		
+    	return sb.toString();
+    }
+    
+    public String toDownwardString() {
+    	return toString();
+    }
+    
+    public String toFullDownwardString(int n) {
+    	return toString();
+    }
+
+    public String toString() {
+    	//return "DL["+id+"]: " + this.getClass().getSimpleName() +"\n";
+    	return "DL["+id+"]: " + this.getType() +"\n";
+    }
+    
+    
+    
+	public void setFather(DL_CompositeDescr father) {
+		this.father = father;
+	}
+
+	public DL_CompositeDescr getFather() {
+		return father;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + id;
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		DL_BaseDescr other = (DL_BaseDescr) obj;
+		if (id != other.id)
+			return false;
+		return true;
+	}
+	
+	public abstract String getType();
+
+//	public void setLevel(int level) {
+//		this.level = level;
+//	}
+
+	public int getLevel() {
+		return (father == null) ? 0 : (1+father.getLevel());
+	}
+
+	public void setNegated(boolean negated) {
+		this.negated = negated;
+	}
+
+	public boolean isNegated() {
+		return negated;
+	}
+    
+}
\ No newline at end of file

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_CompositeDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_CompositeDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_CompositeDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,76 @@
+package org.drools.lang.dl.descr;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+public abstract class DL_CompositeDescr extends DL_BaseDescr {
+	
+	private List<DL_BaseDescr> children = new LinkedList<DL_BaseDescr>();
+	
+	   
+	public void addChild(DL_BaseDescr child) {
+		children.add(child);
+		child.setFather(this);
+		//child.setLevel(getLevel()+1);
+		//this.setLevel(child.getLevel()+1);
+	}
+	
+	public void addChildren(Collection<DL_BaseDescr> childs) {
+		for (DL_BaseDescr child : childs)
+			this.addChild(child);
+	}
+
+	public List<String> getChildTypes() {
+		List<String> ans = new LinkedList<String>();
+		for (DL_BaseDescr child : children) {
+			ans.add(child.getType());
+		}
+		return ans;
+	}
+	
+	public List<DL_BaseDescr> getChildren() {
+		return children;
+	}
+	
+	public List<DL_BaseDescr> getChildrenReversed() {
+		List<DL_BaseDescr> rev = new LinkedList<DL_BaseDescr>();
+		for (int j = children.size()-1; j >= 0; j--) {
+			rev.add(children.get(j));				
+		}
+		return rev;
+	}
+	
+	public void removeChild(DL_BaseDescr child) {
+		children.remove(child);
+	}
+	
+	public void replaceChild(DL_BaseDescr oldChild, DL_BaseDescr newChild) {
+		int idx = children.indexOf(oldChild);
+		children.set(idx, newChild);
+		newChild.setFather(this);
+		oldChild.setFather(null);
+	}
+	
+	
+	
+	public String toDownwardString() {
+		StringBuilder sb = new StringBuilder();
+			sb.append(super.toString());
+			for (DL_BaseDescr child : children)
+    			sb.append("\t"+child.toString());
+		return sb.toString();
+	}
+	
+	public String toFullDownwardString(int n) {
+		StringBuilder sb = new StringBuilder();
+		sb.append(this.toString());
+			for (DL_BaseDescr child : children) {
+				for (int j = 0; j < n; j++)
+					sb.append("\t");
+				sb.append(child.toFullDownwardString(n+1));
+			}
+			return sb.toString();
+    }
+
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ExistsDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ExistsDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ExistsDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,16 @@
+package org.drools.lang.dl.descr;
+
+
+
+public class DL_ExistsDescr extends DL_CompositeDescr {
+	
+	
+	
+	@Override
+	public String getType() {
+		return (isNegated() ? "not" : "") +  "DL_EXISTS";
+	}
+
+	
+	
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ForallDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ForallDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ForallDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,18 @@
+package org.drools.lang.dl.descr;
+
+
+
+public class DL_ForallDescr extends DL_CompositeDescr {
+	
+	private boolean negated = false;
+
+	
+	@Override
+	public String getType() {
+		return (isNegated() ? "not" : "") +  "DL_FORALL";
+	}
+
+
+	
+	
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ImpliesDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ImpliesDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_ImpliesDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,24 @@
+package org.drools.lang.dl.descr;
+
+import java.util.Collection;
+
+
+
+public class DL_ImpliesDescr extends DL_CompositeDescr {
+	
+	public void addChild(DL_BaseDescr child) {
+		if (getChildren().size() < 2)
+			super.addChild(child);
+	}
+	
+	public void addChildren(Collection<DL_BaseDescr> childs) {
+		if (getChildren().size()+childs.size() <= 2)
+			super.addChildren(childs);
+	}
+	
+	@Override
+	public String getType() {
+		return (isNegated() ? "not" : "") + "DL_IMPLIES";
+	}
+	
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_LeafDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_LeafDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_LeafDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,5 @@
+package org.drools.lang.dl.descr;
+
+public abstract class DL_LeafDescr extends DL_BaseDescr {
+				
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_NegDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_NegDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_NegDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,23 @@
+package org.drools.lang.dl.descr;
+
+import java.util.Collection;
+
+
+public class DL_NegDescr extends DL_CompositeDescr {
+	
+	public void addChild(DL_BaseDescr child) {
+		if (getChildren().size() == 0)
+			super.addChild(child);
+	}
+	
+	public void addChildren(Collection<DL_BaseDescr> childs) {
+		if (getChildren().size() == 0 && childs.size() == 1)
+			super.addChildren(childs);
+	}
+	
+	@Override
+	public String getType() {
+		return "DL_NOT";
+	}
+	
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_OrDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_OrDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_OrDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,12 @@
+package org.drools.lang.dl.descr;
+
+
+
+public class DL_OrDescr extends DL_CompositeDescr {
+	
+	
+	@Override
+	public String getType() {
+		return (isNegated() ? "not" : "") +  "DL_OR";
+	}
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_PropertyDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_PropertyDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_PropertyDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,23 @@
+package org.drools.lang.dl.descr;
+
+
+
+public class DL_PropertyDescr extends DL_LeafDescr {
+	
+	private String type;
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getType() {
+		return type;
+	}
+	
+	public String toString() {
+		return "Property >>> " + (isNegated() ? "not" : "") +  type;
+	}
+	
+	
+	
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_RootNode.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_RootNode.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_RootNode.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,36 @@
+package org.drools.lang.dl.descr;
+
+import java.util.Collection;
+
+public class DL_RootNode extends DL_CompositeDescr {
+
+	private String type;
+	
+	public void addChild(DL_BaseDescr child) {
+		if (getChildren().size() == 0)
+			super.addChild(child);
+	}
+	
+	public void addChildren(Collection<DL_BaseDescr> childs) {
+		if (getChildren().size() == 0 && childs.size() == 1)
+			super.addChildren(childs);
+	}
+		
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getType() {
+		return type;
+	}
+	
+	
+	 public String toString() {
+	    	StringBuilder sb = new StringBuilder();
+	    		sb.append(super.toString());
+	    		sb.append("    >>>   ("+type+")\n");
+	    	return sb.toString();
+	    }
+	
+	
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_TypeDescr.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_TypeDescr.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/lang/dl/descr/DL_TypeDescr.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,25 @@
+package org.drools.lang.dl.descr;
+
+
+
+public class DL_TypeDescr extends DL_LeafDescr {
+	
+	private String type;
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getType() {
+		return  type;
+	}
+	
+	
+	public String toString() {
+    	StringBuilder sb = new StringBuilder();
+    		sb.append("DL["+getId()+"]: Type >> " + (isNegated() ? "not " : "") + getType() +"\n");    	
+    	return sb.toString();
+    }
+	
+		
+}

Added: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/util/DRLTreeFormatter.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/util/DRLTreeFormatter.java	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/util/DRLTreeFormatter.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,37 @@
+package org.drools.util;
+
+import org.antlr.runtime.tree.CommonTree;
+
+public class DRLTreeFormatter {
+
+	public static String toIndentedStringTree(CommonTree tree) {
+		String ts = new String(tree.toStringTree());		
+		
+		//ts = ts.substring(0, ts.indexOf("then"));
+		StringBuilder sb = new StringBuilder();
+		int dep = 0;
+		for (int j = 0; j < ts.length(); j++) {			
+			if (ts.charAt(j) == '(') {
+				dep++;
+				
+				sb.append("\n");
+				for (int k = 0; k < dep; k++)
+					sb.append("\t");
+				sb.append(ts.charAt(j));
+				
+			} else
+			if (ts.charAt(j) == ')') {				
+				sb.append("\n");
+				for (int k = 0; k < dep; k++)
+					sb.append("\t");
+				sb.append(ts.charAt(j));
+				dep--;				
+			} else {
+				sb.append(ts.charAt(j));
+			}
+		}
+	
+		return sb.toString();
+	}
+	
+}

Modified: labs/jbossrules/branches/DRLv6/src/main/java/org/drools/util/ReflectiveVisitor.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/java/org/drools/util/ReflectiveVisitor.java	2010-06-16 15:45:15 UTC (rev 33524)
+++ labs/jbossrules/branches/DRLv6/src/main/java/org/drools/util/ReflectiveVisitor.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -1,5 +1,5 @@
 package org.drools.util;
-
+ 
 /*
  * Copyright 2005 JBoss Inc
  *

Added: labs/jbossrules/branches/DRLv6/src/main/resources/DLTreeBuilder.g
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/resources/DLTreeBuilder.g	                        (rev 0)
+++ labs/jbossrules/branches/DRLv6/src/main/resources/DLTreeBuilder.g	2010-06-16 16:02:54 UTC (rev 33525)
@@ -0,0 +1,82 @@
+tree grammar DLTreeBuilder;
+
+options {
+  language = Java;
+  tokenVocab = DRLv6Parser;
+  ASTLabelType = CommonTree;
+}
+
+
+ at header {
+
+    package org.drools.lang.dl;
+    
+    import org.drools.lang.dl.descr.DLDescrFactory;
+    import org.drools.lang.dl.descr.DL_BaseDescr;
+    import java.util.List;
+    import java.util.LinkedList;
+       
+}
+
+
+ at members {
+  DLDescrFactory factory = new DLDescrFactory();  
+}
+
+
+drl_source returns [List<DL_BaseDescr> types]
+ at init{
+  List<DL_BaseDescr> typeList = new LinkedList<DL_BaseDescr>();
+}  
+  : ^(VT_COMPILATION_UNIT package_header?
+          ( klass=declaration { typeList.add($klass.typeDescr); } )*  
+    )
+    {types = typeList;}
+  ;
+
+package_header
+  : ^(VT_PACKAGE ^(VT_PACKAGE_ID ID+) )
+  ;
+
+declaration returns [DL_BaseDescr typeDescr]
+   : ^(VT_TYPE_DECLARE klass=VT_TYPE_DECLARE_ID type=dl_root) 
+     { typeDescr=factory.buildRootType($klass.getText(),$type.dlDescr); }
+   ;
+  
+
+
+dl_root returns [DL_BaseDescr dlDescr]
+  :   ^(VT_DL_DEFINITION ans=dl_tree)
+      { $dlDescr = $ans.dlDescr; }      
+  ;
+  
+dl_tree returns [DL_BaseDescr dlDescr]
+ at init{ 
+  List<DL_BaseDescr> descrList = new LinkedList<DL_BaseDescr>();
+}
+  :   ^(VT_IMPLIES left=dl_tree right=dl_tree)
+      { descrList.add($left.dlDescr);
+        descrList.add($right.dlDescr);
+        $dlDescr = factory.createImplies(descrList);  
+      }
+  |   ^(VT_OR 
+          (child=dl_tree { descrList.add($child.dlDescr); })+
+       )
+      { $dlDescr = factory.createOr(descrList); }
+  |   ^(VT_AND  
+          (child=dl_tree { descrList.add($child.dlDescr); })+
+       )
+      { $dlDescr = factory.createAnd(descrList); }  
+  |   ^(VT_NEG child=dl_tree)
+      { $dlDescr = factory.createNeg($child.dlDescr); }
+  |   ^(VT_DL_TYPE klass=ID)  
+      { $dlDescr = factory.createType($klass.getText()); } 
+  |   ^(SOME rel=ID tgt=dl_tree)
+      { $dlDescr = factory.createExists(
+                        factory.createProperty($rel.getText()), 
+                        $tgt.dlDescr); }
+  |   ^(ALL rel=ID tgt=dl_tree)
+      { $dlDescr = factory.createForall(
+                        factory.createProperty($rel.getText()), 
+                        $tgt.dlDescr); }              
+  ;  

Modified: labs/jbossrules/branches/DRLv6/src/main/resources/DRLv6Lexer.g
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/resources/DRLv6Lexer.g	2010-06-16 15:45:15 UTC (rev 33524)
+++ labs/jbossrules/branches/DRLv6/src/main/resources/DRLv6Lexer.g	2010-06-16 16:02:54 UTC (rev 33525)
@@ -211,6 +211,10 @@
   : 'and'
   ;
 
+AS
+  : 'as'
+  ;
+
 ATTRIBUTES
   : 'attributes'
   ;
@@ -239,6 +243,7 @@
   : 'defeats'
   ;
 
+
 DISJOINT
   :  'disjoint'
   ;
@@ -425,14 +430,8 @@
   : 'some'
   ; 
   
-SUBCLASS
-  : 'subclass'
-  ;  
+
   
-SUBPROPERTY
-  : 'subproperty'
-  ;
-  
 SYMMETRIC
   : 'symmetric'
   ;  

Modified: labs/jbossrules/branches/DRLv6/src/main/resources/DRLv6Parser.g
===================================================================
--- labs/jbossrules/branches/DRLv6/src/main/resources/DRLv6Parser.g	2010-06-16 15:45:15 UTC (rev 33524)
+++ labs/jbossrules/branches/DRLv6/src/main/resources/DRLv6Parser.g	2010-06-16 16:02:54 UTC (rev 33525)
@@ -1,5 +1,5 @@
 parser grammar DRLv6Parser;
-
+ 
 options {
   language = Java;
   output = AST;
@@ -11,6 +11,7 @@
 tokens {
   VT_COMPILATION_UNIT;
   VT_PACKAGE_ID;
+  VT_PACKAGE;
   
   VT_GLOBAL_ID;
   VT_DATA_TYPE;
@@ -27,7 +28,10 @@
   VT_SLOT;
   VT_SLOT_ID;
   
+  VT_TYPE_DECLARE;
   VT_TYPE_DECLARE_ID;
+  VT_DL_DEFINITION;
+  VT_DL_TYPE;
   
   VT_RULE_ID; 
   VT_ATTRIBUTES;
@@ -108,7 +112,7 @@
 package_statement
   : PACKAGE
     package_id SEMICOLON?
-    -> ^(PACKAGE package_id)
+    -> ^(VT_PACKAGE package_id)
   ;
   
 package_id
@@ -237,13 +241,14 @@
 
 
 type_declaration
-  : DECLARE  type_declare_id
-    type_declare_attributes?
+  : DECLARE  type_declare_id extend?
+    type_declare_attributes?  
+    dl_class_descr?
     decl_field*
     END SEMICOLON?
-    -> ^(DECLARE type_declare_id type_declare_attributes? decl_field*)
+    -> ^(VT_TYPE_DECLARE type_declare_id extend? type_declare_attributes? dl_class_descr? decl_field*)
   ;
-
+ 
 type_declare_id
   :   id=ID
      -> VT_TYPE_DECLARE_ID[$id]
@@ -263,8 +268,6 @@
   
 type_declare_att_semantic
   :         tda_namespace
-        |   tda_subclass
-        |   tda_subproperty
         |   tda_disjoint
         |   tda_symmetric
         |   tda_transitive
@@ -278,14 +281,6 @@
 tda_namespace
   :     AT! NAMESPACE^ LEFT_PAREN! ID EQUALS! STRING RIGHT_PAREN! 
   ;  
-
-tda_subclass
-  :    AT! SUBCLASS^ LEFT_PAREN! ID RIGHT_PAREN!
-  ;
-
-tda_subproperty
-  :    AT! SUBPROPERTY^ LEFT_PAREN! ID RIGHT_PAREN!
-  ;
   
 tda_disjoint
   :    AT! DISJOINT^ LEFT_PAREN! ID RIGHT_PAREN!
@@ -304,13 +299,9 @@
   ;  
   
   
-  
-
-/*
-decl_metadata
-  :   AT^ ID paren_chunk?
+extend
+  :   EXTEND ID
   ;
-*/
 
 decl_field
   : ID  
@@ -341,6 +332,52 @@
   ;
 
 
+
+dl_class_descr 
+  :   AS dl_implies
+      -> ^(VT_DL_DEFINITION dl_implies) 
+  ;
+  
+dl_implies
+  :   dl_or (impl=IMPLIES dl_or)?
+  -> {impl==null}? dl_or
+  -> ^(VT_IMPLIES dl_or dl_or)
+  ;  
+  
+dl_or
+  :   dl_and (or=OR dl_and)*
+  -> {or==null}? dl_and
+  ->  ^(VT_OR dl_and+)
+  ;  
+ 
+dl_and
+  :   dl_atom (and=AND dl_atom)*
+  -> {and==null}? dl_atom
+  ->  ^(VT_AND dl_atom+)
+  ;  
+
+dl_atom
+  :   NEG dl_atom
+      -> ^(VT_NEG dl_atom)
+  |   dl_type
+  |   dl_prop
+  ;
+  
+  
+dl_type
+  :   LEFT_PAREN! dl_implies RIGHT_PAREN!
+  |   dl_class
+  ;
+    
+dl_class
+  :   ID LEFT_PAREN RIGHT_PAREN 
+      -> ^(VT_DL_TYPE ID)
+  ;  
+  
+dl_prop
+  :   ID (ALL | SOME)^ dl_type      
+  ;  
+
 /**************************** RULES *******************************************/
 
 

Modified: labs/jbossrules/branches/DRLv6/src/test/java/org/drools/lang/Rule_Test.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/test/java/org/drools/lang/Rule_Test.java	2010-06-16 15:45:15 UTC (rev 33524)
+++ labs/jbossrules/branches/DRLv6/src/test/java/org/drools/lang/Rule_Test.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -161,18 +161,16 @@
 	public void test_type_declaration() {
 		String rule = "type_declaration";
 		String[] testDRL = {
-				"declare Student" + "\n" +
+				"declare Student extends Person" + "\n" +
 				" @role(entity) " + "\n" +
-				" @namespace(myNS=\"http:\\\\www.stix.com\\domain\\subd#\") " + "\n" +
-				" @subclass(Person)" + "\n" +
+				" @namespace(myNS=\"http:\\\\www.stix.com\\domain\\subd#\") " + "\n" +				
 				" age  : int " + "\n" +
 				" name : String " + "\n" +
 				" end \n",
 				
-				"declare HasFriend " + "\n" +
+				"declare HasFriend extends Knows" + "\n" +
 				"@role(property) " + "\n" +
-				"@namespace(myNS=\"http:\\\\www.somens.com\\arg\\test#\") " + "\n" +	
-				"@subproperty(Knows) " + "\n" +
+				"@namespace(myNS=\"http:\\\\www.somens.com\\arg\\test#\") " + "\n" +					
 				"@disjoint(HasEnemy) " + "\n" +
 				"@symmetric " + "\n" +
 				"subject	: Person " + "\n" +
@@ -202,9 +200,7 @@
 				"@role(type)",
 				"@role(entity)",
 				"@role(property)",
-				"@namespace( alias = \"http:\\\\www.org.dom\\arg# \")",
-				"@subclass(Type)",
-				"@subproperty(SomeProperty)",
+				"@namespace( alias = \"http:\\\\www.org.dom\\arg# \")",				
 				"@disjoint(AnotherType)",
 				"@symmetric",
 				"@transitive",
@@ -546,6 +542,26 @@
 		check(rule,testDRL);										
 	}
 	
+	
+	
+	
+	
+	@Test	
+	public void test_decl_dl() {
+		String rule = "type_declaration";
+		String[] testDRL = {
+				"declare Student " + "\n" +
+				" defined Male() and Human() and (Slave() or worksAt some (School() or Prison()))" + "\n" +				
+				" age  : int " + "\n" +
+				" name : String " + "\n" +
+				" end \n"
+		};
+				
+		check(rule,testDRL);										
+	}
+	
+	
+	
 	//TODO : test filter & tree struct
 	
 	/*

Modified: labs/jbossrules/branches/DRLv6/src/test/java/org/drools/util/ParsingResult.java
===================================================================
--- labs/jbossrules/branches/DRLv6/src/test/java/org/drools/util/ParsingResult.java	2010-06-16 15:45:15 UTC (rev 33524)
+++ labs/jbossrules/branches/DRLv6/src/test/java/org/drools/util/ParsingResult.java	2010-06-16 16:02:54 UTC (rev 33525)
@@ -33,7 +33,7 @@
 			if (source != null)
 			buf.append(">> SOURCE : \n").append(source).append("\n");
 			if (tree != null)
-			buf.append(">> OUTPUT : \n").append(toIndentedStringTree());
+			buf.append(">> OUTPUT : \n").append(DRLTreeFormatter.toIndentedStringTree(tree));
 		}
 		
 		return buf.toString();
@@ -47,35 +47,7 @@
 	
 	
 	
-	public String toIndentedStringTree() {
-		String ts = new String(tree.toStringTree());		
-		
-		//ts = ts.substring(0, ts.indexOf("then"));
-		StringBuilder sb = new StringBuilder();
-		int dep = 0;
-		for (int j = 0; j < ts.length(); j++) {			
-			if (ts.charAt(j) == '(') {
-				dep++;
-				
-				sb.append("\n");
-				for (int k = 0; k < dep; k++)
-					sb.append("\t");
-				sb.append(ts.charAt(j));
-				
-			} else
-			if (ts.charAt(j) == ')') {				
-				sb.append("\n");
-				for (int k = 0; k < dep; k++)
-					sb.append("\t");
-				sb.append(ts.charAt(j));
-				dep--;				
-			} else {
-				sb.append(ts.charAt(j));
-			}
-		}
 	
-		return sb.toString();
-	}
 
 
 



More information about the jboss-svn-commits mailing list