[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