[jboss-svn-commits] JBL Code SVN: r5862 - in labs/jbossrules/trunk/drools-compiler/src: main/resources/org/drools/lang test/java/org/drools/lang

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 14 07:49:42 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-08-14 07:49:38 -0400 (Mon, 14 Aug 2006)
New Revision: 5862

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
Log:
JBRULES-341 - from language support - now sets types of arguments

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g	2006-08-14 11:48:22 UTC (rev 5861)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/drl.g	2006-08-14 11:49:38 UTC (rev 5862)
@@ -17,7 +17,9 @@
 	private List errors = new ArrayList();
 	private String source = "unknown";
 	private int lineOffset = 0;
+	private DescrFactory factory = new DescrFactory();
 	
+	
 	private boolean parserDebug = false;
 	
 	public void setParserDebug(boolean parserDebug) {
@@ -32,6 +34,10 @@
 	public void setSource(String source) {
 		this.source = source;
 	}
+	
+	public DescrFactory getFactory() {
+		return factory;
+	}	
 
 	/**
 	 * This may be set to enable debuggin of DSLs/expanders.
@@ -698,7 +704,7 @@
 	
 from_statement returns [FromDescr d]
 	@init {
-		d=new FromDescr();
+		d=factory.createFrom();
 	}
  	:
  		'from' opt_eol ds=from_source
@@ -726,7 +732,7 @@
 	
 		) 
 		|
-		(var=ID '.' method=ID opt_eol  '(' opt_eol args=parameter_list opt_eol ')' 
+		(var=ID '.' method=ID opt_eol  '(' opt_eol args=argument_list opt_eol ')' 
 			{
 			MethodAccessDescr mc = new MethodAccessDescr(var.getText(), method.getText());
 			mc.setArguments(args);
@@ -735,7 +741,7 @@
 			}	
 		)
 		|
-		(functionName=ID opt_eol '(' opt_eol args=parameter_list opt_eol ')'
+		(functionName=ID opt_eol '(' opt_eol args=argument_list opt_eol ')'
 			{
 			FunctionCallDescr fc = new FunctionCallDescr(functionName.getText());
 			fc.setLine(functionName.getLine());
@@ -748,19 +754,19 @@
 	
 	;	
 	
-parameter_list returns [ArrayList args]
+argument_list returns [ArrayList args]
 	@init {
 		args = new ArrayList();
 	}
 	:
-		(param=parameter_value  {
+		(param=argument_value  {
 			if (param != null) {
 				args.add(param);
 			}
 		}
 		 
 		(
-			opt_eol ',' opt_eol param=parameter_value {
+			opt_eol ',' opt_eol param=argument_value {
 				if (param != null) {
 					args.add(param);
 				}
@@ -769,16 +775,17 @@
 		)?
 	;
 	
-parameter_value returns [String text]
+argument_value returns [ArgumentValueDescr value]
 	@init {
-		text = null;
+		value = null;
+		String text = null;
 	}
-	:	(	t=STRING { text = getString( t ); } //t.getText(); text=text.substring( 1, text.length() - 1 ); }
-		|	t=INT    { text = t.getText(); }
-		|	t=FLOAT	 { text = t.getText(); }
-		|	t=BOOL 	 { text = t.getText(); }
-		|	t=ID { text = t.getText(); }	
-		|	t='null' { text = "null"; }	
+	:	(	t=STRING { text = getString( t );  value=new ArgumentValueDescr(ArgumentValueDescr.STRING, text);} 
+		|	t=INT    { text = t.getText();  value=new ArgumentValueDescr(ArgumentValueDescr.INTEGRAL, text);}
+		|	t=FLOAT	 { text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.DECIMAL, text); }
+		|	t=BOOL 	 { text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.BOOLEAN, text); }
+		|	t=ID { text = t.getText(); value=new ArgumentValueDescr(ArgumentValueDescr.VARIABLE, text);}	
+		|	t='null' { text = "null"; value=new ArgumentValueDescr(ArgumentValueDescr.NULL, text);}	
 		)
 	;			
  	

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2006-08-14 11:48:22 UTC (rev 5861)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2006-08-14 11:49:38 UTC (rev 5862)
@@ -32,6 +32,7 @@
 import org.antlr.runtime.TokenStream;
 import org.drools.compiler.DrlParser;
 import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.ArgumentValueDescr;
 import org.drools.lang.descr.AttributeDescr;
 import org.drools.lang.descr.ColumnDescr;
 import org.drools.lang.descr.EvalDescr;
@@ -49,7 +50,6 @@
 import org.drools.lang.descr.NotDescr;
 import org.drools.lang.descr.OrDescr;
 import org.drools.lang.descr.PackageDescr;
-import org.drools.lang.descr.PatternDescr;
 import org.drools.lang.descr.PredicateDescr;
 import org.drools.lang.descr.QueryDescr;
 import org.drools.lang.descr.RestrictionConnectiveDescr;
@@ -481,13 +481,17 @@
         assertEquals("bar", ((FieldAccessDescr) from.getDataSource()).getVariableName());
         
         
+        ArgumentValueDescr arg = null;
+        
         from = (FromDescr) rule.getLhs().getDescrs().get(1);
         assertEquals("Whee", from.getReturnedColumn().getObjectType());
         assertEquals(1, from.getReturnedColumn().getDescrs().size());
         assertTrue(from.getDataSource() instanceof FunctionCallDescr);
         assertEquals("whee", ((FunctionCallDescr) from.getDataSource()).getName());        
         assertEquals(1, ((FunctionCallDescr) from.getDataSource()).getArguments().size());
-        assertEquals("y", ((FunctionCallDescr) from.getDataSource()).getArguments().get(0));
+        arg = ( (ArgumentValueDescr )((FunctionCallDescr) from.getDataSource()).getArguments().get(0));
+        assertEquals("y", arg.getValue());
+        assertEquals(ArgumentValueDescr.STRING, arg.getType());
 
         assertEquals(4, from.getLine());
         assertEquals(4, from.getReturnedColumn().getLine());
@@ -500,7 +504,11 @@
         assertEquals("bar", ((MethodAccessDescr) from.getDataSource()).getVariableName());        
         assertEquals("la", ((MethodAccessDescr) from.getDataSource()).getMethodName());
         assertEquals(1, ((MethodAccessDescr) from.getDataSource()).getArguments().size());
-        assertEquals("x", ((MethodAccessDescr) from.getDataSource()).getArguments().get(0));        
+        arg = (ArgumentValueDescr) ((MethodAccessDescr) from.getDataSource()).getArguments().get(0);
+        
+        
+        assertEquals("x", arg.getValue());
+        assertEquals(ArgumentValueDescr.VARIABLE, arg.getType());
 
         assertEqualsIgnoreWhitespace("whee();", rule.getConsequence());
         
@@ -508,10 +516,28 @@
         assertEquals("wa", ((FunctionCallDescr)from.getDataSource()).getName());
 
         from = (FromDescr) rule.getLhs().getDescrs().get(4);
-        assertEquals("wa", ((MethodAccessDescr)from.getDataSource()).getMethodName());
-        assertEquals("la", ((MethodAccessDescr)from.getDataSource()).getVariableName());
+        MethodAccessDescr meth = (MethodAccessDescr)from.getDataSource();
+        assertEquals("wa", meth.getMethodName());
+        assertEquals("la", meth.getVariableName());
         
+        arg = (ArgumentValueDescr) meth.getArguments().get(0);
+        assertEquals("42", arg.getValue());
+        assertEquals(ArgumentValueDescr.INTEGRAL, arg.getType());
         
+        arg = (ArgumentValueDescr) meth.getArguments().get(1);
+        assertEquals("42.42", arg.getValue());
+        assertEquals(ArgumentValueDescr.DECIMAL, arg.getType());
+
+        arg = (ArgumentValueDescr) meth.getArguments().get(2);
+        assertEquals("false", arg.getValue());
+        assertEquals(ArgumentValueDescr.BOOLEAN, arg.getType());
+        
+        arg = (ArgumentValueDescr) meth.getArguments().get(3);
+        assertEquals("null", arg.getValue());
+        assertEquals(ArgumentValueDescr.NULL, arg.getType());
+        
+                
+        
         assertEquals("Bam", ((ColumnDescr)rule.getLhs().getDescrs().get(5)).getObjectType());
     }
     




More information about the jboss-svn-commits mailing list