[jboss-svn-commits] JBL Code SVN: r14746 - in labs/jbossrules/trunk/drools-compiler/src/main: java/org/drools/lang/descr and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 29 17:25:44 EDT 2007


Author: tirelli
Date: 2007-08-29 17:25:44 -0400 (Wed, 29 Aug 2007)
New Revision: 14746

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/MVELDumper.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/LiteralRestrictionDescr.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
Log:
JBRULES-1136: fixing bug when using boolean comparisons with nested accessors

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2007-08-29 19:51:13 UTC (rev 14745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2007-08-29 21:25:44 UTC (rev 14746)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-08-28 11:00:44
+// $ANTLR 3.0 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-08-29 17:26:20
 
 	package org.drools.lang;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2007-08-29 19:51:13 UTC (rev 14745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2007-08-29 21:25:44 UTC (rev 14746)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-08-28 11:00:44
+// $ANTLR 3.0 /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-08-29 17:26:19
 
 	package org.drools.lang;
 	import java.util.List;
@@ -5931,7 +5931,7 @@
 
         accessor_path_return ap = null;
 
-        String lc = null;
+        literal_constraint_return lc = null;
 
         paren_chunk_return rvc = null;
 
@@ -6027,7 +6027,7 @@
                     if (failed) return rd;
                     if ( backtracking==0 ) {
                        
-                      				rd = new LiteralRestrictionDescr(op, lc);
+                      				rd = new LiteralRestrictionDescr(op, lc.text, lc.type );
                       			
                     }
 
@@ -6073,16 +6073,21 @@
     }
     // $ANTLR end expression_value
 
+    public static class literal_constraint_return extends ParserRuleReturnScope {
+        public String text;
+        public int type;
+    };
 
     // $ANTLR start literal_constraint
-    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:1: literal_constraint returns [String text] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) ;
-    public final String literal_constraint() throws RecognitionException {
-        String text = null;
+    // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:1: literal_constraint returns [String text, int type] : (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) ;
+    public final literal_constraint_return literal_constraint() throws RecognitionException {
+        literal_constraint_return retval = new literal_constraint_return();
+        retval.start = input.LT(1);
 
         Token t=null;
 
 
-        		text = null;
+        		retval.text = null;
         	
         try {
             // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:2: ( (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL ) )
@@ -6117,7 +6122,7 @@
                 }
                 break;
             default:
-                if (backtracking>0) {failed=true; return text;}
+                if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
                     new NoViableAltException("1545:4: (t= STRING | t= INT | t= FLOAT | t= BOOL | t= NULL )", 71, 0, input);
 
@@ -6129,9 +6134,9 @@
                     // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:6: t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint4206); if (failed) return text;
+                    match(input,STRING,FOLLOW_STRING_in_literal_constraint4206); if (failed) return retval;
                     if ( backtracking==0 ) {
-                       text = getString( t.getText() ); 
+                       retval.text = getString( t.getText() ); retval.type = LiteralRestrictionDescr.TYPE_STRING; 
                     }
 
                     }
@@ -6140,9 +6145,9 @@
                     // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1546:5: t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint4217); if (failed) return text;
+                    match(input,INT,FOLLOW_INT_in_literal_constraint4217); if (failed) return retval;
                     if ( backtracking==0 ) {
-                       text = t.getText(); 
+                       retval.text = t.getText(); retval.type = LiteralRestrictionDescr.TYPE_NUMBER; 
                     }
 
                     }
@@ -6151,9 +6156,9 @@
                     // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1547:5: t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4230); if (failed) return text;
+                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4230); if (failed) return retval;
                     if ( backtracking==0 ) {
-                       text = t.getText(); 
+                       retval.text = t.getText(); retval.type = LiteralRestrictionDescr.TYPE_NUMBER; 
                     }
 
                     }
@@ -6162,9 +6167,9 @@
                     // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1548:5: t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4241); if (failed) return text;
+                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4241); if (failed) return retval;
                     if ( backtracking==0 ) {
-                       text = t.getText(); 
+                       retval.text = t.getText(); retval.type = LiteralRestrictionDescr.TYPE_BOOLEAN; 
                     }
 
                     }
@@ -6173,9 +6178,9 @@
                     // /home/etirelli/workspace/jboss/jbossrules/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1549:5: t= NULL
                     {
                     t=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal_constraint4253); if (failed) return text;
+                    match(input,NULL,FOLLOW_NULL_in_literal_constraint4253); if (failed) return retval;
                     if ( backtracking==0 ) {
-                       text = null; 
+                       retval.text = null; retval.type = LiteralRestrictionDescr.TYPE_NULL; 
                     }
 
                     }
@@ -6186,6 +6191,8 @@
 
             }
 
+            retval.stop = input.LT(-1);
+
         }
         catch (RecognitionException re) {
             reportError(re);
@@ -6193,7 +6200,7 @@
         }
         finally {
         }
-        return text;
+        return retval;
     }
     // $ANTLR end literal_constraint
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java	2007-08-29 19:51:13 UTC (rev 14745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java	2007-08-29 21:25:44 UTC (rev 14746)
@@ -208,14 +208,16 @@
     public void visitLiteralRestrictionDescr(final LiteralRestrictionDescr descr) {
         this.template = "";
         String text = descr.getText();
-        if ( text == null ) {
+        if ( text == null || descr.getType() == LiteralRestrictionDescr.TYPE_NULL ) {
             text = "null";
-        } else {
+        } else if( descr.getType() == LiteralRestrictionDescr.TYPE_NUMBER ) {
             try {
                 Integer.parseInt( text );
             } catch ( final NumberFormatException e ) {
                 text = "\"" + text + "\"";
             }
+        } else if( descr.getType() == LiteralRestrictionDescr.TYPE_STRING ) {
+            text = "\"" + text + "\"";
         }
         this.template = descr.getEvaluator() + " " + text;
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/MVELDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/MVELDumper.java	2007-08-29 19:51:13 UTC (rev 14745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/MVELDumper.java	2007-08-29 21:25:44 UTC (rev 14746)
@@ -27,7 +27,6 @@
 import org.drools.lang.descr.RestrictionConnectiveDescr;
 import org.drools.lang.descr.ReturnValueRestrictionDescr;
 import org.drools.lang.descr.VariableRestrictionDescr;
-import org.drools.spi.Evaluator;
 import org.drools.util.ReflectiveVisitor;
 
 /**
@@ -65,14 +64,16 @@
 
     public void visitLiteralRestrictionDescr(final LiteralRestrictionDescr descr) {
         String text = descr.getText();
-        if ( text == null ) {
+        if ( text == null || descr.getType() == LiteralRestrictionDescr.TYPE_NULL ) {
             text = "null";
-        } else {
+        } else if( descr.getType() == LiteralRestrictionDescr.TYPE_NUMBER ) {
             try {
                 Integer.parseInt( text );
             } catch ( final NumberFormatException e ) {
                 text = "\"" + text + "\"";
             }
+        } else if( descr.getType() == LiteralRestrictionDescr.TYPE_STRING ) {
+            text = "\"" + text + "\"";
         }
         this.template = processRestriction( descr.getEvaluator(), text );
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/LiteralRestrictionDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/LiteralRestrictionDescr.java	2007-08-29 19:51:13 UTC (rev 14745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/LiteralRestrictionDescr.java	2007-08-29 21:25:44 UTC (rev 14746)
@@ -22,17 +22,32 @@
  * The "text" contains the content. 
  */
 public class LiteralRestrictionDescr extends RestrictionDescr {
+    public static final int   TYPE_NULL        = 1;
+    public static final int   TYPE_NUMBER      = 2;
+    public static final int   TYPE_STRING      = 3;
+    public static final int   TYPE_BOOLEAN     = 4;
+
     /**
      * 
      */
     private static final long serialVersionUID = 400L;
     private String            evaluator;
     private String            text;
+    private int               type;
 
     public LiteralRestrictionDescr(final String evaluator,
                                    final String text) {
+        this( evaluator,
+              text,
+              TYPE_STRING );// default type is string if not specified
+    }
+
+    public LiteralRestrictionDescr(final String evaluator,
+                                   final String text,
+                                   final int type) {
         this.text = text;
         this.evaluator = evaluator;
+        this.type = type;
     }
 
     public String getEvaluator() {
@@ -47,4 +62,12 @@
         return "[LiteralRestriction: " + this.evaluator + " " + this.text + "]";
 
     }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
 }
\ No newline at end of file

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	2007-08-29 19:51:13 UTC (rev 14745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2007-08-29 21:25:44 UTC (rev 14746)
@@ -1523,7 +1523,7 @@
 			}						
 		|	lc=literal_constraint 
 			{ 
-				$rd  = new LiteralRestrictionDescr($op, $lc.text);
+				$rd  = new LiteralRestrictionDescr($op, $lc.text, $lc.type );
 			}
 		|	rvc=paren_chunk 
 			{ 
@@ -1538,15 +1538,15 @@
 		}
 	;	
 	
-literal_constraint returns [String text]
+literal_constraint returns [String text, int type]
 	@init {
 		$text = null;
 	}
-	:	(	t=STRING { $text = getString( $t.text ); } 
-		|	t=INT    { $text = $t.text; }
-		|	t=FLOAT	 { $text = $t.text; }
-		|	t=BOOL 	 { $text = $t.text; }
-		|	t=NULL   { $text = null; }
+	:	(	t=STRING { $text = getString( $t.text ); $type = LiteralRestrictionDescr.TYPE_STRING; } 
+		|	t=INT    { $text = $t.text; $type = LiteralRestrictionDescr.TYPE_NUMBER; }
+		|	t=FLOAT	 { $text = $t.text; $type = LiteralRestrictionDescr.TYPE_NUMBER; }
+		|	t=BOOL 	 { $text = $t.text; $type = LiteralRestrictionDescr.TYPE_BOOLEAN; }
+		|	t=NULL   { $text = null; $type = LiteralRestrictionDescr.TYPE_NULL; }
 		)
 	;
 	




More information about the jboss-svn-commits mailing list