[jboss-svn-commits] JBL Code SVN: r18429 - in labs/jbossrules/trunk/drools-clips/src: main/java/org/drools/rule/builder/dialect/clips and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 8 17:16:51 EST 2008
Author: mark.proctor at jboss.com
Date: 2008-02-08 17:16:51 -0500 (Fri, 08 Feb 2008)
New Revision: 18429
Added:
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsEvalBuilder.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsPredicateBuilder.java
Modified:
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ClipsLexer.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ClipsParser.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Shell.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsConsequenceBuilder.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsReturnValueBuilder.java
labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/Clips.g
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java
Log:
JBRULES-720 Clips Parser
-eval, predicate and return value support
-deftemplates can now call deffunctions
Modified: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ClipsLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ClipsLexer.java 2008-02-08 20:21:54 UTC (rev 18428)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ClipsLexer.java 2008-02-08 22:16:51 UTC (rev 18429)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g 2008-02-05 16:37:47
+// $ANTLR 3.0.1 C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g 2008-02-07 02:53:25
package org.drools.clips;
Modified: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ClipsParser.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ClipsParser.java 2008-02-08 20:21:54 UTC (rev 18428)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ClipsParser.java 2008-02-08 22:16:51 UTC (rev 18429)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g 2008-02-05 16:37:47
+// $ANTLR 3.0.1 C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g 2008-02-07 02:53:24
package org.drools.clips;
@@ -1340,7 +1340,6 @@
fc = new FieldConstraintDescr(f.getText());
fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
fc.setStartCharacter( ((CommonToken)f).getStartIndex() );
- base.addDescr( fc );
top = fc.getRestriction();
}
@@ -1348,7 +1347,10 @@
or_restr_connective(top, base, fc, declarations);
_fsp--;
if (failed) return ;
- match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_field_constriant939); if (failed) return ;
+ if ( backtracking==0 ) {
+ if ( top.getRestrictions().size() != 0 ) base.addDescr( fc );
+ }
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_field_constriant943); if (failed) return ;
}
@@ -1374,7 +1376,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:545:2: ( and_restr_connective[or, ceBase, fcBase, declarations] ( options {backtrack=true; } : PIPE and_restr_connective[or, ceBase, fcBase, declarations] )* )
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:546:3: and_restr_connective[or, ceBase, fcBase, declarations] ( options {backtrack=true; } : PIPE and_restr_connective[or, ceBase, fcBase, declarations] )*
{
- pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective978);
+ pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective982);
and_restr_connective(or, ceBase, fcBase, declarations);
_fsp--;
if (failed) return ;
@@ -1393,13 +1395,13 @@
case 1 :
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:549:6: PIPE and_restr_connective[or, ceBase, fcBase, declarations]
{
- match(input,PIPE,FOLLOW_PIPE_in_or_restr_connective1002); if (failed) return ;
+ match(input,PIPE,FOLLOW_PIPE_in_or_restr_connective1006); if (failed) return ;
if ( backtracking==0 ) {
location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
}
- pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective1012);
+ pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective1016);
and_restr_connective(or, ceBase, fcBase, declarations);
_fsp--;
if (failed) return ;
@@ -1444,7 +1446,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:568:2: ( restriction[and, ceBase, fcBase, declarations] ( AMPERSAND restriction[and, ceBase, fcBase, declarations] )* )
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:569:3: restriction[and, ceBase, fcBase, declarations] ( AMPERSAND restriction[and, ceBase, fcBase, declarations] )*
{
- pushFollow(FOLLOW_restriction_in_and_restr_connective1044);
+ pushFollow(FOLLOW_restriction_in_and_restr_connective1048);
restriction(and, ceBase, fcBase, declarations);
_fsp--;
if (failed) return ;
@@ -1463,8 +1465,8 @@
case 1 :
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:570:5: AMPERSAND restriction[and, ceBase, fcBase, declarations]
{
- match(input,AMPERSAND,FOLLOW_AMPERSAND_in_and_restr_connective1052); if (failed) return ;
- pushFollow(FOLLOW_restriction_in_and_restr_connective1054);
+ match(input,AMPERSAND,FOLLOW_AMPERSAND_in_and_restr_connective1056); if (failed) return ;
+ pushFollow(FOLLOW_restriction_in_and_restr_connective1058);
restriction(and, ceBase, fcBase, declarations);
_fsp--;
if (failed) return ;
@@ -1523,7 +1525,7 @@
case 1 :
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:593:5: TILDE
{
- match(input,TILDE,FOLLOW_TILDE_in_restriction1087); if (failed) return ;
+ match(input,TILDE,FOLLOW_TILDE_in_restriction1091); if (failed) return ;
if ( backtracking==0 ) {
op = "!=";
}
@@ -1573,7 +1575,7 @@
case 1 :
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:594:5: predicate_constraint[rc, op, base]
{
- pushFollow(FOLLOW_predicate_constraint_in_restriction1103);
+ pushFollow(FOLLOW_predicate_constraint_in_restriction1107);
predicate_constraint(rc, op, base);
_fsp--;
if (failed) return ;
@@ -1583,7 +1585,7 @@
case 2 :
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:595:7: return_value_restriction[op, rc]
{
- pushFollow(FOLLOW_return_value_restriction_in_restriction1119);
+ pushFollow(FOLLOW_return_value_restriction_in_restriction1123);
return_value_restriction(op, rc);
_fsp--;
if (failed) return ;
@@ -1593,7 +1595,7 @@
case 3 :
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:596:7: variable_restriction[op, rc, base, fcBase, declarations]
{
- pushFollow(FOLLOW_variable_restriction_in_restriction1128);
+ pushFollow(FOLLOW_variable_restriction_in_restriction1132);
variable_restriction(op, rc, base, fcBase, declarations);
_fsp--;
if (failed) return ;
@@ -1603,7 +1605,7 @@
case 4 :
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:597:8: lc= literal_restriction
{
- pushFollow(FOLLOW_literal_restriction_in_restriction1140);
+ pushFollow(FOLLOW_literal_restriction_in_restriction1144);
lc=literal_restriction();
_fsp--;
if (failed) return ;
@@ -1644,8 +1646,8 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:605:2: ( COLON t= lisp_form )
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:605:4: COLON t= lisp_form
{
- match(input,COLON,FOLLOW_COLON_in_predicate_constraint1173); if (failed) return ;
- pushFollow(FOLLOW_lisp_form_in_predicate_constraint1179);
+ match(input,COLON,FOLLOW_COLON_in_predicate_constraint1177); if (failed) return ;
+ pushFollow(FOLLOW_lisp_form_in_predicate_constraint1183);
t=lisp_form();
_fsp--;
if (failed) return ;
@@ -1677,8 +1679,8 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:612:2: ( EQUALS t= lisp_form )
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:612:4: EQUALS t= lisp_form
{
- match(input,EQUALS,FOLLOW_EQUALS_in_return_value_restriction1198); if (failed) return ;
- pushFollow(FOLLOW_lisp_form_in_return_value_restriction1205);
+ match(input,EQUALS,FOLLOW_EQUALS_in_return_value_restriction1202); if (failed) return ;
+ pushFollow(FOLLOW_lisp_form_in_return_value_restriction1209);
t=lisp_form();
_fsp--;
if (failed) return ;
@@ -1711,7 +1713,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:619:4: VAR
{
VAR1=(Token)input.LT(1);
- match(input,VAR,FOLLOW_VAR_in_variable_restriction1233); if (failed) return ;
+ match(input,VAR,FOLLOW_VAR_in_variable_restriction1237); if (failed) return ;
if ( backtracking==0 ) {
identifier = VAR1.getText().replace( '?', '$');
@@ -1756,7 +1758,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:638:2: (t= literal )
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:639:6: t= literal
{
- pushFollow(FOLLOW_literal_in_literal_restriction1266);
+ pushFollow(FOLLOW_literal_in_literal_restriction1270);
t=literal();
_fsp--;
if (failed) return text;
@@ -1799,7 +1801,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:661:2: ( LEFT_PAREN (t= NAME | t= VAR ) (a= lisp_atom | l= lisp_form )* RIGHT_PAREN )
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:661:4: LEFT_PAREN (t= NAME | t= VAR ) (a= lisp_atom | l= lisp_form )* RIGHT_PAREN
{
- match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lisp_form1294); if (failed) return lispForm;
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lisp_form1298); if (failed) return lispForm;
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:663:3: (t= NAME | t= VAR )
int alt16=2;
int LA16_0 = input.LA(1);
@@ -1822,7 +1824,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:664:7: t= NAME
{
t=(Token)input.LT(1);
- match(input,NAME,FOLLOW_NAME_in_lisp_form1311); if (failed) return lispForm;
+ match(input,NAME,FOLLOW_NAME_in_lisp_form1315); if (failed) return lispForm;
if ( backtracking==0 ) {
list.add( new SymbolLispAtom( t.getText() ) );
}
@@ -1833,7 +1835,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:666:7: t= VAR
{
t=(Token)input.LT(1);
- match(input,VAR,FOLLOW_VAR_in_lisp_form1331); if (failed) return lispForm;
+ match(input,VAR,FOLLOW_VAR_in_lisp_form1335); if (failed) return lispForm;
if ( backtracking==0 ) {
list.add( new VariableLispAtom( t.getText() ) );
}
@@ -1861,7 +1863,7 @@
case 1 :
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:668:6: a= lisp_atom
{
- pushFollow(FOLLOW_lisp_atom_in_lisp_form1354);
+ pushFollow(FOLLOW_lisp_atom_in_lisp_form1358);
a=lisp_atom();
_fsp--;
if (failed) return lispForm;
@@ -1874,7 +1876,7 @@
case 2 :
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:669:6: l= lisp_form
{
- pushFollow(FOLLOW_lisp_form_in_lisp_form1365);
+ pushFollow(FOLLOW_lisp_form_in_lisp_form1369);
l=lisp_form();
_fsp--;
if (failed) return lispForm;
@@ -1890,7 +1892,7 @@
}
} while (true);
- match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lisp_form1392); if (failed) return lispForm;
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lisp_form1396); if (failed) return lispForm;
if ( backtracking==0 ) {
lispForm = new LispForm( ( SExpression[] ) list.toArray( new SExpression[ list.size () ] ) );
}
@@ -1974,7 +1976,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:681:6: t= VAR
{
t=(Token)input.LT(1);
- match(input,VAR,FOLLOW_VAR_in_lisp_atom1436); if (failed) return sExpression;
+ match(input,VAR,FOLLOW_VAR_in_lisp_atom1440); if (failed) return sExpression;
if ( backtracking==0 ) {
sExpression = new VariableLispAtom( t.getText() );
}
@@ -1985,7 +1987,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:682:6: t= STRING
{
t=(Token)input.LT(1);
- match(input,STRING,FOLLOW_STRING_in_lisp_atom1448); if (failed) return sExpression;
+ match(input,STRING,FOLLOW_STRING_in_lisp_atom1452); if (failed) return sExpression;
if ( backtracking==0 ) {
sExpression = new StringLispAtom( getString( t ) );
}
@@ -1996,7 +1998,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:683:6: t= FLOAT
{
t=(Token)input.LT(1);
- match(input,FLOAT,FOLLOW_FLOAT_in_lisp_atom1470); if (failed) return sExpression;
+ match(input,FLOAT,FOLLOW_FLOAT_in_lisp_atom1474); if (failed) return sExpression;
if ( backtracking==0 ) {
sExpression = new FloatLispAtom( t.getText() );
}
@@ -2007,7 +2009,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:684:6: t= INT
{
t=(Token)input.LT(1);
- match(input,INT,FOLLOW_INT_in_lisp_atom1482); if (failed) return sExpression;
+ match(input,INT,FOLLOW_INT_in_lisp_atom1486); if (failed) return sExpression;
if ( backtracking==0 ) {
sExpression = new IntLispAtom( t.getText() );
}
@@ -2018,7 +2020,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:685:7: t= BOOL
{
t=(Token)input.LT(1);
- match(input,BOOL,FOLLOW_BOOL_in_lisp_atom1495); if (failed) return sExpression;
+ match(input,BOOL,FOLLOW_BOOL_in_lisp_atom1499); if (failed) return sExpression;
if ( backtracking==0 ) {
sExpression = new BoolLispAtom( t.getText() );
}
@@ -2029,7 +2031,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:686:7: t= NULL
{
t=(Token)input.LT(1);
- match(input,NULL,FOLLOW_NULL_in_lisp_atom1511); if (failed) return sExpression;
+ match(input,NULL,FOLLOW_NULL_in_lisp_atom1515); if (failed) return sExpression;
if ( backtracking==0 ) {
sExpression = new NullLispAtom( null );
}
@@ -2040,7 +2042,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:687:14: t= NAME
{
t=(Token)input.LT(1);
- match(input,NAME,FOLLOW_NAME_in_lisp_atom1537); if (failed) return sExpression;
+ match(input,NAME,FOLLOW_NAME_in_lisp_atom1541); if (failed) return sExpression;
if ( backtracking==0 ) {
sExpression = new SymbolLispAtom( "\"" +t.getText() + "\"");
}
@@ -2125,7 +2127,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:696:8: t= STRING
{
t=(Token)input.LT(1);
- match(input,STRING,FOLLOW_STRING_in_literal1581); if (failed) return text;
+ match(input,STRING,FOLLOW_STRING_in_literal1585); if (failed) return text;
if ( backtracking==0 ) {
text = getString( t );
}
@@ -2136,7 +2138,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:697:7: t= NAME
{
t=(Token)input.LT(1);
- match(input,NAME,FOLLOW_NAME_in_literal1594); if (failed) return text;
+ match(input,NAME,FOLLOW_NAME_in_literal1598); if (failed) return text;
if ( backtracking==0 ) {
text = t.getText();
}
@@ -2147,7 +2149,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:698:7: t= INT
{
t=(Token)input.LT(1);
- match(input,INT,FOLLOW_INT_in_literal1610); if (failed) return text;
+ match(input,INT,FOLLOW_INT_in_literal1614); if (failed) return text;
if ( backtracking==0 ) {
text = t.getText();
}
@@ -2158,7 +2160,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:699:7: t= FLOAT
{
t=(Token)input.LT(1);
- match(input,FLOAT,FOLLOW_FLOAT_in_literal1625); if (failed) return text;
+ match(input,FLOAT,FOLLOW_FLOAT_in_literal1629); if (failed) return text;
if ( backtracking==0 ) {
text = t.getText();
}
@@ -2169,7 +2171,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:700:7: t= BOOL
{
t=(Token)input.LT(1);
- match(input,BOOL,FOLLOW_BOOL_in_literal1638); if (failed) return text;
+ match(input,BOOL,FOLLOW_BOOL_in_literal1642); if (failed) return text;
if ( backtracking==0 ) {
text = t.getText();
}
@@ -2180,7 +2182,7 @@
// C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\cips\\Clips.g:701:7: t= NULL
{
t=(Token)input.LT(1);
- match(input,NULL,FOLLOW_NULL_in_literal1652); if (failed) return text;
+ match(input,NULL,FOLLOW_NULL_in_literal1656); if (failed) return text;
if ( backtracking==0 ) {
text = null;
}
@@ -2279,42 +2281,42 @@
public static final BitSet FOLLOW_LEFT_PAREN_in_field_constriant914 = new BitSet(new long[]{0x0000000000000020L});
public static final BitSet FOLLOW_NAME_in_field_constriant918 = new BitSet(new long[]{0x0000000007E20A20L});
public static final BitSet FOLLOW_or_restr_connective_in_field_constriant933 = new BitSet(new long[]{0x0000000000000040L});
- public static final BitSet FOLLOW_RIGHT_PAREN_in_field_constriant939 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective978 = new BitSet(new long[]{0x0000000000080002L});
- public static final BitSet FOLLOW_PIPE_in_or_restr_connective1002 = new BitSet(new long[]{0x0000000007E20A20L});
- public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective1012 = new BitSet(new long[]{0x0000000000080002L});
- public static final BitSet FOLLOW_restriction_in_and_restr_connective1044 = new BitSet(new long[]{0x0000000000100002L});
- public static final BitSet FOLLOW_AMPERSAND_in_and_restr_connective1052 = new BitSet(new long[]{0x0000000007E20A20L});
- public static final BitSet FOLLOW_restriction_in_and_restr_connective1054 = new BitSet(new long[]{0x0000000000100002L});
- public static final BitSet FOLLOW_TILDE_in_restriction1087 = new BitSet(new long[]{0x0000000007C20A20L});
- public static final BitSet FOLLOW_predicate_constraint_in_restriction1103 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_return_value_restriction_in_restriction1119 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_variable_restriction_in_restriction1128 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_literal_restriction_in_restriction1140 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_COLON_in_predicate_constraint1173 = new BitSet(new long[]{0x0000000000000010L});
- public static final BitSet FOLLOW_lisp_form_in_predicate_constraint1179 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_EQUALS_in_return_value_restriction1198 = new BitSet(new long[]{0x0000000000000010L});
- public static final BitSet FOLLOW_lisp_form_in_return_value_restriction1205 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_VAR_in_variable_restriction1233 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_literal_in_literal_restriction1266 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_LEFT_PAREN_in_lisp_form1294 = new BitSet(new long[]{0x0000000000020020L});
- public static final BitSet FOLLOW_NAME_in_lisp_form1311 = new BitSet(new long[]{0x0000000007020A70L});
- public static final BitSet FOLLOW_VAR_in_lisp_form1331 = new BitSet(new long[]{0x0000000007020A70L});
- public static final BitSet FOLLOW_lisp_atom_in_lisp_form1354 = new BitSet(new long[]{0x0000000007020A70L});
- public static final BitSet FOLLOW_lisp_form_in_lisp_form1365 = new BitSet(new long[]{0x0000000007020A70L});
- public static final BitSet FOLLOW_RIGHT_PAREN_in_lisp_form1392 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_VAR_in_lisp_atom1436 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_STRING_in_lisp_atom1448 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_FLOAT_in_lisp_atom1470 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_INT_in_lisp_atom1482 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_BOOL_in_lisp_atom1495 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_NULL_in_lisp_atom1511 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_NAME_in_lisp_atom1537 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_STRING_in_literal1581 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_NAME_in_literal1594 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_INT_in_literal1610 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_FLOAT_in_literal1625 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_BOOL_in_literal1638 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_NULL_in_literal1652 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_field_constriant943 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective982 = new BitSet(new long[]{0x0000000000080002L});
+ public static final BitSet FOLLOW_PIPE_in_or_restr_connective1006 = new BitSet(new long[]{0x0000000007E20A20L});
+ public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective1016 = new BitSet(new long[]{0x0000000000080002L});
+ public static final BitSet FOLLOW_restriction_in_and_restr_connective1048 = new BitSet(new long[]{0x0000000000100002L});
+ public static final BitSet FOLLOW_AMPERSAND_in_and_restr_connective1056 = new BitSet(new long[]{0x0000000007E20A20L});
+ public static final BitSet FOLLOW_restriction_in_and_restr_connective1058 = new BitSet(new long[]{0x0000000000100002L});
+ public static final BitSet FOLLOW_TILDE_in_restriction1091 = new BitSet(new long[]{0x0000000007C20A20L});
+ public static final BitSet FOLLOW_predicate_constraint_in_restriction1107 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_return_value_restriction_in_restriction1123 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_variable_restriction_in_restriction1132 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_literal_restriction_in_restriction1144 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_COLON_in_predicate_constraint1177 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_lisp_form_in_predicate_constraint1183 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_EQUALS_in_return_value_restriction1202 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_lisp_form_in_return_value_restriction1209 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_VAR_in_variable_restriction1237 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_literal_in_literal_restriction1270 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_lisp_form1298 = new BitSet(new long[]{0x0000000000020020L});
+ public static final BitSet FOLLOW_NAME_in_lisp_form1315 = new BitSet(new long[]{0x0000000007020A70L});
+ public static final BitSet FOLLOW_VAR_in_lisp_form1335 = new BitSet(new long[]{0x0000000007020A70L});
+ public static final BitSet FOLLOW_lisp_atom_in_lisp_form1358 = new BitSet(new long[]{0x0000000007020A70L});
+ public static final BitSet FOLLOW_lisp_form_in_lisp_form1369 = new BitSet(new long[]{0x0000000007020A70L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_lisp_form1396 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_VAR_in_lisp_atom1440 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_STRING_in_lisp_atom1452 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_FLOAT_in_lisp_atom1474 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_INT_in_lisp_atom1486 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_BOOL_in_lisp_atom1499 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_NULL_in_lisp_atom1515 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_NAME_in_lisp_atom1541 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_STRING_in_literal1585 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_NAME_in_literal1598 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_INT_in_literal1614 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_FLOAT_in_literal1629 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_BOOL_in_literal1642 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_NULL_in_literal1656 = new BitSet(new long[]{0x0000000000000002L});
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Shell.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Shell.java 2008-02-08 20:21:54 UTC (rev 18428)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Shell.java 2008-02-08 22:16:51 UTC (rev 18429)
@@ -25,17 +25,21 @@
import org.drools.base.mvel.DroolsMVELFactory;
import org.drools.common.InternalRuleBase;
import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.lang.descr.AttributeDescr;
import org.drools.lang.descr.FunctionDescr;
import org.drools.lang.descr.ImportDescr;
import org.drools.lang.descr.PackageDescr;
import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.MVELDialectData;
+import org.drools.rule.builder.dialect.mvel.MVELDialectConfiguration;
import org.drools.spi.GlobalResolver;
import org.mvel.MVEL;
import org.mvel.ParserContext;
import org.mvel.ast.Function;
import org.mvel.compiler.CompiledExpression;
import org.mvel.compiler.ExpressionCompiler;
+import org.mvel.debug.DebugTools;
import org.mvel.util.CompilerTools;
public class Shell
@@ -94,7 +98,7 @@
addRouter( "t",
System.out );
}
-
+
public StatefulSession getStatefulSession() {
return this.session;
}
@@ -127,6 +131,25 @@
}
}
+ public void importHandler(ImportDescr descr) {
+ String importText = descr.getTarget().trim();
+
+ this.typeResolver.addImport( descr.getTarget() );
+
+ if ( importText.endsWith( "*" ) ) {
+ this.dynamicImports.add( importText );
+ } else {
+ Class cls;
+ try {
+ cls = this.typeResolver.resolveType( importText );
+ } catch ( ClassNotFoundException e ) {
+ throw new RuntimeException( "Unable to resolve : " + importText );
+ }
+ this.directImports.put( cls.getSimpleName(),
+ cls );
+ }
+ }
+
public void functionHandler(FunctionDescr functionDescr) {
Appendable builder = new StringBuilderAppendable();
@@ -156,35 +179,26 @@
builder );
}
builder.append( "}" );
+
+ functionDescr.setContent( builder.toString() );
+ functionDescr.setDialect( "mvel" );
- ExpressionCompiler compiler = new ExpressionCompiler( builder.toString() );
- Serializable s1 = compiler.compile();
- Map<String, org.mvel.ast.Function> map = CompilerTools.extractAllDeclaredFunctions( (CompiledExpression) s1 );
- for ( org.mvel.ast.Function function : map.values() ) {
- addFunction( function );
- }
+ PackageDescr pkgDescr = createPackageDescr( "MAIN" );
+ pkgDescr.addFunction( functionDescr );
+ PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+ conf.getDialectConfiguration( "mvel" );
+ MVELDialectConfiguration mvelConf = (MVELDialectConfiguration) conf.getDialectConfiguration( "mvel" );
+ mvelConf.setLangLevel( 5 );
+
+ PackageBuilder pkgBuilder = new PackageBuilder( conf );
+ pkgBuilder.addPackage( pkgDescr );
+
+ if ( pkgBuilder.getErrors().isEmpty() ) {
+ this.ruleBase.addPackage( pkgBuilder.getPackage() );
+ }
}
- public void importHandler(ImportDescr descr) {
- String importText = descr.getTarget().trim();
-
- this.typeResolver.addImport( descr.getTarget() );
-
- if ( importText.endsWith( "*" ) ) {
- this.dynamicImports.add( importText );
- } else {
- Class cls;
- try {
- cls = this.typeResolver.resolveType( importText );
- } catch ( ClassNotFoundException e ) {
- throw new RuntimeException( "Unable to resolve : " + importText );
- }
- this.directImports.put( cls.getSimpleName(),
- cls );
- }
- }
-
public void lispFormHandler(LispForm lispForm) {
StringBuilderAppendable appendable = new StringBuilderAppendable();
FunctionHandlers.dump( lispForm,
@@ -207,6 +221,11 @@
ExpressionCompiler expr = new ExpressionCompiler( appendable.toString() );
Serializable executable = expr.compile( context );
+ if ( this.ruleBase.getPackage( "MAIN" ) != null ) {
+ MVELDialectData data = (MVELDialectData) this.ruleBase.getPackage( "MAIN" ).getDialectDatas().getDialectData( "mvel" );
+ factory.setNextFactory( data.getFunctionFactory() );
+ }
+
MVEL.executeExpression( executable,
this,
this.factory );
@@ -342,6 +361,8 @@
private PackageDescr createPackageDescr(String moduleName) {
PackageDescr pkg = new PackageDescr( moduleName );
+ pkg.addAttribute( new AttributeDescr( "dialect",
+ "clips" ) );
for ( Iterator it = this.typeResolver.getImports().iterator(); it.hasNext(); ) {
pkg.addImport( new ImportDescr( (String) it.next() ) );
Modified: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsConsequenceBuilder.java 2008-02-08 20:21:54 UTC (rev 18428)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsConsequenceBuilder.java 2008-02-08 22:16:51 UTC (rev 18429)
@@ -1,17 +1,12 @@
package org.drools.rule.builder.dialect.clips;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import org.drools.clips.Appendable;
import org.drools.clips.FunctionHandlers;
import org.drools.clips.LispForm;
import org.drools.clips.StringBuilderAppendable;
-import org.drools.rule.Declaration;
-import org.drools.rule.Rule;
-import org.drools.rule.builder.ConsequenceBuilder;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.rule.builder.dialect.mvel.MVELConsequenceBuilder;
@@ -27,6 +22,7 @@
}
context.getRuleDescr().setConsequence( builder.toString() );
+ context.getRuleDescr().setDialect( "mvel" );
super.build( context );
Modified: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java 2008-02-08 20:21:54 UTC (rev 18428)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java 2008-02-08 22:16:51 UTC (rev 18429)
@@ -1,15 +1,24 @@
package org.drools.rule.builder.dialect.clips;
+import java.util.ArrayList;
+
+import org.drools.commons.jci.readers.MemoryResourceReader;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.dialect.mvel.MVELConsequenceBuilder;
+import org.drools.rule.builder.ReturnValueBuilder;
+import org.drools.rule.builder.RuleConditionBuilder;
import org.drools.rule.builder.dialect.mvel.MVELDialect;
+import org.drools.rule.builder.dialect.mvel.MVELDialectConfiguration;
public class ClipsDialect extends MVELDialect {
-
- private static final ClipsConsequenceBuilder consequence = new ClipsConsequenceBuilder();
-
- public final static String ID = "clips";
+ private static final ClipsConsequenceBuilder consequence = new ClipsConsequenceBuilder();
+ private static final ClipsEvalBuilder eval = new ClipsEvalBuilder();
+ private static final ClipsReturnValueBuilder returnValue = new ClipsReturnValueBuilder();
+
+ public final static String ID = "clips";
+
public ClipsDialect() {
super();
}
@@ -17,8 +26,23 @@
public String getId() {
return ID;
}
-
+
+ public void init(PackageBuilder builder) {
+ MVELDialectConfiguration conf = (MVELDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "mvel" );
+ conf.setLangLevel( 5 );
+ super.init( builder );
+ }
+
public ConsequenceBuilder getConsequenceBuilder() {
return this.consequence;
- }
+ }
+
+ public RuleConditionBuilder getEvalBuilder() {
+ return this.eval;
+ }
+
+ public ReturnValueBuilder getReturnValueBuilder() {
+ return this.returnValue;
+ }
+
}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsEvalBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsEvalBuilder.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsEvalBuilder.java 2008-02-08 22:16:51 UTC (rev 18429)
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2006 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.
+ */
+
+package org.drools.rule.builder.dialect.clips;
+
+import java.io.Serializable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.base.mvel.DroolsMVELFactory;
+import org.drools.base.mvel.MVELEvalExpression;
+import org.drools.compiler.Dialect;
+import org.drools.compiler.DescrBuildError;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.lang.descr.EvalDescr;
+import org.drools.rule.Declaration;
+import org.drools.rule.EvalCondition;
+import org.drools.rule.MVELDialectData;
+import org.drools.rule.Pattern;
+import org.drools.rule.RuleConditionElement;
+import org.drools.rule.builder.RuleBuildContext;
+import org.drools.rule.builder.RuleConditionBuilder;
+import org.drools.rule.builder.dialect.mvel.MVELEvalBuilder;
+import org.drools.spi.DeclarationScopeResolver;
+import org.mvel.compiler.AbstractParser;
+import org.mvel.compiler.ExpressionCompiler;
+import org.mvel.MVEL;
+import org.mvel.ParserContext;
+import org.mvel.util.ParseTools;
+
+/**
+ * @author etirelli
+ *
+ */
+public class ClipsEvalBuilder extends MVELEvalBuilder
+ implements
+ RuleConditionBuilder {
+
+ public RuleConditionElement build(final RuleBuildContext context,
+ final BaseDescr descr) {
+ return build( context,
+ descr,
+ null );
+ }
+
+ /**
+ * Builds and returns an Eval Conditional Element
+ *
+ * @param context The current build context
+ * @param utils The current build utils instance
+ * @param patternBuilder not used by EvalBuilder
+ * @param descr The Eval Descriptor to build the eval conditional element from
+ *
+ * @return the Eval Conditional Element
+ */
+ public RuleConditionElement build(final RuleBuildContext context,
+ final BaseDescr descr,
+ final Pattern prefixPattern) {
+ return super.build(context, descr, prefixPattern);
+ }
+
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsPredicateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsPredicateBuilder.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsPredicateBuilder.java 2008-02-08 22:16:51 UTC (rev 18429)
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2006 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.
+ */
+
+package org.drools.rule.builder.dialect.clips;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.base.mvel.DroolsMVELFactory;
+import org.drools.base.mvel.MVELPredicateExpression;
+import org.drools.compiler.Dialect;
+import org.drools.compiler.DescrBuildError;
+import org.drools.lang.descr.PredicateDescr;
+import org.drools.rule.Declaration;
+import org.drools.rule.MVELDialectData;
+import org.drools.rule.PredicateConstraint;
+import org.drools.rule.builder.PredicateBuilder;
+import org.drools.rule.builder.RuleBuildContext;
+import org.drools.rule.builder.dialect.mvel.MVELPredicateBuilder;
+import org.mvel.compiler.AbstractParser;
+import org.mvel.compiler.ExpressionCompiler;
+import org.mvel.MVEL;
+import org.mvel.ParserContext;
+
+/**
+ * @author etirelli
+ *
+ */
+public class ClipsPredicateBuilder extends MVELPredicateBuilder
+ implements
+ PredicateBuilder {
+
+ public void build(final RuleBuildContext context,
+ final List[] usedIdentifiers,
+ final Declaration[] previousDeclarations,
+ final Declaration[] localDeclarations,
+ final PredicateConstraint predicate,
+ final PredicateDescr predicateDescr) {
+ super.build(context, usedIdentifiers, previousDeclarations, localDeclarations, predicate, predicateDescr);
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsReturnValueBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsReturnValueBuilder.java 2008-02-08 20:21:54 UTC (rev 18428)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsReturnValueBuilder.java 2008-02-08 22:16:51 UTC (rev 18429)
@@ -29,7 +29,7 @@
}
returnValueRestrictionDescr.setContent( builder.toString() );
- context.getRuleDescr().setConsequence( builder.toString() );
+ context.getRuleDescr().setDialect( "mvel" );
super.build(context, usedIdentifiers, previousDeclarations, localDeclarations, returnValueRestriction, returnValueRestrictionDescr );
}
Modified: labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/Clips.g
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/Clips.g 2008-02-08 20:21:54 UTC (rev 18428)
+++ labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/Clips.g 2008-02-08 22:16:51 UTC (rev 18429)
@@ -513,11 +513,11 @@
fc = new FieldConstraintDescr(f.getText());
fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
fc.setStartCharacter( ((CommonToken)f).getStartIndex() );
- base.addDescr( fc );
top = fc.getRestriction();
}
or_restr_connective[top, base, fc, declarations]
+ { if ( top.getRestrictions().size() != 0 ) base.addDescr( fc ); }
RIGHT_PAREN
;
/*
Modified: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java 2008-02-08 20:21:54 UTC (rev 18428)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java 2008-02-08 22:16:51 UTC (rev 18429)
@@ -254,7 +254,20 @@
assertEquals( "hello mark",
new String( this.baos.toByteArray() ) );
}
-
+
+ public void testRuleCallDeftemplate() {
+ String function = "(deffunction max (?a ?b) (if (> ?a ?b) then (return ?a) else (return ?b) ) )";
+ this.shell.eval( function );
+
+ this.shell.eval( "(import org.drools.*)" );
+ //this.shell.eval( "(defrule testRule (Person (name mark) (age ?age) ) => (printout t hello) (printout t \" \" (max 5 ?age) ) )" );
+ this.shell.eval( "(defrule testRule (Person (age ?age) ) => (printout t hello) (printout t \" \" (max 3 ?age) ) )" );
+ this.shell.eval( "(assert (Person (name mark) (age 32) ) )" );
+ this.shell.eval( "(run)" );
+ assertEquals( "hello 32",
+ new String( this.baos.toByteArray() ) );
+ }
+
public void testTwoSimpleRulesWithModify() {
this.shell.eval( "(import org.drools.*)" );
this.shell.eval( "(defrule testRule ?p <- (Person (name ?name&mark) ) => (printout t hello) (printout t \" \" ?name) (modify ?p (name bob) ) )" );
More information about the jboss-svn-commits
mailing list