[jboss-svn-commits] JBL Code SVN: r18198 - in labs/jbossrules/trunk/drools-clips/src: main/java/org/drools/base and 12 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jan 29 16:02:48 EST 2008
Author: mark.proctor at jboss.com
Date: 2008-01-29 16:02:48 -0500 (Tue, 29 Jan 2008)
New Revision: 18198
Added:
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clips/
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clips/CLPConsequence.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Appendable.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/BoolLispAtom.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CLPMVELLexer.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CLPMVELParser.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CreateListFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/EqFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FloatLispAtom.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Function.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FunctionContext.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FunctionHandlers.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/GeneralParseException.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/IntLispAtom.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/LispAtom.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/LispForm.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/MVELBuildContext.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/NullLispAtom.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/OldShell.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ParserHandler.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/PrintRouterContext.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/SExpression.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/StringBuilderAppendable.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/StringLispAtom.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/SymbolLispAtom.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/VariableContext.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/VariableLispAtom.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BaseInfixFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqOrLessThanFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqOrMoreThanFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/IfFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/LessThanFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ModifyFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MoreThanFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MultiplyFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PlusFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrintoutFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrognFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ReturnFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/
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/ClipsDialectConfiguration.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClpConsequenceBuilder.java
labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/
labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/CLPMVEL.g
labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/functions.conf
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/AddFunctionTest.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/BlockExecutionTest.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/CompiledFunctionsTest.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/DeffunctionTest.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/FunctionFactoryTest.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/LhsClpParserTest.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ModifyFunctionTest.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/TestMVEL.java
labs/jbossrules/trunk/drools-clips/src/test/resources/org/drools/clips/
Removed:
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clips/CLPConsequence.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clp/
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BaseFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BindFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BreakFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/CreateListFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/DivideFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ForeachFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/GreaterThanOrEqualFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/IfFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/LessThanFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MinusFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ModifyFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MultiplyFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PlusFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrintoutFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrognFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchCaseFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchDefaultFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/WhileFunction.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/BaseValueHandler.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/BooleanValueHandler.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/CLPGlobalVariable.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/CLPLocalDeclarationVariable.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/CLPPreviousDeclarationVariable.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/DoubleValueHandler.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/FunctionCaller.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/IndexedLocalVariableValue.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/ListValueHandler.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/LongValueHandler.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/ObjectValueHandler.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/TempTokenVariable.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/
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/ClipsDialectConfiguration.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClpConsequenceBuilder.java
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clp/
labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/CLP.g
labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/CLPMVEL.g
labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/functions.conf
labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/clp/
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/Appendable.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/BaseInfixFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/BoolLispAtom2.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/CreateListFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/EqFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/EqOrLessThanFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/EqOrMoreThanFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/FloatLispAtom2.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/Function.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/FunctionHandlers.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/IfFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/IntLispAtom2.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/LessThanFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/LispAtom2.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/LispForm2.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/ModifyFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/MoreThanFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/MultiplyFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/NullLispAtom2.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/PlusFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/PrintoutFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/PrognFunction.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/SExpression.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/StringBuilderAppendable.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/StringLispAtom2.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/SymbolLispAtom2.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/TestMVEL.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/VariableLispAtom2.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/
labs/jbossrules/trunk/drools-clips/src/test/resources/org/drools/clp/
Log:
JBRULES-720 Clips Parser
-refactoring to use new framework version
-renamed from clp to clips
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clips (from rev 18083, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clp)
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clips/CLPConsequence.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clp/CLPConsequence.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clips/CLPConsequence.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,33 +0,0 @@
-package org.drools.base.clp;
-
-import org.drools.WorkingMemory;
-import org.drools.clp.BlockExecutionEngine;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ExecutionContextImpl;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.reteoo.ReteTuple;
-import org.drools.spi.Consequence;
-import org.drools.spi.KnowledgeHelper;
-
-public class CLPConsequence
- implements
- Consequence {
-
- private final BlockExecutionEngine engine;
- private final int varSize;
-
- public CLPConsequence(BlockExecutionEngine engine,
- int varSize) {
- this.engine = engine;
- this.varSize = varSize;
- }
-
- public void evaluate(KnowledgeHelper knowledgeHelper,
- WorkingMemory workingMemory) throws Exception {
- ExecutionContext context = new ExecutionContextImpl( (InternalWorkingMemory) workingMemory,
- (ReteTuple) knowledgeHelper.getTuple(),
- varSize );
- engine.execute( context );
- }
-
-}
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clips/CLPConsequence.java (from rev 18196, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clp/CLPConsequence.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clips/CLPConsequence.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/base/clips/CLPConsequence.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,33 @@
+package org.drools.base.clips;
+
+import org.drools.WorkingMemory;
+import org.drools.clips.BlockExecutionEngine;
+import org.drools.clips.ExecutionContext;
+import org.drools.clips.ExecutionContextImpl;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.ReteTuple;
+import org.drools.spi.Consequence;
+import org.drools.spi.KnowledgeHelper;
+
+public class CLPConsequence
+ implements
+ Consequence {
+
+ private final BlockExecutionEngine engine;
+ private final int varSize;
+
+ public CLPConsequence(BlockExecutionEngine engine,
+ int varSize) {
+ this.engine = engine;
+ this.varSize = varSize;
+ }
+
+ public void evaluate(KnowledgeHelper knowledgeHelper,
+ WorkingMemory workingMemory) throws Exception {
+ ExecutionContext context = new ExecutionContextImpl( (InternalWorkingMemory) workingMemory,
+ (ReteTuple) knowledgeHelper.getTuple(),
+ varSize );
+ engine.execute( context );
+ }
+
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Appendable.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Appendable.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Appendable.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,7 @@
+package org.drools.clips;
+
+public interface Appendable {
+
+ public abstract void append(String string);
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/BoolLispAtom.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/BoolLispAtom.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/BoolLispAtom.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,12 @@
+/**
+ *
+ */
+package org.drools.clips;
+
+public class BoolLispAtom extends LispAtom {
+
+ public BoolLispAtom(String value) {
+ super(value);
+ }
+
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CLPMVELLexer.java (from rev 18181, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/CLPMVELLexer.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CLPMVELLexer.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CLPMVELLexer.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,2130 @@
+// $ANTLR 3.0.1 C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g 2008-01-29 07:31:27
+
+ package org.drools.clips;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+public class CLPMVELLexer extends Lexer {
+ public static final int RIGHT_SQUARE=38;
+ public static final int RIGHT_CURLY=40;
+ public static final int EQUALS=23;
+ public static final int FLOAT=24;
+ public static final int SH_STYLE_SINGLE_LINE_COMMENT=35;
+ public static final int SYMBOL_CHAR=34;
+ public static final int NOT=14;
+ public static final int AND=12;
+ public static final int FIRST_SYMBOL_CHAR=43;
+ public static final int EOF=-1;
+ public static final int HexDigit=31;
+ public static final int DEFFUNCTION=7;
+ public static final int ASSIGN_OP=18;
+ public static final int RIGHT_PAREN=6;
+ public static final int NAME=5;
+ public static final int EOL=27;
+ public static final int DEFRULE=8;
+ public static final int TILDE=21;
+ public static final int PIPE=19;
+ public static final int VAR=17;
+ public static final int EXISTS=15;
+ public static final int SYMBOL=42;
+ public static final int NULL=26;
+ public static final int BOOL=25;
+ public static final int SALIENCE=10;
+ public static final int AMPERSAND=20;
+ public static final int INT=11;
+ public static final int Tokens=46;
+ public static final int MULTI_LINE_COMMENT=41;
+ public static final int T45=45;
+ public static final int T44=44;
+ public static final int COLON=22;
+ public static final int WS=28;
+ public static final int UnicodeEscape=32;
+ public static final int LEFT_CURLY=39;
+ public static final int OR=13;
+ public static final int TEST=16;
+ public static final int LEFT_PAREN=4;
+ public static final int DECLARE=29;
+ public static final int LEFT_SQUARE=37;
+ public static final int EscapeSequence=30;
+ public static final int OctalEscape=33;
+ public static final int C_STYLE_SINGLE_LINE_COMMENT=36;
+ public static final int STRING=9;
+ public CLPMVELLexer() {;}
+ public CLPMVELLexer(CharStream input) {
+ super(input);
+ ruleMemo = new HashMap[44+1];
+ }
+ public String getGrammarFileName() { return "C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g"; }
+
+ // $ANTLR start T44
+ public final void mT44() throws RecognitionException {
+ try {
+ int _type = T44;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:6:5: ( 'import' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:6:7: 'import'
+ {
+ match("import"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T44
+
+ // $ANTLR start T45
+ public final void mT45() throws RecognitionException {
+ try {
+ int _type = T45;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:7:5: ( '=>' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:7:7: '=>'
+ {
+ match("=>"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end T45
+
+ // $ANTLR start WS
+ public final void mWS() throws RecognitionException {
+ try {
+ int _type = WS;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:699:9: ( ( ' ' | '\\t' | '\\f' | EOL ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:699:17: ( ' ' | '\\t' | '\\f' | EOL )
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:699:17: ( ' ' | '\\t' | '\\f' | EOL )
+ int alt1=4;
+ switch ( input.LA(1) ) {
+ case ' ':
+ {
+ alt1=1;
+ }
+ break;
+ case '\t':
+ {
+ alt1=2;
+ }
+ break;
+ case '\f':
+ {
+ alt1=3;
+ }
+ break;
+ case '\n':
+ case '\r':
+ {
+ alt1=4;
+ }
+ break;
+ default:
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("699:17: ( ' ' | '\\t' | '\\f' | EOL )", 1, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt1) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:699:19: ' '
+ {
+ match(' '); if (failed) return ;
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:700:19: '\\t'
+ {
+ match('\t'); if (failed) return ;
+
+ }
+ break;
+ case 3 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:701:19: '\\f'
+ {
+ match('\f'); if (failed) return ;
+
+ }
+ break;
+ case 4 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:702:19: EOL
+ {
+ mEOL(); if (failed) return ;
+
+ }
+ break;
+
+ }
+
+ if ( backtracking==0 ) {
+ channel=HIDDEN;
+ }
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end WS
+
+ // $ANTLR start DEFRULE
+ public final void mDEFRULE() throws RecognitionException {
+ try {
+ int _type = DEFRULE;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:707:10: ( 'defrule' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:707:12: 'defrule'
+ {
+ match("defrule"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end DEFRULE
+
+ // $ANTLR start DEFFUNCTION
+ public final void mDEFFUNCTION() throws RecognitionException {
+ try {
+ int _type = DEFFUNCTION;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:708:13: ( 'deffunction' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:708:15: 'deffunction'
+ {
+ match("deffunction"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end DEFFUNCTION
+
+ // $ANTLR start OR
+ public final void mOR() throws RecognitionException {
+ try {
+ int _type = OR;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:709:7: ( 'or' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:709:9: 'or'
+ {
+ match("or"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end OR
+
+ // $ANTLR start AND
+ public final void mAND() throws RecognitionException {
+ try {
+ int _type = AND;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:710:7: ( 'and' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:710:9: 'and'
+ {
+ match("and"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end AND
+
+ // $ANTLR start NOT
+ public final void mNOT() throws RecognitionException {
+ try {
+ int _type = NOT;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:711:7: ( 'not' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:711:9: 'not'
+ {
+ match("not"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end NOT
+
+ // $ANTLR start EXISTS
+ public final void mEXISTS() throws RecognitionException {
+ try {
+ int _type = EXISTS;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:712:10: ( 'exists' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:712:12: 'exists'
+ {
+ match("exists"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end EXISTS
+
+ // $ANTLR start TEST
+ public final void mTEST() throws RecognitionException {
+ try {
+ int _type = TEST;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:713:8: ( 'test' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:713:10: 'test'
+ {
+ match("test"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end TEST
+
+ // $ANTLR start NULL
+ public final void mNULL() throws RecognitionException {
+ try {
+ int _type = NULL;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:715:7: ( 'null' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:715:9: 'null'
+ {
+ match("null"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end NULL
+
+ // $ANTLR start DECLARE
+ public final void mDECLARE() throws RecognitionException {
+ try {
+ int _type = DECLARE;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:717:10: ( 'declare' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:717:12: 'declare'
+ {
+ match("declare"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end DECLARE
+
+ // $ANTLR start SALIENCE
+ public final void mSALIENCE() throws RecognitionException {
+ try {
+ int _type = SALIENCE;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:719:10: ( 'salience' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:719:12: 'salience'
+ {
+ match("salience"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end SALIENCE
+
+ // $ANTLR start EOL
+ public final void mEOL() throws RecognitionException {
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:724:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:725:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:725:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+ int alt2=3;
+ int LA2_0 = input.LA(1);
+
+ if ( (LA2_0=='\r') ) {
+ int LA2_1 = input.LA(2);
+
+ if ( (LA2_1=='\n') && (synpred1())) {
+ alt2=1;
+ }
+ else {
+ alt2=2;}
+ }
+ else if ( (LA2_0=='\n') ) {
+ alt2=3;
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("725:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
+
+ throw nvae;
+ }
+ switch (alt2) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:725:14: ( '\\r\\n' )=> '\\r\\n'
+ {
+ match("\r\n"); if (failed) return ;
+
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:726:25: '\\r'
+ {
+ match('\r'); if (failed) return ;
+
+ }
+ break;
+ case 3 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:727:25: '\\n'
+ {
+ match('\n'); if (failed) return ;
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ }
+ finally {
+ }
+ }
+ // $ANTLR end EOL
+
+ // $ANTLR start INT
+ public final void mINT() throws RecognitionException {
+ try {
+ int _type = INT;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:732:2: ( ( '-' )? ( '0' .. '9' )+ )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:732:4: ( '-' )? ( '0' .. '9' )+
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:732:4: ( '-' )?
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( (LA3_0=='-') ) {
+ alt3=1;
+ }
+ switch (alt3) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:732:5: '-'
+ {
+ match('-'); if (failed) return ;
+
+ }
+ break;
+
+ }
+
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:732:10: ( '0' .. '9' )+
+ int cnt4=0;
+ loop4:
+ do {
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( ((LA4_0>='0' && LA4_0<='9')) ) {
+ alt4=1;
+ }
+
+
+ switch (alt4) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:732:11: '0' .. '9'
+ {
+ matchRange('0','9'); if (failed) return ;
+
+ }
+ break;
+
+ default :
+ if ( cnt4 >= 1 ) break loop4;
+ if (backtracking>0) {failed=true; return ;}
+ EarlyExitException eee =
+ new EarlyExitException(4, input);
+ throw eee;
+ }
+ cnt4++;
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end INT
+
+ // $ANTLR start FLOAT
+ public final void mFLOAT() throws RecognitionException {
+ try {
+ int _type = FLOAT;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:736:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:736:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:736:4: ( '-' )?
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0=='-') ) {
+ alt5=1;
+ }
+ switch (alt5) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:736:5: '-'
+ {
+ match('-'); if (failed) return ;
+
+ }
+ break;
+
+ }
+
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:736:10: ( '0' .. '9' )+
+ int cnt6=0;
+ loop6:
+ do {
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( ((LA6_0>='0' && LA6_0<='9')) ) {
+ alt6=1;
+ }
+
+
+ switch (alt6) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:736:11: '0' .. '9'
+ {
+ matchRange('0','9'); if (failed) return ;
+
+ }
+ break;
+
+ default :
+ if ( cnt6 >= 1 ) break loop6;
+ if (backtracking>0) {failed=true; return ;}
+ EarlyExitException eee =
+ new EarlyExitException(6, input);
+ throw eee;
+ }
+ cnt6++;
+ } while (true);
+
+ match('.'); if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:736:26: ( '0' .. '9' )+
+ int cnt7=0;
+ loop7:
+ do {
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( ((LA7_0>='0' && LA7_0<='9')) ) {
+ alt7=1;
+ }
+
+
+ switch (alt7) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:736:27: '0' .. '9'
+ {
+ matchRange('0','9'); if (failed) return ;
+
+ }
+ break;
+
+ default :
+ if ( cnt7 >= 1 ) break loop7;
+ if (backtracking>0) {failed=true; return ;}
+ EarlyExitException eee =
+ new EarlyExitException(7, input);
+ throw eee;
+ }
+ cnt7++;
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end FLOAT
+
+ // $ANTLR start STRING
+ public final void mSTRING() throws RecognitionException {
+ try {
+ int _type = STRING;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:740:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0=='\"') ) {
+ alt10=1;
+ }
+ else if ( (LA10_0=='\'') ) {
+ alt10=2;
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("739:1: STRING : ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) );", 10, 0, input);
+
+ throw nvae;
+ }
+ switch (alt10) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:740:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:740:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:740:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+ {
+ match('\"'); if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:740:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+ loop8:
+ do {
+ int alt8=3;
+ int LA8_0 = input.LA(1);
+
+ if ( (LA8_0=='\\') ) {
+ alt8=1;
+ }
+ else if ( ((LA8_0>='\u0000' && LA8_0<='!')||(LA8_0>='#' && LA8_0<='[')||(LA8_0>=']' && LA8_0<='\uFFFE')) ) {
+ alt8=2;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:740:15: EscapeSequence
+ {
+ mEscapeSequence(); if (failed) return ;
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:740:32: ~ ( '\\\\' | '\"' )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+ failed=false;
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop8;
+ }
+ } while (true);
+
+ match('\"'); if (failed) return ;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:741:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:741:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:741:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+ {
+ match('\''); if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:741:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+ loop9:
+ do {
+ int alt9=3;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0=='\\') ) {
+ alt9=1;
+ }
+ else if ( ((LA9_0>='\u0000' && LA9_0<='&')||(LA9_0>='(' && LA9_0<='[')||(LA9_0>=']' && LA9_0<='\uFFFE')) ) {
+ alt9=2;
+ }
+
+
+ switch (alt9) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:741:16: EscapeSequence
+ {
+ mEscapeSequence(); if (failed) return ;
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:741:33: ~ ( '\\\\' | '\\'' )
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+ failed=false;
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop9;
+ }
+ } while (true);
+
+ match('\''); if (failed) return ;
+
+ }
+
+
+ }
+ break;
+
+ }
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end STRING
+
+ // $ANTLR start HexDigit
+ public final void mHexDigit() throws RecognitionException {
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:745:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:745:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+ {
+ if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
+ input.consume();
+ failed=false;
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+
+ }
+ finally {
+ }
+ }
+ // $ANTLR end HexDigit
+
+ // $ANTLR start EscapeSequence
+ public final void mEscapeSequence() throws RecognitionException {
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:749:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape )
+ int alt11=3;
+ int LA11_0 = input.LA(1);
+
+ if ( (LA11_0=='\\') ) {
+ switch ( input.LA(2) ) {
+ case '\"':
+ case '\'':
+ case '\\':
+ case 'b':
+ case 'f':
+ case 'n':
+ case 'r':
+ case 't':
+ {
+ alt11=1;
+ }
+ break;
+ case 'u':
+ {
+ alt11=2;
+ }
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ {
+ alt11=3;
+ }
+ break;
+ default:
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("747:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape );", 11, 1, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("747:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape );", 11, 0, input);
+
+ throw nvae;
+ }
+ switch (alt11) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:749:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
+ {
+ match('\\'); if (failed) return ;
+ if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
+ input.consume();
+ failed=false;
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:750:9: UnicodeEscape
+ {
+ mUnicodeEscape(); if (failed) return ;
+
+ }
+ break;
+ case 3 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:751:9: OctalEscape
+ {
+ mOctalEscape(); if (failed) return ;
+
+ }
+ break;
+
+ }
+ }
+ finally {
+ }
+ }
+ // $ANTLR end EscapeSequence
+
+ // $ANTLR start OctalEscape
+ public final void mOctalEscape() throws RecognitionException {
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:756:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+ int alt12=3;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0=='\\') ) {
+ int LA12_1 = input.LA(2);
+
+ if ( ((LA12_1>='0' && LA12_1<='3')) ) {
+ int LA12_2 = input.LA(3);
+
+ if ( ((LA12_2>='0' && LA12_2<='7')) ) {
+ int LA12_4 = input.LA(4);
+
+ if ( ((LA12_4>='0' && LA12_4<='7')) ) {
+ alt12=1;
+ }
+ else {
+ alt12=2;}
+ }
+ else {
+ alt12=3;}
+ }
+ else if ( ((LA12_1>='4' && LA12_1<='7')) ) {
+ int LA12_3 = input.LA(3);
+
+ if ( ((LA12_3>='0' && LA12_3<='7')) ) {
+ alt12=2;
+ }
+ else {
+ alt12=3;}
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("754:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("754:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
+
+ throw nvae;
+ }
+ switch (alt12) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:756:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+ {
+ match('\\'); if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:756:14: ( '0' .. '3' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:756:15: '0' .. '3'
+ {
+ matchRange('0','3'); if (failed) return ;
+
+ }
+
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:756:25: ( '0' .. '7' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:756:26: '0' .. '7'
+ {
+ matchRange('0','7'); if (failed) return ;
+
+ }
+
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:756:36: ( '0' .. '7' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:756:37: '0' .. '7'
+ {
+ matchRange('0','7'); if (failed) return ;
+
+ }
+
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:757:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+ {
+ match('\\'); if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:757:14: ( '0' .. '7' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:757:15: '0' .. '7'
+ {
+ matchRange('0','7'); if (failed) return ;
+
+ }
+
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:757:25: ( '0' .. '7' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:757:26: '0' .. '7'
+ {
+ matchRange('0','7'); if (failed) return ;
+
+ }
+
+
+ }
+ break;
+ case 3 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:758:9: '\\\\' ( '0' .. '7' )
+ {
+ match('\\'); if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:758:14: ( '0' .. '7' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:758:15: '0' .. '7'
+ {
+ matchRange('0','7'); if (failed) return ;
+
+ }
+
+
+ }
+ break;
+
+ }
+ }
+ finally {
+ }
+ }
+ // $ANTLR end OctalEscape
+
+ // $ANTLR start UnicodeEscape
+ public final void mUnicodeEscape() throws RecognitionException {
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:763:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:763:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+ {
+ match('\\'); if (failed) return ;
+ match('u'); if (failed) return ;
+ mHexDigit(); if (failed) return ;
+ mHexDigit(); if (failed) return ;
+ mHexDigit(); if (failed) return ;
+ mHexDigit(); if (failed) return ;
+
+ }
+
+ }
+ finally {
+ }
+ }
+ // $ANTLR end UnicodeEscape
+
+ // $ANTLR start BOOL
+ public final void mBOOL() throws RecognitionException {
+ try {
+ int _type = BOOL;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:767:2: ( ( 'true' | 'false' ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:767:4: ( 'true' | 'false' )
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:767:4: ( 'true' | 'false' )
+ int alt13=2;
+ int LA13_0 = input.LA(1);
+
+ if ( (LA13_0=='t') ) {
+ alt13=1;
+ }
+ else if ( (LA13_0=='f') ) {
+ alt13=2;
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("767:4: ( 'true' | 'false' )", 13, 0, input);
+
+ throw nvae;
+ }
+ switch (alt13) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:767:5: 'true'
+ {
+ match("true"); if (failed) return ;
+
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:767:12: 'false'
+ {
+ match("false"); if (failed) return ;
+
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end BOOL
+
+ // $ANTLR start VAR
+ public final void mVAR() throws RecognitionException {
+ try {
+ int _type = VAR;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:770:6: ( '?' ( SYMBOL_CHAR )+ )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:770:8: '?' ( SYMBOL_CHAR )+
+ {
+ match('?'); if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:770:12: ( SYMBOL_CHAR )+
+ int cnt14=0;
+ loop14:
+ do {
+ int alt14=2;
+ int LA14_0 = input.LA(1);
+
+ if ( (LA14_0=='!'||(LA14_0>='#' && LA14_0<='%')||(LA14_0>='*' && LA14_0<=':')||(LA14_0>='=' && LA14_0<='_')||(LA14_0>='a' && LA14_0<='{')||LA14_0=='}') ) {
+ alt14=1;
+ }
+
+
+ switch (alt14) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:770:12: SYMBOL_CHAR
+ {
+ mSYMBOL_CHAR(); if (failed) return ;
+
+ }
+ break;
+
+ default :
+ if ( cnt14 >= 1 ) break loop14;
+ if (backtracking>0) {failed=true; return ;}
+ EarlyExitException eee =
+ new EarlyExitException(14, input);
+ throw eee;
+ }
+ cnt14++;
+ } while (true);
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end VAR
+
+ // $ANTLR start SH_STYLE_SINGLE_LINE_COMMENT
+ public final void mSH_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
+ try {
+ int _type = SH_STYLE_SINGLE_LINE_COMMENT;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:774:2: ( '#' ( options {greedy=false; } : . )* EOL )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:774:4: '#' ( options {greedy=false; } : . )* EOL
+ {
+ match('#'); if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:774:8: ( options {greedy=false; } : . )*
+ loop15:
+ do {
+ int alt15=2;
+ int LA15_0 = input.LA(1);
+
+ if ( (LA15_0=='\r') ) {
+ alt15=2;
+ }
+ else if ( (LA15_0=='\n') ) {
+ alt15=2;
+ }
+ else if ( ((LA15_0>='\u0000' && LA15_0<='\t')||(LA15_0>='\u000B' && LA15_0<='\f')||(LA15_0>='\u000E' && LA15_0<='\uFFFE')) ) {
+ alt15=1;
+ }
+
+
+ switch (alt15) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:774:35: .
+ {
+ matchAny(); if (failed) return ;
+
+ }
+ break;
+
+ default :
+ break loop15;
+ }
+ } while (true);
+
+ mEOL(); if (failed) return ;
+ if ( backtracking==0 ) {
+ channel=HIDDEN;
+ }
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end SH_STYLE_SINGLE_LINE_COMMENT
+
+ // $ANTLR start C_STYLE_SINGLE_LINE_COMMENT
+ public final void mC_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
+ try {
+ int _type = C_STYLE_SINGLE_LINE_COMMENT;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:780:2: ( '//' ( options {greedy=false; } : . )* EOL )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:780:4: '//' ( options {greedy=false; } : . )* EOL
+ {
+ match("//"); if (failed) return ;
+
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:780:9: ( options {greedy=false; } : . )*
+ loop16:
+ do {
+ int alt16=2;
+ int LA16_0 = input.LA(1);
+
+ if ( (LA16_0=='\r') ) {
+ alt16=2;
+ }
+ else if ( (LA16_0=='\n') ) {
+ alt16=2;
+ }
+ else if ( ((LA16_0>='\u0000' && LA16_0<='\t')||(LA16_0>='\u000B' && LA16_0<='\f')||(LA16_0>='\u000E' && LA16_0<='\uFFFE')) ) {
+ alt16=1;
+ }
+
+
+ switch (alt16) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:780:36: .
+ {
+ matchAny(); if (failed) return ;
+
+ }
+ break;
+
+ default :
+ break loop16;
+ }
+ } while (true);
+
+ mEOL(); if (failed) return ;
+ if ( backtracking==0 ) {
+ channel=HIDDEN;
+ }
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end C_STYLE_SINGLE_LINE_COMMENT
+
+ // $ANTLR start LEFT_PAREN
+ public final void mLEFT_PAREN() throws RecognitionException {
+ try {
+ int _type = LEFT_PAREN;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:786:2: ( '(' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:786:4: '('
+ {
+ match('('); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end LEFT_PAREN
+
+ // $ANTLR start RIGHT_PAREN
+ public final void mRIGHT_PAREN() throws RecognitionException {
+ try {
+ int _type = RIGHT_PAREN;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:790:2: ( ')' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:790:4: ')'
+ {
+ match(')'); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RIGHT_PAREN
+
+ // $ANTLR start LEFT_SQUARE
+ public final void mLEFT_SQUARE() throws RecognitionException {
+ try {
+ int _type = LEFT_SQUARE;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:794:2: ( '[' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:794:4: '['
+ {
+ match('['); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end LEFT_SQUARE
+
+ // $ANTLR start RIGHT_SQUARE
+ public final void mRIGHT_SQUARE() throws RecognitionException {
+ try {
+ int _type = RIGHT_SQUARE;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:798:2: ( ']' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:798:4: ']'
+ {
+ match(']'); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RIGHT_SQUARE
+
+ // $ANTLR start LEFT_CURLY
+ public final void mLEFT_CURLY() throws RecognitionException {
+ try {
+ int _type = LEFT_CURLY;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:802:2: ( '{' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:802:4: '{'
+ {
+ match('{'); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end LEFT_CURLY
+
+ // $ANTLR start RIGHT_CURLY
+ public final void mRIGHT_CURLY() throws RecognitionException {
+ try {
+ int _type = RIGHT_CURLY;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:806:2: ( '}' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:806:4: '}'
+ {
+ match('}'); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end RIGHT_CURLY
+
+ // $ANTLR start TILDE
+ public final void mTILDE() throws RecognitionException {
+ try {
+ int _type = TILDE;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:809:7: ( '~' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:809:9: '~'
+ {
+ match('~'); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end TILDE
+
+ // $ANTLR start AMPERSAND
+ public final void mAMPERSAND() throws RecognitionException {
+ try {
+ int _type = AMPERSAND;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:813:2: ( '&' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:813:4: '&'
+ {
+ match('&'); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end AMPERSAND
+
+ // $ANTLR start PIPE
+ public final void mPIPE() throws RecognitionException {
+ try {
+ int _type = PIPE;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:817:2: ( '|' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:817:4: '|'
+ {
+ match('|'); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end PIPE
+
+ // $ANTLR start ASSIGN_OP
+ public final void mASSIGN_OP() throws RecognitionException {
+ try {
+ int _type = ASSIGN_OP;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:821:2: ( '<-' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:821:4: '<-'
+ {
+ match("<-"); if (failed) return ;
+
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end ASSIGN_OP
+
+ // $ANTLR start COLON
+ public final void mCOLON() throws RecognitionException {
+ try {
+ int _type = COLON;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:824:7: ( ':' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:824:9: ':'
+ {
+ match(':'); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end COLON
+
+ // $ANTLR start EQUALS
+ public final void mEQUALS() throws RecognitionException {
+ try {
+ int _type = EQUALS;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:826:8: ( '=' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:826:10: '='
+ {
+ match('='); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end EQUALS
+
+ // $ANTLR start MULTI_LINE_COMMENT
+ public final void mMULTI_LINE_COMMENT() throws RecognitionException {
+ try {
+ int _type = MULTI_LINE_COMMENT;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:829:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:829:4: '/*' ( options {greedy=false; } : . )* '*/'
+ {
+ match("/*"); if (failed) return ;
+
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:829:9: ( options {greedy=false; } : . )*
+ loop17:
+ do {
+ int alt17=2;
+ int LA17_0 = input.LA(1);
+
+ if ( (LA17_0=='*') ) {
+ int LA17_1 = input.LA(2);
+
+ if ( (LA17_1=='/') ) {
+ alt17=2;
+ }
+ else if ( ((LA17_1>='\u0000' && LA17_1<='.')||(LA17_1>='0' && LA17_1<='\uFFFE')) ) {
+ alt17=1;
+ }
+
+
+ }
+ else if ( ((LA17_0>='\u0000' && LA17_0<=')')||(LA17_0>='+' && LA17_0<='\uFFFE')) ) {
+ alt17=1;
+ }
+
+
+ switch (alt17) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:829:35: .
+ {
+ matchAny(); if (failed) return ;
+
+ }
+ break;
+
+ default :
+ break loop17;
+ }
+ } while (true);
+
+ match("*/"); if (failed) return ;
+
+ if ( backtracking==0 ) {
+ channel=HIDDEN;
+ }
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end MULTI_LINE_COMMENT
+
+ // $ANTLR start NAME
+ public final void mNAME() throws RecognitionException {
+ try {
+ int _type = NAME;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:833:6: ( SYMBOL )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:833:8: SYMBOL
+ {
+ mSYMBOL(); if (failed) return ;
+
+ }
+
+ this.type = _type;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end NAME
+
+ // $ANTLR start SYMBOL
+ public final void mSYMBOL() throws RecognitionException {
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:836:8: ( FIRST_SYMBOL_CHAR ( SYMBOL_CHAR )* )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:836:10: FIRST_SYMBOL_CHAR ( SYMBOL_CHAR )*
+ {
+ mFIRST_SYMBOL_CHAR(); if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:836:28: ( SYMBOL_CHAR )*
+ loop18:
+ do {
+ int alt18=2;
+ int LA18_0 = input.LA(1);
+
+ if ( (LA18_0=='!'||(LA18_0>='#' && LA18_0<='%')||(LA18_0>='*' && LA18_0<=':')||(LA18_0>='=' && LA18_0<='_')||(LA18_0>='a' && LA18_0<='{')||LA18_0=='}') ) {
+ alt18=1;
+ }
+
+
+ switch (alt18) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:836:28: SYMBOL_CHAR
+ {
+ mSYMBOL_CHAR(); if (failed) return ;
+
+ }
+ break;
+
+ default :
+ break loop18;
+ }
+ } while (true);
+
+
+ }
+
+ }
+ finally {
+ }
+ }
+ // $ANTLR end SYMBOL
+
+ // $ANTLR start FIRST_SYMBOL_CHAR
+ public final void mFIRST_SYMBOL_CHAR() throws RecognitionException {
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:841:19: ( ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '=' | '\\\\' | '/' | '@' | '#' | ':' | '>' | '<' | ',' | '.' | '[' | ']' | '{' | '}' ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:841:21: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '=' | '\\\\' | '/' | '@' | '#' | ':' | '>' | '<' | ',' | '.' | '[' | ']' | '{' | '}' )
+ {
+ if ( input.LA(1)=='!'||(input.LA(1)>='#' && input.LA(1)<='%')||(input.LA(1)>='*' && input.LA(1)<=':')||(input.LA(1)>='<' && input.LA(1)<='>')||(input.LA(1)>='@' && input.LA(1)<='_')||(input.LA(1)>='a' && input.LA(1)<='{')||input.LA(1)=='}' ) {
+ input.consume();
+ failed=false;
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+
+ }
+ finally {
+ }
+ }
+ // $ANTLR end FIRST_SYMBOL_CHAR
+
+ // $ANTLR start SYMBOL_CHAR
+ public final void mSYMBOL_CHAR() throws RecognitionException {
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:846:13: ( ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '=' | '\\\\' | '/' | '@' | '#' | ':' | '>' | ',' | '.' | '[' | ']' | '{' | '}' | '?' ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:846:15: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '=' | '\\\\' | '/' | '@' | '#' | ':' | '>' | ',' | '.' | '[' | ']' | '{' | '}' | '?' )
+ {
+ if ( input.LA(1)=='!'||(input.LA(1)>='#' && input.LA(1)<='%')||(input.LA(1)>='*' && input.LA(1)<=':')||(input.LA(1)>='=' && input.LA(1)<='_')||(input.LA(1)>='a' && input.LA(1)<='{')||input.LA(1)=='}' ) {
+ input.consume();
+ failed=false;
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ MismatchedSetException mse =
+ new MismatchedSetException(null,input);
+ recover(mse); throw mse;
+ }
+
+
+ }
+
+ }
+ finally {
+ }
+ }
+ // $ANTLR end SYMBOL_CHAR
+
+ public void mTokens() throws RecognitionException {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:8: ( T44 | T45 | WS | DEFRULE | DEFFUNCTION | OR | AND | NOT | EXISTS | TEST | NULL | DECLARE | SALIENCE | INT | FLOAT | STRING | BOOL | VAR | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | TILDE | AMPERSAND | PIPE | ASSIGN_OP | COLON | EQUALS | MULTI_LINE_COMMENT | NAME )
+ int alt19=34;
+ alt19 = dfa19.predict(input);
+ switch (alt19) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:10: T44
+ {
+ mT44(); if (failed) return ;
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:14: T45
+ {
+ mT45(); if (failed) return ;
+
+ }
+ break;
+ case 3 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:18: WS
+ {
+ mWS(); if (failed) return ;
+
+ }
+ break;
+ case 4 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:21: DEFRULE
+ {
+ mDEFRULE(); if (failed) return ;
+
+ }
+ break;
+ case 5 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:29: DEFFUNCTION
+ {
+ mDEFFUNCTION(); if (failed) return ;
+
+ }
+ break;
+ case 6 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:41: OR
+ {
+ mOR(); if (failed) return ;
+
+ }
+ break;
+ case 7 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:44: AND
+ {
+ mAND(); if (failed) return ;
+
+ }
+ break;
+ case 8 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:48: NOT
+ {
+ mNOT(); if (failed) return ;
+
+ }
+ break;
+ case 9 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:52: EXISTS
+ {
+ mEXISTS(); if (failed) return ;
+
+ }
+ break;
+ case 10 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:59: TEST
+ {
+ mTEST(); if (failed) return ;
+
+ }
+ break;
+ case 11 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:64: NULL
+ {
+ mNULL(); if (failed) return ;
+
+ }
+ break;
+ case 12 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:69: DECLARE
+ {
+ mDECLARE(); if (failed) return ;
+
+ }
+ break;
+ case 13 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:77: SALIENCE
+ {
+ mSALIENCE(); if (failed) return ;
+
+ }
+ break;
+ case 14 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:86: INT
+ {
+ mINT(); if (failed) return ;
+
+ }
+ break;
+ case 15 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:90: FLOAT
+ {
+ mFLOAT(); if (failed) return ;
+
+ }
+ break;
+ case 16 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:96: STRING
+ {
+ mSTRING(); if (failed) return ;
+
+ }
+ break;
+ case 17 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:103: BOOL
+ {
+ mBOOL(); if (failed) return ;
+
+ }
+ break;
+ case 18 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:108: VAR
+ {
+ mVAR(); if (failed) return ;
+
+ }
+ break;
+ case 19 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:112: SH_STYLE_SINGLE_LINE_COMMENT
+ {
+ mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+
+ }
+ break;
+ case 20 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:141: C_STYLE_SINGLE_LINE_COMMENT
+ {
+ mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+
+ }
+ break;
+ case 21 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:169: LEFT_PAREN
+ {
+ mLEFT_PAREN(); if (failed) return ;
+
+ }
+ break;
+ case 22 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:180: RIGHT_PAREN
+ {
+ mRIGHT_PAREN(); if (failed) return ;
+
+ }
+ break;
+ case 23 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:192: LEFT_SQUARE
+ {
+ mLEFT_SQUARE(); if (failed) return ;
+
+ }
+ break;
+ case 24 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:204: RIGHT_SQUARE
+ {
+ mRIGHT_SQUARE(); if (failed) return ;
+
+ }
+ break;
+ case 25 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:217: LEFT_CURLY
+ {
+ mLEFT_CURLY(); if (failed) return ;
+
+ }
+ break;
+ case 26 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:228: RIGHT_CURLY
+ {
+ mRIGHT_CURLY(); if (failed) return ;
+
+ }
+ break;
+ case 27 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:240: TILDE
+ {
+ mTILDE(); if (failed) return ;
+
+ }
+ break;
+ case 28 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:246: AMPERSAND
+ {
+ mAMPERSAND(); if (failed) return ;
+
+ }
+ break;
+ case 29 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:256: PIPE
+ {
+ mPIPE(); if (failed) return ;
+
+ }
+ break;
+ case 30 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:261: ASSIGN_OP
+ {
+ mASSIGN_OP(); if (failed) return ;
+
+ }
+ break;
+ case 31 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:271: COLON
+ {
+ mCOLON(); if (failed) return ;
+
+ }
+ break;
+ case 32 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:277: EQUALS
+ {
+ mEQUALS(); if (failed) return ;
+
+ }
+ break;
+ case 33 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:284: MULTI_LINE_COMMENT
+ {
+ mMULTI_LINE_COMMENT(); if (failed) return ;
+
+ }
+ break;
+ case 34 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:1:303: NAME
+ {
+ mNAME(); if (failed) return ;
+
+ }
+ break;
+
+ }
+
+ }
+
+ // $ANTLR start synpred1
+ public final void synpred1_fragment() throws RecognitionException {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:725:14: ( '\\r\\n' )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:725:16: '\\r\\n'
+ {
+ match("\r\n"); if (failed) return ;
+
+
+ }
+ }
+ // $ANTLR end synpred1
+
+ public final boolean synpred1() {
+ backtracking++;
+ int start = input.mark();
+ try {
+ synpred1_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !failed;
+ input.rewind(start);
+ backtracking--;
+ failed=false;
+ return success;
+ }
+
+
+ protected DFA19 dfa19 = new DFA19(this);
+ static final String DFA19_eotS =
+ "\1\uffff\1\35\1\40\1\uffff\10\35\1\54\1\uffff\1\35\1\uffff\2\35"+
+ "\2\uffff\1\62\1\63\1\64\1\65\3\uffff\1\35\1\67\1\uffff\1\35\1\71"+
+ "\1\uffff\1\35\1\74\7\35\1\54\1\35\1\uffff\2\35\1\uffff\2\35\4\uffff"+
+ "\1\113\1\uffff\1\35\1\uffff\2\35\1\uffff\1\120\1\35\1\122\4\35\1"+
+ "\127\2\35\1\uffff\1\35\1\uffff\1\35\1\uffff\4\35\1\uffff\1\136\1"+
+ "\uffff\1\35\1\140\1\141\1\35\1\uffff\1\35\1\111\4\35\1\uffff\1\35"+
+ "\2\uffff\1\35\1\140\1\152\3\35\1\156\1\35\1\uffff\1\35\1\161\1\162"+
+ "\1\uffff\2\35\2\uffff\1\165\1\35\1\uffff\1\35\1\170\1\uffff";
+ static final String DFA19_eofS =
+ "\171\uffff";
+ static final String DFA19_minS =
+ "\1\11\1\155\1\41\1\uffff\1\145\1\162\1\156\1\157\1\170\1\145\1\141"+
+ "\1\60\1\41\1\uffff\1\141\1\uffff\1\0\1\52\2\uffff\4\41\3\uffff\1"+
+ "\55\1\41\1\uffff\1\160\1\41\1\uffff\1\143\1\41\1\144\1\154\1\164"+
+ "\1\151\1\165\1\163\1\154\1\41\1\60\1\uffff\1\154\1\0\1\uffff\2\0"+
+ "\4\uffff\1\41\1\uffff\1\157\1\uffff\1\146\1\154\1\uffff\1\41\1\154"+
+ "\1\41\1\163\1\145\1\164\1\151\1\41\1\163\1\0\1\uffff\1\0\1\uffff"+
+ "\1\0\1\uffff\1\162\2\165\1\141\1\uffff\1\41\1\uffff\1\164\2\41\1"+
+ "\145\1\uffff\1\145\1\41\1\164\1\156\1\154\1\162\1\uffff\1\163\2"+
+ "\uffff\1\156\2\41\1\143\2\145\1\41\1\143\1\uffff\1\164\2\41\1\uffff"+
+ "\1\145\1\151\2\uffff\1\41\1\157\1\uffff\1\156\1\41\1\uffff";
+ static final String DFA19_maxS =
+ "\1\176\1\155\1\175\1\uffff\1\145\1\162\1\156\1\165\1\170\1\162\1"+
+ "\141\1\71\1\175\1\uffff\1\141\1\uffff\1\ufffe\1\57\2\uffff\4\175"+
+ "\3\uffff\1\55\1\175\1\uffff\1\160\1\175\1\uffff\1\146\1\175\1\144"+
+ "\1\154\1\164\1\151\1\165\1\163\1\154\1\175\1\71\1\uffff\1\154\1"+
+ "\ufffe\1\uffff\2\ufffe\4\uffff\1\175\1\uffff\1\157\1\uffff\1\162"+
+ "\1\154\1\uffff\1\175\1\154\1\175\1\163\1\145\1\164\1\151\1\175\1"+
+ "\163\1\ufffe\1\uffff\1\ufffe\1\uffff\1\ufffe\1\uffff\1\162\2\165"+
+ "\1\141\1\uffff\1\175\1\uffff\1\164\2\175\1\145\1\uffff\1\145\1\175"+
+ "\1\164\1\156\1\154\1\162\1\uffff\1\163\2\uffff\1\156\2\175\1\143"+
+ "\2\145\1\175\1\143\1\uffff\1\164\2\175\1\uffff\1\145\1\151\2\uffff"+
+ "\1\175\1\157\1\uffff\1\156\1\175\1\uffff";
+ static final String DFA19_acceptS =
+ "\3\uffff\1\3\11\uffff\1\20\1\uffff\1\22\2\uffff\1\25\1\26\4\uffff"+
+ "\1\33\1\34\1\35\2\uffff\1\42\2\uffff\1\40\13\uffff\1\16\2\uffff"+
+ "\1\23\2\uffff\1\27\1\30\1\31\1\32\1\uffff\1\37\1\uffff\1\2\2\uffff"+
+ "\1\6\12\uffff\1\24\1\uffff\1\41\1\uffff\1\36\4\uffff\1\7\1\uffff"+
+ "\1\10\4\uffff\1\17\6\uffff\1\13\1\uffff\1\21\1\12\10\uffff\1\1\3"+
+ "\uffff\1\11\2\uffff\1\4\1\14\2\uffff\1\15\2\uffff\1\5";
+ static final String DFA19_specialS =
+ "\171\uffff}>";
+ static final String[] DFA19_transitionS = {
+ "\2\3\1\uffff\2\3\22\uffff\1\3\1\35\1\15\1\20\2\35\1\31\1\15"+
+ "\1\22\1\23\3\35\1\13\1\35\1\21\12\14\1\34\1\uffff\1\33\1\2\1"+
+ "\35\1\17\33\35\1\24\1\35\1\25\2\35\1\uffff\1\6\2\35\1\4\1\10"+
+ "\1\16\2\35\1\1\4\35\1\7\1\5\3\35\1\12\1\11\6\35\1\26\1\32\1"+
+ "\27\1\30",
+ "\1\36",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\1\35\1\37\41\35\1\uffff"+
+ "\33\35\1\uffff\1\35",
+ "",
+ "\1\41",
+ "\1\42",
+ "\1\43",
+ "\1\45\5\uffff\1\44",
+ "\1\46",
+ "\1\50\14\uffff\1\47",
+ "\1\51",
+ "\12\52",
+ "\1\35\1\uffff\3\35\4\uffff\4\35\1\53\1\35\12\52\1\35\2\uffff"+
+ "\43\35\1\uffff\33\35\1\uffff\1\35",
+ "",
+ "\1\55",
+ "",
+ "\41\57\1\56\1\57\3\56\4\57\21\56\2\57\43\56\1\57\33\56\1\57"+
+ "\1\56\uff81\57",
+ "\1\61\4\uffff\1\60",
+ "",
+ "",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "",
+ "",
+ "",
+ "\1\66",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "",
+ "\1\70",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "",
+ "\1\73\2\uffff\1\72",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\75",
+ "\1\76",
+ "\1\77",
+ "\1\100",
+ "\1\101",
+ "\1\102",
+ "\1\103",
+ "\1\35\1\uffff\3\35\4\uffff\4\35\1\53\1\35\12\52\1\35\2\uffff"+
+ "\43\35\1\uffff\33\35\1\uffff\1\35",
+ "\12\104",
+ "",
+ "\1\105",
+ "\41\57\1\56\1\57\3\56\4\57\21\56\2\57\43\56\1\57\33\56\1\57"+
+ "\1\56\uff81\57",
+ "",
+ "\41\107\1\106\1\107\3\106\4\107\21\106\2\107\43\106\1\107\33"+
+ "\106\1\107\1\106\uff81\107",
+ "\41\111\1\112\1\111\3\112\4\111\1\110\20\112\2\111\43\112\1"+
+ "\111\33\112\1\111\1\112\uff81\111",
+ "",
+ "",
+ "",
+ "",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "",
+ "\1\114",
+ "",
+ "\1\115\13\uffff\1\116",
+ "\1\117",
+ "",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\121",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\123",
+ "\1\124",
+ "\1\125",
+ "\1\126",
+ "\1\35\1\uffff\3\35\4\uffff\6\35\12\104\1\35\2\uffff\43\35\1"+
+ "\uffff\33\35\1\uffff\1\35",
+ "\1\130",
+ "\41\107\1\106\1\107\3\106\4\107\21\106\2\107\43\106\1\107\33"+
+ "\106\1\107\1\106\uff81\107",
+ "",
+ "\41\111\1\112\1\111\3\112\4\111\1\110\4\112\1\131\13\112\2\111"+
+ "\43\112\1\111\33\112\1\111\1\112\uff81\111",
+ "",
+ "\41\111\1\112\1\111\3\112\4\111\1\110\20\112\2\111\43\112\1"+
+ "\111\33\112\1\111\1\112\uff81\111",
+ "",
+ "\1\132",
+ "\1\133",
+ "\1\134",
+ "\1\135",
+ "",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "",
+ "\1\137",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\142",
+ "",
+ "\1\143",
+ "\1\112\1\uffff\3\112\4\uffff\1\110\20\112\2\uffff\43\112\1\uffff"+
+ "\33\112\1\uffff\1\112",
+ "\1\144",
+ "\1\145",
+ "\1\146",
+ "\1\147",
+ "",
+ "\1\150",
+ "",
+ "",
+ "\1\151",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\153",
+ "\1\154",
+ "\1\155",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\157",
+ "",
+ "\1\160",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "",
+ "\1\163",
+ "\1\164",
+ "",
+ "",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ "\1\166",
+ "",
+ "\1\167",
+ "\1\35\1\uffff\3\35\4\uffff\21\35\2\uffff\43\35\1\uffff\33\35"+
+ "\1\uffff\1\35",
+ ""
+ };
+
+ static final short[] DFA19_eot = DFA.unpackEncodedString(DFA19_eotS);
+ static final short[] DFA19_eof = DFA.unpackEncodedString(DFA19_eofS);
+ static final char[] DFA19_min = DFA.unpackEncodedStringToUnsignedChars(DFA19_minS);
+ static final char[] DFA19_max = DFA.unpackEncodedStringToUnsignedChars(DFA19_maxS);
+ static final short[] DFA19_accept = DFA.unpackEncodedString(DFA19_acceptS);
+ static final short[] DFA19_special = DFA.unpackEncodedString(DFA19_specialS);
+ static final short[][] DFA19_transition;
+
+ static {
+ int numStates = DFA19_transitionS.length;
+ DFA19_transition = new short[numStates][];
+ for (int i=0; i<numStates; i++) {
+ DFA19_transition[i] = DFA.unpackEncodedString(DFA19_transitionS[i]);
+ }
+ }
+
+ class DFA19 extends DFA {
+
+ public DFA19(BaseRecognizer recognizer) {
+ this.recognizer = recognizer;
+ this.decisionNumber = 19;
+ this.eot = DFA19_eot;
+ this.eof = DFA19_eof;
+ this.min = DFA19_min;
+ this.max = DFA19_max;
+ this.accept = DFA19_accept;
+ this.special = DFA19_special;
+ this.transition = DFA19_transition;
+ }
+ public String getDescription() {
+ return "1:1: Tokens : ( T44 | T45 | WS | DEFRULE | DEFFUNCTION | OR | AND | NOT | EXISTS | TEST | NULL | DECLARE | SALIENCE | INT | FLOAT | STRING | BOOL | VAR | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | TILDE | AMPERSAND | PIPE | ASSIGN_OP | COLON | EQUALS | MULTI_LINE_COMMENT | NAME );";
+ }
+ }
+
+
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CLPMVELParser.java (from rev 18181, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/CLPMVELParser.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CLPMVELParser.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CLPMVELParser.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,2266 @@
+// $ANTLR 3.0.1 C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g 2008-01-29 07:31:27
+
+ package org.drools.clips;
+
+ import org.drools.clips.*;
+import org.drools.clips.mvel.*;
+
+ import java.util.List;
+ import java.util.ArrayList;
+ import java.util.Iterator;
+ import java.util.HashMap;
+ import java.util.Set;
+ import java.util.HashSet;
+ import java.util.StringTokenizer;
+ import org.drools.lang.descr.*;
+ import org.drools.lang.Location;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+public class CLPMVELParser extends Parser {
+ public static final String[] tokenNames = new String[] {
+ "<invalid>", "<EOR>", "<DOWN>", "<UP>", "LEFT_PAREN", "NAME", "RIGHT_PAREN", "DEFFUNCTION", "DEFRULE", "STRING", "SALIENCE", "INT", "AND", "OR", "NOT", "EXISTS", "TEST", "VAR", "ASSIGN_OP", "PIPE", "AMPERSAND", "TILDE", "COLON", "EQUALS", "FLOAT", "BOOL", "NULL", "EOL", "WS", "DECLARE", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SYMBOL_CHAR", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "LEFT_SQUARE", "RIGHT_SQUARE", "LEFT_CURLY", "RIGHT_CURLY", "MULTI_LINE_COMMENT", "SYMBOL", "FIRST_SYMBOL_CHAR", "'import'", "'=>'"
+ };
+ public static final int RIGHT_SQUARE=38;
+ public static final int RIGHT_CURLY=40;
+ public static final int EQUALS=23;
+ public static final int FLOAT=24;
+ public static final int NOT=14;
+ public static final int SYMBOL_CHAR=34;
+ public static final int SH_STYLE_SINGLE_LINE_COMMENT=35;
+ public static final int AND=12;
+ public static final int EOF=-1;
+ public static final int FIRST_SYMBOL_CHAR=43;
+ public static final int HexDigit=31;
+ public static final int DEFFUNCTION=7;
+ public static final int ASSIGN_OP=18;
+ public static final int RIGHT_PAREN=6;
+ public static final int NAME=5;
+ public static final int EOL=27;
+ public static final int DEFRULE=8;
+ public static final int TILDE=21;
+ public static final int PIPE=19;
+ public static final int VAR=17;
+ public static final int EXISTS=15;
+ public static final int SYMBOL=42;
+ public static final int NULL=26;
+ public static final int BOOL=25;
+ public static final int SALIENCE=10;
+ public static final int AMPERSAND=20;
+ public static final int INT=11;
+ public static final int MULTI_LINE_COMMENT=41;
+ public static final int COLON=22;
+ public static final int WS=28;
+ public static final int UnicodeEscape=32;
+ public static final int LEFT_CURLY=39;
+ public static final int OR=13;
+ public static final int TEST=16;
+ public static final int LEFT_PAREN=4;
+ public static final int DECLARE=29;
+ public static final int LEFT_SQUARE=37;
+ public static final int EscapeSequence=30;
+ public static final int OctalEscape=33;
+ public static final int C_STYLE_SINGLE_LINE_COMMENT=36;
+ public static final int STRING=9;
+
+ public CLPMVELParser(TokenStream input) {
+ super(input);
+ ruleMemo = new HashMap[26+1];
+ }
+
+
+ public String[] getTokenNames() { return tokenNames; }
+ public String getGrammarFileName() { return "C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g"; }
+
+
+ private PackageDescr packageDescr;
+ private List errors = new ArrayList();
+ private String source = "unknown";
+ private int lineOffset = 0;
+ private DescrFactory factory = new DescrFactory();
+ private MVELBuildContext context;
+ private boolean parserDebug = false;
+ private Location location = new Location( Location.LOCATION_UNKNOWN );
+
+ public void setParserDebug(boolean parserDebug) {
+ this.parserDebug = parserDebug;
+ }
+
+ public void debug(String message) {
+ if ( parserDebug )
+ System.err.println( "drl parser: " + message );
+ }
+
+ public void setSource(String source) {
+ this.source = source;
+ }
+ public DescrFactory getFactory() {
+ return factory;
+ }
+
+ public String getSource() {
+ return this.source;
+ }
+
+ public PackageDescr getPackageDescr() {
+ return packageDescr;
+ }
+
+ private int offset(int line) {
+ return line + lineOffset;
+ }
+
+ /**
+ * This will set the offset to record when reparsing. Normally is zero of course
+ */
+ public void setLineOffset(int i) {
+ this.lineOffset = i;
+ }
+
+ private String getString(Token token) {
+ String orig = token.getText();
+ return orig.substring( 1, orig.length() -1 );
+ }
+
+ public void reportError(RecognitionException ex) {
+ // if we've already reported an error and have not matched a token
+ // yet successfully, don't report any errors.
+ if ( errorRecovery ) {
+ return;
+ }
+ errorRecovery = true;
+
+ ex.line = offset(ex.line); //add the offset if there is one
+ errors.add( ex );
+ }
+
+ /** return the raw RecognitionException errors */
+ public List getErrors() {
+ return errors;
+ }
+
+ /** Return a list of pretty strings summarising the errors */
+ public List getErrorMessages() {
+ List messages = new ArrayList();
+ for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
+ messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
+ }
+ return messages;
+ }
+
+ /** return true if any parser errors were accumulated */
+ public boolean hasErrors() {
+ return ! errors.isEmpty();
+ }
+
+ /** This will take a RecognitionException, and create a sensible error message out of it */
+ public String createErrorMessage(RecognitionException e)
+ {
+ StringBuffer message = new StringBuffer();
+ message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
+ if ( e instanceof MismatchedTokenException ) {
+ MismatchedTokenException mte = (MismatchedTokenException)e;
+ message.append("mismatched token: "+
+ e.token+
+ "; expecting type "+
+ tokenNames[mte.expecting]);
+ }
+ else if ( e instanceof MismatchedTreeNodeException ) {
+ MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
+ message.append("mismatched tree node: "+
+ //mtne.foundNode+ FIXME
+ "; expecting type "+
+ tokenNames[mtne.expecting]);
+ }
+ else if ( e instanceof NoViableAltException ) {
+ NoViableAltException nvae = (NoViableAltException)e;
+ message.append( "Unexpected token '" + e.token.getText() + "'" );
+ /*
+ message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
+ " state "+nvae.stateNumber+
+ " (decision="+nvae.decisionNumber+
+ ") no viable alt; token="+
+ e.token);
+ */
+ }
+ else if ( e instanceof EarlyExitException ) {
+ EarlyExitException eee = (EarlyExitException)e;
+ message.append("required (...)+ loop (decision="+
+ eee.decisionNumber+
+ ") did not match anything; token="+
+ e.token);
+ }
+ else if ( e instanceof MismatchedSetException ) {
+ MismatchedSetException mse = (MismatchedSetException)e;
+ message.append("mismatched token '"+
+ e.token+
+ "' expecting set "+mse.expecting);
+ }
+ else if ( e instanceof MismatchedNotSetException ) {
+ MismatchedNotSetException mse = (MismatchedNotSetException)e;
+ message.append("mismatched token '"+
+ e.token+
+ "' expecting set "+mse.expecting);
+ }
+ else if ( e instanceof FailedPredicateException ) {
+ FailedPredicateException fpe = (FailedPredicateException)e;
+ message.append("rule "+fpe.ruleName+" failed predicate: {"+
+ fpe.predicateText+"}?");
+ } else if (e instanceof GeneralParseException) {
+ message.append(" " + e.getMessage());
+ }
+ return message.toString();
+ }
+
+ void checkTrailingSemicolon(String text, int line) {
+ if (text.trim().endsWith( ";" ) ) {
+ this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
+ }
+ }
+
+
+
+
+ // $ANTLR start eval
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:224:1: eval[ParserHandler handler, MVELBuildContext context] : (i= importDescr | f= deffunction | r= defrule | form= lisp_form ) ;
+ public final void eval(ParserHandler handler, MVELBuildContext context) throws RecognitionException {
+ ImportDescr i = null;
+
+ FunctionDescr f = null;
+
+ RuleDescr r = null;
+
+ LispForm form = null;
+
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:225:2: ( (i= importDescr | f= deffunction | r= defrule | form= lisp_form ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:226:2: (i= importDescr | f= deffunction | r= defrule | form= lisp_form )
+ {
+ if ( backtracking==0 ) {
+ this.context = context;
+ }
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:227:2: (i= importDescr | f= deffunction | r= defrule | form= lisp_form )
+ int alt1=4;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0==LEFT_PAREN) ) {
+ switch ( input.LA(2) ) {
+ case DEFFUNCTION:
+ {
+ alt1=2;
+ }
+ break;
+ case 44:
+ {
+ alt1=1;
+ }
+ break;
+ case DEFRULE:
+ {
+ alt1=3;
+ }
+ break;
+ case NAME:
+ case VAR:
+ {
+ alt1=4;
+ }
+ break;
+ default:
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("227:2: (i= importDescr | f= deffunction | r= defrule | form= lisp_form )", 1, 1, input);
+
+ throw nvae;
+ }
+
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("227:2: (i= importDescr | f= deffunction | r= defrule | form= lisp_form )", 1, 0, input);
+
+ throw nvae;
+ }
+ switch (alt1) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:227:7: i= importDescr
+ {
+ pushFollow(FOLLOW_importDescr_in_eval60);
+ i=importDescr();
+ _fsp--;
+ if (failed) return ;
+ if ( backtracking==0 ) {
+ handler.importHandler( i );
+ }
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:228:7: f= deffunction
+ {
+ pushFollow(FOLLOW_deffunction_in_eval71);
+ f=deffunction();
+ _fsp--;
+ if (failed) return ;
+ if ( backtracking==0 ) {
+ handler.functionHandler( f );
+ }
+
+ }
+ break;
+ case 3 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:229:7: r= defrule
+ {
+ pushFollow(FOLLOW_defrule_in_eval84);
+ r=defrule();
+ _fsp--;
+ if (failed) return ;
+ if ( backtracking==0 ) {
+ handler.ruleHandler( r );
+ }
+
+ }
+ break;
+ case 4 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:230:7: form= lisp_form
+ {
+ pushFollow(FOLLOW_lisp_form_in_eval96);
+ form=lisp_form();
+ _fsp--;
+ if (failed) return ;
+ if ( backtracking==0 ) {
+ handler.lispFormHandler( form );
+ }
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end eval
+
+
+ // $ANTLR start importDescr
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:247:1: importDescr returns [ImportDescr importDescr] : LEFT_PAREN 'import' importName= NAME RIGHT_PAREN ;
+ public final ImportDescr importDescr() throws RecognitionException {
+ ImportDescr importDescr = null;
+
+ Token importName=null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:248:2: ( LEFT_PAREN 'import' importName= NAME RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:248:4: LEFT_PAREN 'import' importName= NAME RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_importDescr123); if (failed) return importDescr;
+ match(input,44,FOLLOW_44_in_importDescr125); if (failed) return importDescr;
+ importName=(Token)input.LT(1);
+ match(input,NAME,FOLLOW_NAME_in_importDescr129); if (failed) return importDescr;
+ if ( backtracking==0 ) {
+ importDescr = new ImportDescr( importName.getText() );
+ }
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_importDescr133); if (failed) return importDescr;
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return importDescr;
+ }
+ // $ANTLR end importDescr
+
+
+ // $ANTLR start deffunction
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:296:1: deffunction returns [FunctionDescr functionDescr] : LEFT_PAREN t= DEFFUNCTION name= lisp_atom params= lisp_form (form= lisp_form )+ RIGHT_PAREN ;
+ public final FunctionDescr deffunction() throws RecognitionException {
+ FunctionDescr functionDescr = null;
+
+ Token t=null;
+ SExpression name = null;
+
+ LispForm params = null;
+
+ LispForm form = null;
+
+
+
+ List content = null;
+ functionDescr = null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:301:2: ( LEFT_PAREN t= DEFFUNCTION name= lisp_atom params= lisp_form (form= lisp_form )+ RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:301:4: LEFT_PAREN t= DEFFUNCTION name= lisp_atom params= lisp_form (form= lisp_form )+ RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_deffunction168); if (failed) return functionDescr;
+ t=(Token)input.LT(1);
+ match(input,DEFFUNCTION,FOLLOW_DEFFUNCTION_in_deffunction178); if (failed) return functionDescr;
+ pushFollow(FOLLOW_lisp_atom_in_deffunction188);
+ name=lisp_atom();
+ _fsp--;
+ if (failed) return functionDescr;
+ pushFollow(FOLLOW_lisp_form_in_deffunction198);
+ params=lisp_form();
+ _fsp--;
+ if (failed) return functionDescr;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:305:3: (form= lisp_form )+
+ int cnt2=0;
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( (LA2_0==LEFT_PAREN) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:305:4: form= lisp_form
+ {
+ pushFollow(FOLLOW_lisp_form_in_deffunction207);
+ form=lisp_form();
+ _fsp--;
+ if (failed) return functionDescr;
+ if ( backtracking==0 ) {
+ if ( content == null ) content = new ArrayList(); content.add( form );
+ }
+
+ }
+ break;
+
+ default :
+ if ( cnt2 >= 1 ) break loop2;
+ if (backtracking>0) {failed=true; return functionDescr;}
+ EarlyExitException eee =
+ new EarlyExitException(2, input);
+ throw eee;
+ }
+ cnt2++;
+ } while (true);
+
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_deffunction229); if (failed) return functionDescr;
+ if ( backtracking==0 ) {
+ functionDescr = FunctionHandlers.createFunctionDescr( name, params, content );
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return functionDescr;
+ }
+ // $ANTLR end deffunction
+
+
+ // $ANTLR start defrule
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:311:1: defrule returns [RuleDescr rule] : loc= LEFT_PAREN DEFRULE ruleName= NAME documentation= STRING ruleAttribute[rule] ( ce[lhs, declarations] )* '=>' t= lisp_form RIGHT_PAREN ;
+ public final RuleDescr defrule() throws RecognitionException {
+ RuleDescr rule = null;
+
+ Token loc=null;
+ Token ruleName=null;
+ Token documentation=null;
+ LispForm t = null;
+
+
+
+ rule = null;
+ AndDescr lhs = null;
+ PatternDescr colum = null;
+ AttributeDescr module = null;
+ Set declarations = null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:319:2: (loc= LEFT_PAREN DEFRULE ruleName= NAME documentation= STRING ruleAttribute[rule] ( ce[lhs, declarations] )* '=>' t= lisp_form RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:319:4: loc= LEFT_PAREN DEFRULE ruleName= NAME documentation= STRING ruleAttribute[rule] ( ce[lhs, declarations] )* '=>' t= lisp_form RIGHT_PAREN
+ {
+ loc=(Token)input.LT(1);
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_defrule266); if (failed) return rule;
+ match(input,DEFRULE,FOLLOW_DEFRULE_in_defrule274); if (failed) return rule;
+ ruleName=(Token)input.LT(1);
+ match(input,NAME,FOLLOW_NAME_in_defrule278); if (failed) return rule;
+ if ( backtracking==0 ) {
+
+ debug( "start rule: " + ruleName.getText() );
+ String ruleStr = ruleName.getText();
+
+ if ( ruleStr.indexOf("::") >= 0 ) {
+ String mod = ruleStr.substring(0, ruleStr.indexOf("::"));
+ ruleStr = ruleStr.substring(ruleStr.indexOf("::")+2);
+ module = new AttributeDescr( "agenda-group", mod );
+ module.setLocation( offset(ruleName.getLine()), ruleName.getCharPositionInLine() );
+ module.setStartCharacter( ((CommonToken)ruleName).getStartIndex() );
+ module.setEndCharacter( ((CommonToken)ruleName).getStopIndex() );
+ }
+
+ rule = new RuleDescr( ruleStr, null );
+ if( module != null ) {
+ rule.addAttribute( module );
+ }
+
+ rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+ rule.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+
+ // not sure how you define where a LHS starts in clips, so just putting it here for now
+ lhs = new AndDescr();
+ rule.setLhs( lhs );
+ lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+ lhs.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+
+ rule.addAttribute( new AttributeDescr( "dialect", "clips") );
+
+ declarations = new HashSet();
+
+ }
+ documentation=(Token)input.LT(1);
+ match(input,STRING,FOLLOW_STRING_in_defrule290); if (failed) return rule;
+ if ( backtracking==0 ) {
+
+ // do nothing here for now
+
+ }
+ pushFollow(FOLLOW_ruleAttribute_in_defrule296);
+ ruleAttribute(rule);
+ _fsp--;
+ if (failed) return rule;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:358:3: ( ce[lhs, declarations] )*
+ loop3:
+ do {
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( (LA3_0==LEFT_PAREN||LA3_0==VAR) ) {
+ alt3=1;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:358:3: ce[lhs, declarations]
+ {
+ pushFollow(FOLLOW_ce_in_defrule304);
+ ce(lhs, declarations);
+ _fsp--;
+ if (failed) return rule;
+
+ }
+ break;
+
+ default :
+ break loop3;
+ }
+ } while (true);
+
+ match(input,45,FOLLOW_45_in_defrule313); if (failed) return rule;
+ pushFollow(FOLLOW_lisp_form_in_defrule322);
+ t=lisp_form();
+ _fsp--;
+ if (failed) return rule;
+ if ( backtracking==0 ) {
+ rule.setConsequence( t );
+ }
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_defrule331); if (failed) return rule;
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return rule;
+ }
+ // $ANTLR end defrule
+
+
+ // $ANTLR start ruleAttribute
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:368:1: ruleAttribute[RuleDescr rule] : ( LEFT_PAREN 'declare' ( LEFT_PAREN d= salience RIGHT_PAREN )? RIGHT_PAREN )? ;
+ public final void ruleAttribute(RuleDescr rule) throws RecognitionException {
+ AttributeDescr d = null;
+
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:369:2: ( ( LEFT_PAREN 'declare' ( LEFT_PAREN d= salience RIGHT_PAREN )? RIGHT_PAREN )? )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:370:3: ( LEFT_PAREN 'declare' ( LEFT_PAREN d= salience RIGHT_PAREN )? RIGHT_PAREN )?
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:370:3: ( LEFT_PAREN 'declare' ( LEFT_PAREN d= salience RIGHT_PAREN )? RIGHT_PAREN )?
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0==LEFT_PAREN) ) {
+ int LA5_1 = input.LA(2);
+
+ if ( (LA5_1==DECLARE) ) {
+ alt5=1;
+ }
+ }
+ switch (alt5) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:370:5: LEFT_PAREN 'declare' ( LEFT_PAREN d= salience RIGHT_PAREN )? RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_ruleAttribute348); if (failed) return ;
+ match(input,DECLARE,FOLLOW_DECLARE_in_ruleAttribute350); if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:371:4: ( LEFT_PAREN d= salience RIGHT_PAREN )?
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( (LA4_0==LEFT_PAREN) ) {
+ alt4=1;
+ }
+ switch (alt4) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:371:6: LEFT_PAREN d= salience RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_ruleAttribute357); if (failed) return ;
+ pushFollow(FOLLOW_salience_in_ruleAttribute361);
+ d=salience();
+ _fsp--;
+ if (failed) return ;
+ if ( backtracking==0 ) {
+ rule.addAttribute( d );
+ }
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_ruleAttribute365); if (failed) return ;
+
+ }
+ break;
+
+ }
+
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_ruleAttribute372); if (failed) return ;
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end ruleAttribute
+
+
+ // $ANTLR start salience
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:375:1: salience returns [AttributeDescr d ] : loc= SALIENCE i= INT ;
+ public final AttributeDescr salience() throws RecognitionException {
+ AttributeDescr d = null;
+
+ Token loc=null;
+ Token i=null;
+
+
+ d = null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:379:2: (loc= SALIENCE i= INT )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:380:3: loc= SALIENCE i= INT
+ {
+ loc=(Token)input.LT(1);
+ match(input,SALIENCE,FOLLOW_SALIENCE_in_salience402); if (failed) return d;
+ i=(Token)input.LT(1);
+ match(input,INT,FOLLOW_INT_in_salience406); if (failed) return d;
+ if ( backtracking==0 ) {
+
+ d = new AttributeDescr( "salience", i.getText() );
+ d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+ d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+ d.setEndCharacter( ((CommonToken)i).getStopIndex() );
+
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return d;
+ }
+ // $ANTLR end salience
+
+
+ // $ANTLR start ce
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:390:1: ce[ConditionalElementDescr in_ce, Set declarations] : ( and_ce[in_ce, declarations] | or_ce[in_ce, declarations] | not_ce[in_ce, declarations] | exists_ce[in_ce, declarations] | eval_ce[in_ce, declarations] | normal_pattern[in_ce, declarations] | bound_pattern[in_ce, declarations] ) ;
+ public final void ce(ConditionalElementDescr in_ce, Set declarations) throws RecognitionException {
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:391:2: ( ( and_ce[in_ce, declarations] | or_ce[in_ce, declarations] | not_ce[in_ce, declarations] | exists_ce[in_ce, declarations] | eval_ce[in_ce, declarations] | normal_pattern[in_ce, declarations] | bound_pattern[in_ce, declarations] ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:391:4: ( and_ce[in_ce, declarations] | or_ce[in_ce, declarations] | not_ce[in_ce, declarations] | exists_ce[in_ce, declarations] | eval_ce[in_ce, declarations] | normal_pattern[in_ce, declarations] | bound_pattern[in_ce, declarations] )
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:391:4: ( and_ce[in_ce, declarations] | or_ce[in_ce, declarations] | not_ce[in_ce, declarations] | exists_ce[in_ce, declarations] | eval_ce[in_ce, declarations] | normal_pattern[in_ce, declarations] | bound_pattern[in_ce, declarations] )
+ int alt6=7;
+ int LA6_0 = input.LA(1);
+
+ if ( (LA6_0==LEFT_PAREN) ) {
+ switch ( input.LA(2) ) {
+ case NOT:
+ {
+ alt6=3;
+ }
+ break;
+ case EXISTS:
+ {
+ alt6=4;
+ }
+ break;
+ case OR:
+ {
+ alt6=2;
+ }
+ break;
+ case AND:
+ {
+ alt6=1;
+ }
+ break;
+ case NAME:
+ {
+ alt6=6;
+ }
+ break;
+ case TEST:
+ {
+ alt6=5;
+ }
+ break;
+ default:
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("391:4: ( and_ce[in_ce, declarations] | or_ce[in_ce, declarations] | not_ce[in_ce, declarations] | exists_ce[in_ce, declarations] | eval_ce[in_ce, declarations] | normal_pattern[in_ce, declarations] | bound_pattern[in_ce, declarations] )", 6, 1, input);
+
+ throw nvae;
+ }
+
+ }
+ else if ( (LA6_0==VAR) ) {
+ alt6=7;
+ }
+ else {
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("391:4: ( and_ce[in_ce, declarations] | or_ce[in_ce, declarations] | not_ce[in_ce, declarations] | exists_ce[in_ce, declarations] | eval_ce[in_ce, declarations] | normal_pattern[in_ce, declarations] | bound_pattern[in_ce, declarations] )", 6, 0, input);
+
+ throw nvae;
+ }
+ switch (alt6) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:391:8: and_ce[in_ce, declarations]
+ {
+ pushFollow(FOLLOW_and_ce_in_ce432);
+ and_ce(in_ce, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:392:7: or_ce[in_ce, declarations]
+ {
+ pushFollow(FOLLOW_or_ce_in_ce442);
+ or_ce(in_ce, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+ case 3 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:393:7: not_ce[in_ce, declarations]
+ {
+ pushFollow(FOLLOW_not_ce_in_ce451);
+ not_ce(in_ce, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+ case 4 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:394:7: exists_ce[in_ce, declarations]
+ {
+ pushFollow(FOLLOW_exists_ce_in_ce460);
+ exists_ce(in_ce, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+ case 5 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:395:8: eval_ce[in_ce, declarations]
+ {
+ pushFollow(FOLLOW_eval_ce_in_ce474);
+ eval_ce(in_ce, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+ case 6 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:396:7: normal_pattern[in_ce, declarations]
+ {
+ pushFollow(FOLLOW_normal_pattern_in_ce488);
+ normal_pattern(in_ce, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+ case 7 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:397:7: bound_pattern[in_ce, declarations]
+ {
+ pushFollow(FOLLOW_bound_pattern_in_ce497);
+ bound_pattern(in_ce, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end ce
+
+
+ // $ANTLR start and_ce
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:401:1: and_ce[ConditionalElementDescr in_ce, Set declarations] : LEFT_PAREN AND ( ce[andDescr, declarations] )+ RIGHT_PAREN ;
+ public final void and_ce(ConditionalElementDescr in_ce, Set declarations) throws RecognitionException {
+
+ AndDescr andDescr= null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:405:2: ( LEFT_PAREN AND ( ce[andDescr, declarations] )+ RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:405:4: LEFT_PAREN AND ( ce[andDescr, declarations] )+ RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_and_ce524); if (failed) return ;
+ match(input,AND,FOLLOW_AND_in_and_ce529); if (failed) return ;
+ if ( backtracking==0 ) {
+
+ andDescr = new AndDescr();
+ in_ce.addDescr( andDescr );
+
+ }
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:410:3: ( ce[andDescr, declarations] )+
+ int cnt7=0;
+ loop7:
+ do {
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0==LEFT_PAREN||LA7_0==VAR) ) {
+ alt7=1;
+ }
+
+
+ switch (alt7) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:410:3: ce[andDescr, declarations]
+ {
+ pushFollow(FOLLOW_ce_in_and_ce535);
+ ce(andDescr, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+
+ default :
+ if ( cnt7 >= 1 ) break loop7;
+ if (backtracking>0) {failed=true; return ;}
+ EarlyExitException eee =
+ new EarlyExitException(7, input);
+ throw eee;
+ }
+ cnt7++;
+ } while (true);
+
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_and_ce544); if (failed) return ;
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end and_ce
+
+
+ // $ANTLR start or_ce
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:414:1: or_ce[ConditionalElementDescr in_ce, Set declarations] : LEFT_PAREN OR ( ce[orDescr, declarations] )+ RIGHT_PAREN ;
+ public final void or_ce(ConditionalElementDescr in_ce, Set declarations) throws RecognitionException {
+
+ OrDescr orDescr= null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:418:2: ( LEFT_PAREN OR ( ce[orDescr, declarations] )+ RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:418:4: LEFT_PAREN OR ( ce[orDescr, declarations] )+ RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_or_ce572); if (failed) return ;
+ match(input,OR,FOLLOW_OR_in_or_ce577); if (failed) return ;
+ if ( backtracking==0 ) {
+
+ orDescr = new OrDescr();
+ in_ce.addDescr( orDescr );
+
+ }
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:423:3: ( ce[orDescr, declarations] )+
+ int cnt8=0;
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( (LA8_0==LEFT_PAREN||LA8_0==VAR) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:423:3: ce[orDescr, declarations]
+ {
+ pushFollow(FOLLOW_ce_in_or_ce583);
+ ce(orDescr, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+
+ default :
+ if ( cnt8 >= 1 ) break loop8;
+ if (backtracking>0) {failed=true; return ;}
+ EarlyExitException eee =
+ new EarlyExitException(8, input);
+ throw eee;
+ }
+ cnt8++;
+ } while (true);
+
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_or_ce592); if (failed) return ;
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end or_ce
+
+
+ // $ANTLR start not_ce
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:427:1: not_ce[ConditionalElementDescr in_ce, Set declarations] : LEFT_PAREN NOT ce[notDescr, declarations] RIGHT_PAREN ;
+ public final void not_ce(ConditionalElementDescr in_ce, Set declarations) throws RecognitionException {
+
+ NotDescr notDescr= null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:431:2: ( LEFT_PAREN NOT ce[notDescr, declarations] RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:431:4: LEFT_PAREN NOT ce[notDescr, declarations] RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_not_ce620); if (failed) return ;
+ match(input,NOT,FOLLOW_NOT_in_not_ce625); if (failed) return ;
+ if ( backtracking==0 ) {
+
+ notDescr = new NotDescr();
+ in_ce.addDescr( notDescr );
+
+ }
+ pushFollow(FOLLOW_ce_in_not_ce631);
+ ce(notDescr, declarations);
+ _fsp--;
+ if (failed) return ;
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_not_ce639); if (failed) return ;
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end not_ce
+
+
+ // $ANTLR start exists_ce
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:440:1: exists_ce[ConditionalElementDescr in_ce, Set declarations] : LEFT_PAREN EXISTS ce[existsDescr, declarations] RIGHT_PAREN ;
+ public final void exists_ce(ConditionalElementDescr in_ce, Set declarations) throws RecognitionException {
+
+ ExistsDescr existsDescr= null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:444:2: ( LEFT_PAREN EXISTS ce[existsDescr, declarations] RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:444:4: LEFT_PAREN EXISTS ce[existsDescr, declarations] RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_exists_ce668); if (failed) return ;
+ match(input,EXISTS,FOLLOW_EXISTS_in_exists_ce673); if (failed) return ;
+ if ( backtracking==0 ) {
+
+ existsDescr = new ExistsDescr();
+ in_ce.addDescr( existsDescr );
+
+ }
+ pushFollow(FOLLOW_ce_in_exists_ce679);
+ ce(existsDescr, declarations);
+ _fsp--;
+ if (failed) return ;
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_exists_ce687); if (failed) return ;
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end exists_ce
+
+
+ // $ANTLR start eval_ce
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:453:1: eval_ce[ConditionalElementDescr in_ce, Set declarations] : LEFT_PAREN TEST t= lisp_form RIGHT_PAREN ;
+ public final void eval_ce(ConditionalElementDescr in_ce, Set declarations) throws RecognitionException {
+ LispForm t = null;
+
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:454:2: ( LEFT_PAREN TEST t= lisp_form RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:454:4: LEFT_PAREN TEST t= lisp_form RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_eval_ce706); if (failed) return ;
+ match(input,TEST,FOLLOW_TEST_in_eval_ce711); if (failed) return ;
+ pushFollow(FOLLOW_lisp_form_in_eval_ce718);
+ t=lisp_form();
+ _fsp--;
+ if (failed) return ;
+ if ( backtracking==0 ) {
+ EvalDescr evalDescr = new EvalDescr(); evalDescr.setContent( t ); in_ce.addDescr( evalDescr );
+ }
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_eval_ce728); if (failed) return ;
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end eval_ce
+
+
+ // $ANTLR start normal_pattern
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:460:1: normal_pattern[ConditionalElementDescr in_ce, Set declarations] : LEFT_PAREN name= NAME ( field_constriant[top, declarations] )* RIGHT_PAREN ;
+ public final void normal_pattern(ConditionalElementDescr in_ce, Set declarations) throws RecognitionException {
+ Token name=null;
+
+
+ PatternDescr pattern = null;
+ ConditionalElementDescr top = null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:465:2: ( LEFT_PAREN name= NAME ( field_constriant[top, declarations] )* RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:465:4: LEFT_PAREN name= NAME ( field_constriant[top, declarations] )* RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_normal_pattern756); if (failed) return ;
+ name=(Token)input.LT(1);
+ match(input,NAME,FOLLOW_NAME_in_normal_pattern763); if (failed) return ;
+ if ( backtracking==0 ) {
+
+ pattern = new PatternDescr(name.getText());
+ in_ce.addDescr( pattern );
+ top = pattern.getConstraint();
+
+
+ }
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:472:3: ( field_constriant[top, declarations] )*
+ loop9:
+ do {
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0==LEFT_PAREN) ) {
+ alt9=1;
+ }
+
+
+ switch (alt9) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:472:3: field_constriant[top, declarations]
+ {
+ pushFollow(FOLLOW_field_constriant_in_normal_pattern769);
+ field_constriant(top, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+
+ default :
+ break loop9;
+ }
+ } while (true);
+
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_normal_pattern779); if (failed) return ;
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end normal_pattern
+
+
+ // $ANTLR start bound_pattern
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:478:1: bound_pattern[ConditionalElementDescr in_ce, Set declarations] : var= VAR ASSIGN_OP LEFT_PAREN name= NAME ( field_constriant[top, declarations] )* RIGHT_PAREN ;
+ public final void bound_pattern(ConditionalElementDescr in_ce, Set declarations) throws RecognitionException {
+ Token var=null;
+ Token name=null;
+
+
+ PatternDescr pattern = null;
+ String identifier = null;
+ ConditionalElementDescr top = null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:484:2: (var= VAR ASSIGN_OP LEFT_PAREN name= NAME ( field_constriant[top, declarations] )* RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:484:4: var= VAR ASSIGN_OP LEFT_PAREN name= NAME ( field_constriant[top, declarations] )* RIGHT_PAREN
+ {
+ var=(Token)input.LT(1);
+ match(input,VAR,FOLLOW_VAR_in_bound_pattern807); if (failed) return ;
+ if ( backtracking==0 ) {
+
+ identifier = var.getText();
+
+ }
+ match(input,ASSIGN_OP,FOLLOW_ASSIGN_OP_in_bound_pattern813); if (failed) return ;
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_bound_pattern815); if (failed) return ;
+ name=(Token)input.LT(1);
+ match(input,NAME,FOLLOW_NAME_in_bound_pattern819); if (failed) return ;
+ if ( backtracking==0 ) {
+
+ pattern = new PatternDescr(name.getText());
+ pattern.setIdentifier( identifier );
+ in_ce.addDescr( pattern );
+ top = pattern.getConstraint();
+
+ }
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:494:3: ( field_constriant[top, declarations] )*
+ loop10:
+ do {
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0==LEFT_PAREN) ) {
+ alt10=1;
+ }
+
+
+ switch (alt10) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:494:3: field_constriant[top, declarations]
+ {
+ pushFollow(FOLLOW_field_constriant_in_bound_pattern828);
+ field_constriant(top, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+
+ default :
+ break loop10;
+ }
+ } while (true);
+
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_bound_pattern835); if (failed) return ;
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end bound_pattern
+
+
+ // $ANTLR start field_constriant
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:498:1: field_constriant[ConditionalElementDescr base, Set declarations] : LEFT_PAREN f= NAME or_restr_connective[top, base, fc, declarations] RIGHT_PAREN ;
+ public final void field_constriant(ConditionalElementDescr base, Set declarations) throws RecognitionException {
+ Token f=null;
+
+
+ List list = new ArrayList();
+ FieldBindingDescr fbd = null;
+ FieldConstraintDescr fc = null;
+ RestrictionConnectiveDescr top = null;
+ String op = "==";
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:506:2: ( LEFT_PAREN f= NAME or_restr_connective[top, base, fc, declarations] RIGHT_PAREN )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:507:3: LEFT_PAREN f= NAME or_restr_connective[top, base, fc, declarations] RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_field_constriant866); if (failed) return ;
+ f=(Token)input.LT(1);
+ match(input,NAME,FOLLOW_NAME_in_field_constriant870); if (failed) return ;
+ if ( backtracking==0 ) {
+
+ fc = new FieldConstraintDescr(f.getText());
+ fc.setLocation( offset(f.getLine()), f.getCharPositionInLine() );
+ fc.setStartCharacter( ((CommonToken)f).getStartIndex() );
+ base.addDescr( fc );
+ top = fc.getRestriction();
+
+ }
+ pushFollow(FOLLOW_or_restr_connective_in_field_constriant885);
+ or_restr_connective(top, base, fc, declarations);
+ _fsp--;
+ if (failed) return ;
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_field_constriant891); if (failed) return ;
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end field_constriant
+
+
+ // $ANTLR start or_restr_connective
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:534:1: or_restr_connective[ RestrictionConnectiveDescr rcBase, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ] options {backtrack=true; } : and_restr_connective[or, ceBase, fcBase, declarations] ( options {backtrack=true; } : PIPE and_restr_connective[or, ceBase, fcBase, declarations] )* ;
+ public final void or_restr_connective(RestrictionConnectiveDescr rcBase, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations) throws RecognitionException {
+
+ RestrictionConnectiveDescr or = new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR);
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:541: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\\clp\\CLPMVEL.g:542: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_connective930);
+ and_restr_connective(or, ceBase, fcBase, declarations);
+ _fsp--;
+ if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:543:3: ( options {backtrack=true; } : PIPE and_restr_connective[or, ceBase, fcBase, declarations] )*
+ loop11:
+ do {
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( (LA11_0==PIPE) ) {
+ alt11=1;
+ }
+
+
+ switch (alt11) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:545:6: PIPE and_restr_connective[or, ceBase, fcBase, declarations]
+ {
+ match(input,PIPE,FOLLOW_PIPE_in_or_restr_connective954); if (failed) return ;
+ if ( backtracking==0 ) {
+
+ location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+
+ }
+ pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective964);
+ and_restr_connective(or, ceBase, fcBase, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+
+ default :
+ break loop11;
+ }
+ } while (true);
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ if( or.getRestrictions().size() == 1 ) {
+ rcBase.addOrMerge( (RestrictionDescr) or.getRestrictions().get( 0 ) );
+ } else if ( or.getRestrictions().size() > 1 ) {
+ rcBase.addRestriction( or );
+ }
+
+ }
+ return ;
+ }
+ // $ANTLR end or_restr_connective
+
+
+ // $ANTLR start and_restr_connective
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:560:1: and_restr_connective[ RestrictionConnectiveDescr rcBase, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ] : restriction[and, ceBase, fcBase, declarations] ( AMPERSAND restriction[and, ceBase, fcBase, declarations] )* ;
+ public final void and_restr_connective(RestrictionConnectiveDescr rcBase, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations) throws RecognitionException {
+
+ RestrictionConnectiveDescr and = new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND);
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:564:2: ( restriction[and, ceBase, fcBase, declarations] ( AMPERSAND restriction[and, ceBase, fcBase, declarations] )* )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:565:3: restriction[and, ceBase, fcBase, declarations] ( AMPERSAND restriction[and, ceBase, fcBase, declarations] )*
+ {
+ pushFollow(FOLLOW_restriction_in_and_restr_connective996);
+ restriction(and, ceBase, fcBase, declarations);
+ _fsp--;
+ if (failed) return ;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:566:3: ( AMPERSAND restriction[and, ceBase, fcBase, declarations] )*
+ loop12:
+ do {
+ int alt12=2;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0==AMPERSAND) ) {
+ alt12=1;
+ }
+
+
+ switch (alt12) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:566:5: AMPERSAND restriction[and, ceBase, fcBase, declarations]
+ {
+ match(input,AMPERSAND,FOLLOW_AMPERSAND_in_and_restr_connective1004); if (failed) return ;
+ pushFollow(FOLLOW_restriction_in_and_restr_connective1006);
+ restriction(and, ceBase, fcBase, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+
+ default :
+ break loop12;
+ }
+ } while (true);
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+
+ if( and.getRestrictions().size() == 1) {
+ rcBase.addOrMerge( (RestrictionDescr) and.getRestrictions().get( 0 ) );
+ } else if ( and.getRestrictions().size() > 1 ) {
+ rcBase.addRestriction( and );
+ }
+
+ }
+ return ;
+ }
+ // $ANTLR end and_restr_connective
+
+
+ // $ANTLR start restriction
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:585:1: restriction[RestrictionConnectiveDescr rc, ConditionalElementDescr base, FieldConstraintDescr fcBase, Set declarations ] : ( TILDE )? ( predicate_constraint[rc, op, base] | return_value_restriction[op, rc] | variable_restriction[op, rc, base, fcBase, declarations] | lc= literal_restriction ) ;
+ public final void restriction(RestrictionConnectiveDescr rc, ConditionalElementDescr base, FieldConstraintDescr fcBase, Set declarations) throws RecognitionException {
+ String lc = null;
+
+
+
+ String op = "==";
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:589:2: ( ( TILDE )? ( predicate_constraint[rc, op, base] | return_value_restriction[op, rc] | variable_restriction[op, rc, base, fcBase, declarations] | lc= literal_restriction ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:589:4: ( TILDE )? ( predicate_constraint[rc, op, base] | return_value_restriction[op, rc] | variable_restriction[op, rc, base, fcBase, declarations] | lc= literal_restriction )
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:589:4: ( TILDE )?
+ int alt13=2;
+ int LA13_0 = input.LA(1);
+
+ if ( (LA13_0==TILDE) ) {
+ alt13=1;
+ }
+ switch (alt13) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:589:5: TILDE
+ {
+ match(input,TILDE,FOLLOW_TILDE_in_restriction1039); if (failed) return ;
+ if ( backtracking==0 ) {
+ op = "!=";
+ }
+
+ }
+ break;
+
+ }
+
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:590:3: ( predicate_constraint[rc, op, base] | return_value_restriction[op, rc] | variable_restriction[op, rc, base, fcBase, declarations] | lc= literal_restriction )
+ int alt14=4;
+ switch ( input.LA(1) ) {
+ case COLON:
+ {
+ alt14=1;
+ }
+ break;
+ case EQUALS:
+ {
+ alt14=2;
+ }
+ break;
+ case VAR:
+ {
+ alt14=3;
+ }
+ break;
+ case NAME:
+ case STRING:
+ case INT:
+ case FLOAT:
+ case BOOL:
+ case NULL:
+ {
+ alt14=4;
+ }
+ break;
+ default:
+ if (backtracking>0) {failed=true; return ;}
+ NoViableAltException nvae =
+ new NoViableAltException("590:3: ( predicate_constraint[rc, op, base] | return_value_restriction[op, rc] | variable_restriction[op, rc, base, fcBase, declarations] | lc= literal_restriction )", 14, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt14) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:590:5: predicate_constraint[rc, op, base]
+ {
+ pushFollow(FOLLOW_predicate_constraint_in_restriction1055);
+ predicate_constraint(rc, op, base);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:591:7: return_value_restriction[op, rc]
+ {
+ pushFollow(FOLLOW_return_value_restriction_in_restriction1071);
+ return_value_restriction(op, rc);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+ case 3 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:592:7: variable_restriction[op, rc, base, fcBase, declarations]
+ {
+ pushFollow(FOLLOW_variable_restriction_in_restriction1080);
+ variable_restriction(op, rc, base, fcBase, declarations);
+ _fsp--;
+ if (failed) return ;
+
+ }
+ break;
+ case 4 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:593:8: lc= literal_restriction
+ {
+ pushFollow(FOLLOW_literal_restriction_in_restriction1092);
+ lc=literal_restriction();
+ _fsp--;
+ if (failed) return ;
+ if ( backtracking==0 ) {
+
+ rc.addRestriction( new LiteralRestrictionDescr(op, lc) );
+ op = "==";
+
+ }
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end restriction
+
+
+ // $ANTLR start predicate_constraint
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:600:1: predicate_constraint[RestrictionConnectiveDescr rc, String op, ConditionalElementDescr base] : COLON t= lisp_form ;
+ public final void predicate_constraint(RestrictionConnectiveDescr rc, String op, ConditionalElementDescr base) throws RecognitionException {
+ LispForm t = null;
+
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:601:2: ( COLON t= lisp_form )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:601:4: COLON t= lisp_form
+ {
+ match(input,COLON,FOLLOW_COLON_in_predicate_constraint1125); if (failed) return ;
+ pushFollow(FOLLOW_lisp_form_in_predicate_constraint1131);
+ t=lisp_form();
+ _fsp--;
+ if (failed) return ;
+ if ( backtracking==0 ) {
+ rc.addRestriction( new PredicateDescr( t ) );
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end predicate_constraint
+
+
+ // $ANTLR start return_value_restriction
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:607:1: return_value_restriction[String op, RestrictionConnectiveDescr rc] : EQUALS t= lisp_form ;
+ public final void return_value_restriction(String op, RestrictionConnectiveDescr rc) throws RecognitionException {
+ LispForm t = null;
+
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:608:2: ( EQUALS t= lisp_form )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:608:4: EQUALS t= lisp_form
+ {
+ match(input,EQUALS,FOLLOW_EQUALS_in_return_value_restriction1150); if (failed) return ;
+ pushFollow(FOLLOW_lisp_form_in_return_value_restriction1157);
+ t=lisp_form();
+ _fsp--;
+ if (failed) return ;
+ if ( backtracking==0 ) {
+ rc.addRestriction( new ReturnValueRestrictionDescr (op, t ) );
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end return_value_restriction
+
+
+ // $ANTLR start variable_restriction
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:613:1: variable_restriction[String op, RestrictionConnectiveDescr rc, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ] : VAR ;
+ public final void variable_restriction(String op, RestrictionConnectiveDescr rc, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations) throws RecognitionException {
+ Token VAR1=null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:614:2: ( VAR )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:614:4: VAR
+ {
+ VAR1=(Token)input.LT(1);
+ match(input,VAR,FOLLOW_VAR_in_variable_restriction1176); if (failed) return ;
+ if ( backtracking==0 ) {
+
+ if ( declarations.contains( VAR1.getText() ) ) {
+ rc.addRestriction( new VariableRestrictionDescr(op, VAR1.getText()) );
+ } else {
+ FieldBindingDescr fbd = new FieldBindingDescr();
+ fbd.setIdentifier( VAR1.getText() );
+ fbd.setFieldName( fcBase.getFieldName() );
+ ceBase.insertBeforeLast( FieldConstraintDescr.class, fbd );
+ declarations.add( VAR1.getText() );
+ }
+
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return ;
+ }
+ // $ANTLR end variable_restriction
+
+
+ // $ANTLR start literal_restriction
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:628:1: literal_restriction returns [String text] : t= literal ;
+ public final String literal_restriction() throws RecognitionException {
+ String text = null;
+
+ String t = null;
+
+
+
+ text = null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:632:2: (t= literal )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:633:6: t= literal
+ {
+ pushFollow(FOLLOW_literal_in_literal_restriction1209);
+ t=literal();
+ _fsp--;
+ if (failed) return text;
+ if ( backtracking==0 ) {
+
+ text = t;
+
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return text;
+ }
+ // $ANTLR end literal_restriction
+
+
+ // $ANTLR start lisp_form
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:650:1: lisp_form returns [LispForm lispForm] : LEFT_PAREN (t= NAME | t= VAR ) (a= lisp_atom | l= lisp_form )* RIGHT_PAREN ;
+ public final LispForm lisp_form() throws RecognitionException {
+ LispForm lispForm = null;
+
+ Token t=null;
+ SExpression a = null;
+
+ LispForm l = null;
+
+
+
+ List list = new ArrayList();
+ lispForm = null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:655: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\\clp\\CLPMVEL.g:655:4: LEFT_PAREN (t= NAME | t= VAR ) (a= lisp_atom | l= lisp_form )* RIGHT_PAREN
+ {
+ match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lisp_form1237); if (failed) return lispForm;
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:657:3: (t= NAME | t= VAR )
+ int alt15=2;
+ int LA15_0 = input.LA(1);
+
+ if ( (LA15_0==NAME) ) {
+ alt15=1;
+ }
+ else if ( (LA15_0==VAR) ) {
+ alt15=2;
+ }
+ else {
+ if (backtracking>0) {failed=true; return lispForm;}
+ NoViableAltException nvae =
+ new NoViableAltException("657:3: (t= NAME | t= VAR )", 15, 0, input);
+
+ throw nvae;
+ }
+ switch (alt15) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:658:7: t= NAME
+ {
+ t=(Token)input.LT(1);
+ match(input,NAME,FOLLOW_NAME_in_lisp_form1254); if (failed) return lispForm;
+ if ( backtracking==0 ) {
+ list.add( new SymbolLispAtom( t.getText() ) );
+ }
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:660:7: t= VAR
+ {
+ t=(Token)input.LT(1);
+ match(input,VAR,FOLLOW_VAR_in_lisp_form1274); if (failed) return lispForm;
+ if ( backtracking==0 ) {
+ list.add( new VariableLispAtom( t.getText(), context ) );
+ }
+
+ }
+ break;
+
+ }
+
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:662:3: (a= lisp_atom | l= lisp_form )*
+ loop16:
+ do {
+ int alt16=3;
+ int LA16_0 = input.LA(1);
+
+ if ( (LA16_0==NAME||LA16_0==STRING||LA16_0==INT||LA16_0==VAR||(LA16_0>=FLOAT && LA16_0<=NULL)) ) {
+ alt16=1;
+ }
+ else if ( (LA16_0==LEFT_PAREN) ) {
+ alt16=2;
+ }
+
+
+ switch (alt16) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:662:6: a= lisp_atom
+ {
+ pushFollow(FOLLOW_lisp_atom_in_lisp_form1297);
+ a=lisp_atom();
+ _fsp--;
+ if (failed) return lispForm;
+ if ( backtracking==0 ) {
+ list.add( a );
+ }
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:663:6: l= lisp_form
+ {
+ pushFollow(FOLLOW_lisp_form_in_lisp_form1308);
+ l=lisp_form();
+ _fsp--;
+ if (failed) return lispForm;
+ if ( backtracking==0 ) {
+ list.add( l );
+ }
+
+ }
+ break;
+
+ default :
+ break loop16;
+ }
+ } while (true);
+
+ match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lisp_form1335); if (failed) return lispForm;
+ if ( backtracking==0 ) {
+ lispForm = new LispForm( (org.drools.clips.SExpression[] ) list.toArray( new SExpression[ list.size () ] ) );
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return lispForm;
+ }
+ // $ANTLR end lisp_form
+
+
+ // $ANTLR start lisp_atom
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:669:1: lisp_atom returns [SExpression sExpression] : (t= VAR | t= STRING | t= FLOAT | t= INT | t= BOOL | t= NULL | t= NAME ) ;
+ public final SExpression lisp_atom() throws RecognitionException {
+ SExpression sExpression = null;
+
+ Token t=null;
+
+
+ sExpression = null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:673:2: ( (t= VAR | t= STRING | t= FLOAT | t= INT | t= BOOL | t= NULL | t= NAME ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:674:3: (t= VAR | t= STRING | t= FLOAT | t= INT | t= BOOL | t= NULL | t= NAME )
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:674:3: (t= VAR | t= STRING | t= FLOAT | t= INT | t= BOOL | t= NULL | t= NAME )
+ int alt17=7;
+ switch ( input.LA(1) ) {
+ case VAR:
+ {
+ alt17=1;
+ }
+ break;
+ case STRING:
+ {
+ alt17=2;
+ }
+ break;
+ case FLOAT:
+ {
+ alt17=3;
+ }
+ break;
+ case INT:
+ {
+ alt17=4;
+ }
+ break;
+ case BOOL:
+ {
+ alt17=5;
+ }
+ break;
+ case NULL:
+ {
+ alt17=6;
+ }
+ break;
+ case NAME:
+ {
+ alt17=7;
+ }
+ break;
+ default:
+ if (backtracking>0) {failed=true; return sExpression;}
+ NoViableAltException nvae =
+ new NoViableAltException("674:3: (t= VAR | t= STRING | t= FLOAT | t= INT | t= BOOL | t= NULL | t= NAME )", 17, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt17) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:675:6: t= VAR
+ {
+ t=(Token)input.LT(1);
+ match(input,VAR,FOLLOW_VAR_in_lisp_atom1379); if (failed) return sExpression;
+ if ( backtracking==0 ) {
+ sExpression = new VariableLispAtom( t.getText(), context );
+ }
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:676:6: t= STRING
+ {
+ t=(Token)input.LT(1);
+ match(input,STRING,FOLLOW_STRING_in_lisp_atom1391); if (failed) return sExpression;
+ if ( backtracking==0 ) {
+ sExpression = new StringLispAtom( getString( t ) );
+ }
+
+ }
+ break;
+ case 3 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:677:6: t= FLOAT
+ {
+ t=(Token)input.LT(1);
+ match(input,FLOAT,FOLLOW_FLOAT_in_lisp_atom1413); if (failed) return sExpression;
+ if ( backtracking==0 ) {
+ sExpression = new FloatLispAtom( t.getText() );
+ }
+
+ }
+ break;
+ case 4 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:678:6: t= INT
+ {
+ t=(Token)input.LT(1);
+ match(input,INT,FOLLOW_INT_in_lisp_atom1425); if (failed) return sExpression;
+ if ( backtracking==0 ) {
+ sExpression = new IntLispAtom( t.getText() );
+ }
+
+ }
+ break;
+ case 5 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:679:7: t= BOOL
+ {
+ t=(Token)input.LT(1);
+ match(input,BOOL,FOLLOW_BOOL_in_lisp_atom1438); if (failed) return sExpression;
+ if ( backtracking==0 ) {
+ sExpression = new BoolLispAtom( t.getText() );
+ }
+
+ }
+ break;
+ case 6 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:680:7: t= NULL
+ {
+ t=(Token)input.LT(1);
+ match(input,NULL,FOLLOW_NULL_in_lisp_atom1454); if (failed) return sExpression;
+ if ( backtracking==0 ) {
+ sExpression = new NullLispAtom( null );
+ }
+
+ }
+ break;
+ case 7 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:681:14: t= NAME
+ {
+ t=(Token)input.LT(1);
+ match(input,NAME,FOLLOW_NAME_in_lisp_atom1480); if (failed) return sExpression;
+ if ( backtracking==0 ) {
+ sExpression = new SymbolLispAtom( "\"" +t.getText() + "\"");
+ }
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return sExpression;
+ }
+ // $ANTLR end lisp_atom
+
+
+ // $ANTLR start literal
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:686:1: literal returns [String text] : (t= STRING | t= NAME | t= INT | t= FLOAT | t= BOOL | t= NULL ) ;
+ public final String literal() throws RecognitionException {
+ String text = null;
+
+ Token t=null;
+
+
+ text = null;
+
+ try {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:690:2: ( (t= STRING | t= NAME | t= INT | t= FLOAT | t= BOOL | t= NULL ) )
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:690:4: (t= STRING | t= NAME | t= INT | t= FLOAT | t= BOOL | t= NULL )
+ {
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:690:4: (t= STRING | t= NAME | t= INT | t= FLOAT | t= BOOL | t= NULL )
+ int alt18=6;
+ switch ( input.LA(1) ) {
+ case STRING:
+ {
+ alt18=1;
+ }
+ break;
+ case NAME:
+ {
+ alt18=2;
+ }
+ break;
+ case INT:
+ {
+ alt18=3;
+ }
+ break;
+ case FLOAT:
+ {
+ alt18=4;
+ }
+ break;
+ case BOOL:
+ {
+ alt18=5;
+ }
+ break;
+ case NULL:
+ {
+ alt18=6;
+ }
+ break;
+ default:
+ if (backtracking>0) {failed=true; return text;}
+ NoViableAltException nvae =
+ new NoViableAltException("690:4: (t= STRING | t= NAME | t= INT | t= FLOAT | t= BOOL | t= NULL )", 18, 0, input);
+
+ throw nvae;
+ }
+
+ switch (alt18) {
+ case 1 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:690:8: t= STRING
+ {
+ t=(Token)input.LT(1);
+ match(input,STRING,FOLLOW_STRING_in_literal1524); if (failed) return text;
+ if ( backtracking==0 ) {
+ text = getString( t );
+ }
+
+ }
+ break;
+ case 2 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:691:7: t= NAME
+ {
+ t=(Token)input.LT(1);
+ match(input,NAME,FOLLOW_NAME_in_literal1537); if (failed) return text;
+ if ( backtracking==0 ) {
+ text = t.getText();
+ }
+
+ }
+ break;
+ case 3 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:692:7: t= INT
+ {
+ t=(Token)input.LT(1);
+ match(input,INT,FOLLOW_INT_in_literal1553); if (failed) return text;
+ if ( backtracking==0 ) {
+ text = t.getText();
+ }
+
+ }
+ break;
+ case 4 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:693:7: t= FLOAT
+ {
+ t=(Token)input.LT(1);
+ match(input,FLOAT,FOLLOW_FLOAT_in_literal1568); if (failed) return text;
+ if ( backtracking==0 ) {
+ text = t.getText();
+ }
+
+ }
+ break;
+ case 5 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:694:7: t= BOOL
+ {
+ t=(Token)input.LT(1);
+ match(input,BOOL,FOLLOW_BOOL_in_literal1581); if (failed) return text;
+ if ( backtracking==0 ) {
+ text = t.getText();
+ }
+
+ }
+ break;
+ case 6 :
+ // C:\\dev\\drools\\trunk\\drools-clips\\src\\main\\resources\\org\\drools\\clp\\CLPMVEL.g:695:7: t= NULL
+ {
+ t=(Token)input.LT(1);
+ match(input,NULL,FOLLOW_NULL_in_literal1595); if (failed) return text;
+ if ( backtracking==0 ) {
+ text = null;
+ }
+
+ }
+ break;
+
+ }
+
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+ finally {
+ }
+ return text;
+ }
+ // $ANTLR end literal
+
+
+
+
+ public static final BitSet FOLLOW_importDescr_in_eval60 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_deffunction_in_eval71 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_defrule_in_eval84 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_lisp_form_in_eval96 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_importDescr123 = new BitSet(new long[]{0x0000100000000000L});
+ public static final BitSet FOLLOW_44_in_importDescr125 = new BitSet(new long[]{0x0000000000000020L});
+ public static final BitSet FOLLOW_NAME_in_importDescr129 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_importDescr133 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_deffunction168 = new BitSet(new long[]{0x0000000000000080L});
+ public static final BitSet FOLLOW_DEFFUNCTION_in_deffunction178 = new BitSet(new long[]{0x0000000007020A20L});
+ public static final BitSet FOLLOW_lisp_atom_in_deffunction188 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_lisp_form_in_deffunction198 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_lisp_form_in_deffunction207 = new BitSet(new long[]{0x0000000000000050L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_deffunction229 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_defrule266 = new BitSet(new long[]{0x0000000000000100L});
+ public static final BitSet FOLLOW_DEFRULE_in_defrule274 = new BitSet(new long[]{0x0000000000000020L});
+ public static final BitSet FOLLOW_NAME_in_defrule278 = new BitSet(new long[]{0x0000000000000200L});
+ public static final BitSet FOLLOW_STRING_in_defrule290 = new BitSet(new long[]{0x0000200000020010L});
+ public static final BitSet FOLLOW_ruleAttribute_in_defrule296 = new BitSet(new long[]{0x0000200000020010L});
+ public static final BitSet FOLLOW_ce_in_defrule304 = new BitSet(new long[]{0x0000200000020010L});
+ public static final BitSet FOLLOW_45_in_defrule313 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_lisp_form_in_defrule322 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_defrule331 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_ruleAttribute348 = new BitSet(new long[]{0x0000000020000000L});
+ public static final BitSet FOLLOW_DECLARE_in_ruleAttribute350 = new BitSet(new long[]{0x0000000000000050L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_ruleAttribute357 = new BitSet(new long[]{0x0000000000000400L});
+ public static final BitSet FOLLOW_salience_in_ruleAttribute361 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_ruleAttribute365 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_ruleAttribute372 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_SALIENCE_in_salience402 = new BitSet(new long[]{0x0000000000000800L});
+ public static final BitSet FOLLOW_INT_in_salience406 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_and_ce_in_ce432 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_or_ce_in_ce442 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_not_ce_in_ce451 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_exists_ce_in_ce460 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_eval_ce_in_ce474 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_normal_pattern_in_ce488 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_bound_pattern_in_ce497 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_and_ce524 = new BitSet(new long[]{0x0000000000001000L});
+ public static final BitSet FOLLOW_AND_in_and_ce529 = new BitSet(new long[]{0x0000000000020010L});
+ public static final BitSet FOLLOW_ce_in_and_ce535 = new BitSet(new long[]{0x0000000000020050L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_and_ce544 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_or_ce572 = new BitSet(new long[]{0x0000000000002000L});
+ public static final BitSet FOLLOW_OR_in_or_ce577 = new BitSet(new long[]{0x0000000000020010L});
+ public static final BitSet FOLLOW_ce_in_or_ce583 = new BitSet(new long[]{0x0000000000020050L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_or_ce592 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_not_ce620 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_NOT_in_not_ce625 = new BitSet(new long[]{0x0000000000020010L});
+ public static final BitSet FOLLOW_ce_in_not_ce631 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_not_ce639 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_exists_ce668 = new BitSet(new long[]{0x0000000000008000L});
+ public static final BitSet FOLLOW_EXISTS_in_exists_ce673 = new BitSet(new long[]{0x0000000000020010L});
+ public static final BitSet FOLLOW_ce_in_exists_ce679 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_exists_ce687 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_eval_ce706 = new BitSet(new long[]{0x0000000000010000L});
+ public static final BitSet FOLLOW_TEST_in_eval_ce711 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_lisp_form_in_eval_ce718 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_eval_ce728 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_normal_pattern756 = new BitSet(new long[]{0x0000000000000020L});
+ public static final BitSet FOLLOW_NAME_in_normal_pattern763 = new BitSet(new long[]{0x0000000000000050L});
+ public static final BitSet FOLLOW_field_constriant_in_normal_pattern769 = new BitSet(new long[]{0x0000000000000050L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_normal_pattern779 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_VAR_in_bound_pattern807 = new BitSet(new long[]{0x0000000000040000L});
+ public static final BitSet FOLLOW_ASSIGN_OP_in_bound_pattern813 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_bound_pattern815 = new BitSet(new long[]{0x0000000000000020L});
+ public static final BitSet FOLLOW_NAME_in_bound_pattern819 = new BitSet(new long[]{0x0000000000000050L});
+ public static final BitSet FOLLOW_field_constriant_in_bound_pattern828 = new BitSet(new long[]{0x0000000000000050L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_bound_pattern835 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_field_constriant866 = new BitSet(new long[]{0x0000000000000020L});
+ public static final BitSet FOLLOW_NAME_in_field_constriant870 = new BitSet(new long[]{0x0000000007E20A20L});
+ public static final BitSet FOLLOW_or_restr_connective_in_field_constriant885 = new BitSet(new long[]{0x0000000000000040L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_field_constriant891 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective930 = new BitSet(new long[]{0x0000000000080002L});
+ public static final BitSet FOLLOW_PIPE_in_or_restr_connective954 = new BitSet(new long[]{0x0000000007E20A20L});
+ public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective964 = new BitSet(new long[]{0x0000000000080002L});
+ public static final BitSet FOLLOW_restriction_in_and_restr_connective996 = new BitSet(new long[]{0x0000000000100002L});
+ public static final BitSet FOLLOW_AMPERSAND_in_and_restr_connective1004 = new BitSet(new long[]{0x0000000007E20A20L});
+ public static final BitSet FOLLOW_restriction_in_and_restr_connective1006 = new BitSet(new long[]{0x0000000000100002L});
+ public static final BitSet FOLLOW_TILDE_in_restriction1039 = new BitSet(new long[]{0x0000000007C20A20L});
+ public static final BitSet FOLLOW_predicate_constraint_in_restriction1055 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_return_value_restriction_in_restriction1071 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_variable_restriction_in_restriction1080 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_literal_restriction_in_restriction1092 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_COLON_in_predicate_constraint1125 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_lisp_form_in_predicate_constraint1131 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_EQUALS_in_return_value_restriction1150 = new BitSet(new long[]{0x0000000000000010L});
+ public static final BitSet FOLLOW_lisp_form_in_return_value_restriction1157 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_VAR_in_variable_restriction1176 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_literal_in_literal_restriction1209 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_PAREN_in_lisp_form1237 = new BitSet(new long[]{0x0000000000020020L});
+ public static final BitSet FOLLOW_NAME_in_lisp_form1254 = new BitSet(new long[]{0x0000000007020A70L});
+ public static final BitSet FOLLOW_VAR_in_lisp_form1274 = new BitSet(new long[]{0x0000000007020A70L});
+ public static final BitSet FOLLOW_lisp_atom_in_lisp_form1297 = new BitSet(new long[]{0x0000000007020A70L});
+ public static final BitSet FOLLOW_lisp_form_in_lisp_form1308 = new BitSet(new long[]{0x0000000007020A70L});
+ public static final BitSet FOLLOW_RIGHT_PAREN_in_lisp_form1335 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_VAR_in_lisp_atom1379 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_STRING_in_lisp_atom1391 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_FLOAT_in_lisp_atom1413 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_INT_in_lisp_atom1425 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_BOOL_in_lisp_atom1438 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_NULL_in_lisp_atom1454 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_NAME_in_lisp_atom1480 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_STRING_in_literal1524 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_NAME_in_literal1537 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_INT_in_literal1553 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_FLOAT_in_literal1568 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_BOOL_in_literal1581 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_NULL_in_literal1595 = new BitSet(new long[]{0x0000000000000002L});
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CreateListFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CreateListFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/CreateListFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,25 @@
+package org.drools.clips;
+
+public class CreateListFunction implements Function {
+ private static final String name = "create$";
+
+ public String getName() {
+ return name;
+ }
+
+ public void dump(LispForm lispForm, Appendable appendable, MVELBuildContext context) {
+ SExpression[] sExpressions = lispForm.getSExpressions();
+
+ appendable.append("[");
+
+ for ( int i = 1, length = sExpressions.length; i < length; i++) {
+
+ FunctionHandlers.dump( sExpressions[i], appendable, context );
+
+ if ( i != length -1 ) {
+ appendable.append( "," );
+ }
+ }
+ appendable.append("]");
+ }
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/EqFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/EqFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/EqFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,16 @@
+package org.drools.clips;
+
+import org.drools.clips.functions.BaseInfixFunction;
+
+public class EqFunction extends BaseInfixFunction {
+ private static final String name = "eq";
+ private static final String mappedSymbol = "==";
+
+ public String getName() {
+ return name;
+ }
+
+ public String getMappedSymbol() {
+ return mappedSymbol;
+ }
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FloatLispAtom.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FloatLispAtom.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FloatLispAtom.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,12 @@
+/**
+ *
+ */
+package org.drools.clips;
+
+public class FloatLispAtom extends LispAtom {
+
+ public FloatLispAtom(String value) {
+ super(value);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Function.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Function.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Function.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,9 @@
+package org.drools.clips;
+
+public interface Function {
+
+ public abstract String getName();
+
+ public abstract void dump(LispForm lispForm, Appendable appendable, MVELBuildContext context);
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FunctionContext.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FunctionContext.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FunctionContext.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,15 @@
+package org.drools.clips;
+
+import java.util.Map;
+
+import org.mvel.ast.Function;
+
+public interface FunctionContext {
+
+ public abstract void addFunction(Function function);
+
+ public abstract boolean removeFunction(String functionName);
+
+ public abstract Map<String, Function> getFunctions();
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FunctionHandlers.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FunctionHandlers.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/FunctionHandlers.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,72 @@
+package org.drools.clips;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.lang.descr.FunctionDescr;
+
+public class FunctionHandlers {
+ public static final FunctionHandlers INSTANCE = new FunctionHandlers();
+
+ public static FunctionHandlers getInstance() {
+ return INSTANCE;
+ }
+
+ private Map<String, Function> map = new HashMap<String, Function>();
+
+ private FunctionHandlers() {
+
+ }
+
+ public Function getFunction(String name) {
+ return this.map.get( name );
+ }
+
+ public void registerFunction(Function function) {
+ this.map.put( function.getName(), function );
+ }
+
+ public static void dump(SExpression sExpression, Appendable appendable, MVELBuildContext context) {
+ if ( sExpression instanceof LispAtom ) {
+ appendable.append( ( ( LispAtom ) sExpression).getValue() );
+ } else {
+ LispForm form = (LispForm) sExpression;
+ String functionName = ( (LispAtom) form.getSExpressions()[0]).getValue();
+ Function function = FunctionHandlers.getInstance().getFunction( functionName );
+ if ( function != null ) {
+ function.dump(form, appendable, context );
+ } else {
+ // execute as user function
+ appendable.append( functionName + "(" );
+ for ( int i = 1, length = form.getSExpressions().length; i < length; i++ ) {
+ dump( form.getSExpressions()[i], appendable, context );
+ if ( i < length -1 ) {
+ appendable.append( ", " );
+ }
+ }
+ appendable.append( ")" );
+ }
+ }
+ }
+
+ public static FunctionDescr createFunctionDescr(SExpression name, LispForm params, List<SExpression> content) {
+ FunctionDescr descr = new FunctionDescr(((LispAtom)name).getValue(), "Object" );
+ for ( SExpression sExpr : params.getSExpressions() ) {
+ String param = ((LispAtom)sExpr).getValue().trim();
+ if ( param.charAt( 0 ) == '"' ) {
+ param = param.substring( 1 );
+ }
+
+ if ( param.charAt( param.length()-1 ) == '"' ) {
+ param = param.substring( 0, param.length()-1 );
+ }
+ descr.addParameter( "Object", param );
+ }
+
+ descr.setContent( content );
+
+ return descr;
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/GeneralParseException.java (from rev 18083, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/GeneralParseException.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/GeneralParseException.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/GeneralParseException.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,39 @@
+package org.drools.clips;
+
+/*
+ * 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.
+ */
+
+import org.antlr.runtime.RecognitionException;
+
+public class GeneralParseException extends RecognitionException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 400L;
+ private String message;
+
+ public GeneralParseException(final String message,
+ final int line) {
+ this.message = message;
+ this.line = line;
+ }
+
+ public String getMessage() {
+ return this.message;
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/IntLispAtom.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/IntLispAtom.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/IntLispAtom.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,12 @@
+/**
+ *
+ */
+package org.drools.clips;
+
+public class IntLispAtom extends LispAtom {
+
+ public IntLispAtom(String value) {
+ super(value);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/LispAtom.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/LispAtom.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/LispAtom.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,24 @@
+/**
+ *
+ */
+package org.drools.clips;
+
+public class LispAtom implements SExpression {
+ private String value;
+
+ public LispAtom(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String toString() {
+ return value;
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/LispForm.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/LispForm.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/LispForm.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,46 @@
+/**
+ *
+ */
+package org.drools.clips;
+
+public class LispForm
+ implements SExpression {
+ private SExpression[] sExpressions;
+
+ public LispForm(SExpression[] sExpressions) {
+ this.sExpressions = sExpressions;
+ }
+
+ public SExpression[] getSExpressions() {
+ return sExpressions;
+ }
+
+ public void setSExpressions(SExpression[] sExpressions) {
+ this.sExpressions = sExpressions;
+ }
+
+// public String toString() {
+// StringBuilder builder = new StringBuilder();
+//
+// builder.append("(");
+// for ( int i = 0, length = sExpressions.length; i < length; i++) {
+// builder.append(" " + sExpressions[i] + " ");
+// }
+// builder.append(")");
+// return builder.toString();
+// }
+ public int size() {
+ return this.sExpressions.length;
+ }
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+
+ builder.append("(");
+ for ( SExpression sExpression : sExpressions) {
+ builder.append(" " + sExpression + " ");
+ }
+ builder.append(")");
+ return builder.toString();
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/MVELBuildContext.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/MVELBuildContext.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/MVELBuildContext.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,9 @@
+package org.drools.clips;
+
+import java.util.Map;
+
+public interface MVELBuildContext {
+ Map<String, String> getVariableNameMap();
+
+ String makeValid(String var);
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/NullLispAtom.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/NullLispAtom.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/NullLispAtom.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,12 @@
+/**
+ *
+ */
+package org.drools.clips;
+
+public class NullLispAtom extends LispAtom {
+
+ public NullLispAtom(String value) {
+ super(value);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/OldShell.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/OldShell.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/OldShell.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,282 @@
+package org.drools.clips;
+
+import java.io.PrintStream;
+import java.io.Reader;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.antlr.runtime.ANTLRReaderStream;
+import org.antlr.runtime.ANTLRStringStream;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.Lexer;
+import org.antlr.runtime.TokenStream;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.clips.valuehandlers.FunctionCaller;
+import org.drools.clips.valuehandlers.IndexedLocalVariableValue;
+import org.drools.clips.valuehandlers.TempTokenVariable;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.lang.DRLLexer;
+import org.drools.lang.descr.AttributeDescr;
+import org.drools.lang.descr.ImportDescr;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.drools.reteoo.ReteTuple;
+import org.drools.spi.GlobalResolver;
+
+public class OldShell
+ implements
+ ParserHandler,
+ //GlobalResolver,
+ BuildContext,
+ ExecutionContext {
+ private static final long serialVersionUID = 1L;
+ private XFunctionRegistry registry;
+
+ private ValueHandler[] variables;
+ private Map vars = new HashMap();
+
+ private Map properties = Collections.EMPTY_MAP;
+
+ private RuleBase ruleBase;
+ private StatefulSession session;
+
+ private Map printoutRouters;
+
+ private Set imports;
+
+ private int index;
+
+ public OldShell() {
+ this.ruleBase = RuleBaseFactory.newRuleBase();
+ this.session = this.ruleBase.newStatefulSession();
+ //this.session.setGlobalResolver( this );
+ this.variables = new ValueHandler[50];
+
+ this.imports = new HashSet();
+
+ this.registry = new XFunctionRegistry( BuiltinFunctions.getInstance() );
+ }
+
+ public void evalReader(Reader reader) {
+ try {
+ CLPParser parser = new CLPParser( new CommonTokenStream( new DRLLexer( new ANTLRReaderStream( reader ) ) ) );
+ evalParser( parser );
+ } catch ( Exception e ) {
+ throw new RuntimeException( "Unable to parser Reader",
+ e );
+ }
+ }
+
+ public void evalString(String text) {
+ CLPParser parser = new CLPParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
+ evalParser( parser );
+ }
+
+ private void evalParser(CLPParser parser) {
+ parser.setFunctionRegistry( this.registry );
+ try {
+ parser.eval_script( this );
+ } catch ( Exception e ) {
+ throw new RuntimeException( e );
+ }
+
+ //parser.setF
+ }
+
+ // public void functionHandler(FunctionDescr ruleDescr) {
+ // throw new RuntimeException( "Drools Clips does not support FunctionDescr" );
+ // }
+
+ // public void functionHandler(FunctionCaller functionCaller) {
+ //
+ // }
+
+ public void lispFormHandler(ValueHandler valueHandler) {
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 0 );
+ valueHandler.getValue( context );
+ }
+
+ public void ruleDescrHandler(RuleDescr ruleDescr) {
+ String module = getModuleName( ruleDescr.getAttributes() );
+
+ PackageDescr pkg = new PackageDescr( module );
+
+ for ( Iterator it = this.imports.iterator(); it.hasNext(); ) {
+ pkg.addImport( (ImportDescr) it.next() );
+ }
+
+ pkg.addRule( ruleDescr );
+
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackage( pkg );
+
+ try {
+ this.ruleBase.addPackage( builder.getPackage() );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+
+ public void importDescrHandler(ImportDescr importDescr) {
+ this.imports.add( importDescr );
+ }
+
+ public String getModuleName(List list) {
+ for ( Iterator it = list.iterator(); it.hasNext(); ) {
+ AttributeDescr attr = (AttributeDescr) it.next();
+ if ( attr.getName().equals( "agenda-group" ) ) {
+ return attr.getValue();
+ }
+ }
+ return "MAIN";
+ }
+
+ // public PackageBuilder getBuilder(String namespace) {
+ // PackageBuilder builder = (PackageBuilder) this.packageBulders.get( namespace );
+ // if ( builder == null ) {
+ // builder = new PackageBuilder();
+ // this.packageBulders.put( namespace, builder );
+ // }
+ // return builder;
+ //
+ // }
+
+ private CharStream newCharStream(final String text) {
+ return new ANTLRStringStream( text );
+ }
+
+ private CLPLexer newLexer(final CharStream charStream) {
+ return new CLPLexer( charStream );
+ }
+
+ private TokenStream newTokenStream(final Lexer lexer) {
+ return new CommonTokenStream( lexer );
+ }
+
+ public void addFunction(FunctionCaller function) {
+ //function.getValue( this );
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.clp.ExecutionContext#getLocalVariable(int)
+ */
+ public ValueHandler getLocalVariable(int index) {
+ return variables[index];
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.clp.ExecutionContext#setLocalVariable(int, org.drools.clp.ValueHandler)
+ */
+ public void setLocalVariable(int index,
+ ValueHandler valueHandler) {
+ this.variables[index] = valueHandler;
+ }
+
+ public XFunctionRegistry getFunctionRegistry() {
+ return this.registry;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.clp.BuildContext#setProperty(java.lang.Object, java.lang.Object)
+ */
+ public Object setProperty(Object key,
+ Object value) {
+ if ( this.properties == Collections.EMPTY_MAP ) {
+ this.properties = new HashMap();
+ }
+ return this.properties.put( key,
+ value );
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.clp.BuildContext#getProperty(java.lang.Object)
+ */
+ public Object getProperty(Object key) {
+ return this.properties.get( key );
+ }
+
+ public Object getObject() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public InternalWorkingMemory getWorkingMemory() {
+ return ( InternalWorkingMemory) this.session;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.clp.ExecutionContext#setPrintoutRouters(java.util.Map)
+ */
+ public void setPrintoutRouters(Map printoutRouters) {
+ this.printoutRouters = printoutRouters;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.clp.ExecutionContext#addPrintoutRouter(java.lang.String, java.io.PrintStream)
+ */
+ public void addPrintoutRouter(String identifier,
+ PrintStream stream) {
+ this.printoutRouters.put( identifier,
+ stream );
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.clp.ExecutionContext#getPrintoutRouters(java.lang.String)
+ */
+ public PrintStream getPrintoutRouters(String identifier) {
+ return (PrintStream) this.printoutRouters.get( identifier );
+ }
+
+ public ValueHandler createLocalVariable(String identifier) {
+ return new IndexedLocalVariableValue( identifier,
+ this.index++ );
+ }
+
+ public void addVariable(VariableValueHandler var) {
+ this.vars.put( var.getIdentifier(), var);
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.clp.BuildContext#getVariableValueHandler(java.lang.String)
+ */
+ public ValueHandler getVariableValueHandler(String identifier) {
+ ValueHandler var = (ValueHandler) this.vars.get( identifier );
+ if ( var == null ) {
+ var = new TempTokenVariable( identifier );
+ }
+ return var;
+ }
+
+ public Object resolve(String identifier) {
+ ValueHandler var = (ValueHandler) this.vars.get( identifier );
+ return var.getObject( this );
+ }
+
+// public Object resolveGlobal(String arg0) {
+// // TODO Auto-generated method stub
+// return null;
+// }
+//
+// public void setGlobal(String arg0,
+// Object arg1) {
+// // TODO Auto-generated method stub
+//
+// }
+
+ public ReteTuple getTuple() {
+ return null;
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ParserHandler.java (from rev 18181, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/ParserHandler.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ParserHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/ParserHandler.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,16 @@
+package org.drools.clips;
+
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.ImportDescr;
+import org.drools.lang.descr.RuleDescr;
+
+public interface ParserHandler {
+
+ public void importHandler(ImportDescr descr);
+
+ public void functionHandler(FunctionDescr ruleDescr);
+
+ public void ruleHandler(RuleDescr ruleDescr);
+
+ public void lispFormHandler(LispForm lispForm);
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/PrintRouterContext.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/PrintRouterContext.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/PrintRouterContext.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,16 @@
+package org.drools.clips;
+
+import java.io.PrintStream;
+import java.util.Map;
+
+import org.mvel.ast.Function;
+
+public interface PrintRouterContext {
+
+ public abstract void addRouter(String name, PrintStream out);
+
+ public abstract boolean removeRouter(String name);
+
+ public abstract Map<String, PrintStream> getRouters();
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/SExpression.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/SExpression.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/SExpression.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,8 @@
+/**
+ *
+ */
+package org.drools.clips;
+
+public interface SExpression {
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/StringBuilderAppendable.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/StringBuilderAppendable.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/StringBuilderAppendable.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,14 @@
+package org.drools.clips;
+
+public class StringBuilderAppendable implements Appendable {
+ public StringBuilder builder = new StringBuilder();
+
+
+ public void append(String string) {
+ this.builder.append( string );
+ }
+
+ public String toString() {
+ return builder.toString();
+ }
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/StringLispAtom.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/StringLispAtom.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/StringLispAtom.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,13 @@
+/**
+ *
+ */
+package org.drools.clips;
+
+public class StringLispAtom extends LispAtom {
+
+ public StringLispAtom(String value) {
+ super("\"" + value + "\"");
+ }
+
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/SymbolLispAtom.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/SymbolLispAtom.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/SymbolLispAtom.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,12 @@
+/**
+ *
+ */
+package org.drools.clips;
+
+public class SymbolLispAtom extends LispAtom {
+
+ public SymbolLispAtom(String value) {
+ super(value);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/VariableContext.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/VariableContext.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/VariableContext.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,7 @@
+package org.drools.clips;
+
+public interface VariableContext {
+ public void addVariable(String name, Object value);
+
+ public void removeVariable(String name);
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/VariableLispAtom.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/VariableLispAtom.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/VariableLispAtom.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,24 @@
+/**
+ *
+ */
+package org.drools.clips;
+
+import java.util.Map;
+
+public class VariableLispAtom extends LispAtom {
+
+ public VariableLispAtom(String var, MVELBuildContext context) {
+ super(var);
+ Map<String, String> map = context.getVariableNameMap();
+ String temp = map.get( var );
+ if ( temp == null ) {
+ temp = context.makeValid( var );
+ if ( !temp.equals( var ) ) {
+ map.put( var, temp );
+ }
+ }
+ setValue( temp );
+ }
+
+
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions (from rev 18083, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions)
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BaseFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/BaseFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BaseFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,33 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.BuildContext;
-import org.drools.clp.Function;
-import org.drools.clp.LispForm;
-import org.drools.clp.LispList;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.FunctionCaller;
-
-public abstract class BaseFunction
- implements
- Function {
-
- public void initCallback(BuildContext context) {
-
- }
-
- public ValueHandler addParameterCallback(int index,
- FunctionCaller caller,
- ValueHandler valueHandler,
- BuildContext context) {
- caller.addParameter( valueHandler );
- return valueHandler;
- }
-
- public LispList createList(int index) {
- return new LispForm();
- }
-
- public String toString() {
- return "[Function '" + getName() + "']";
- }
-}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BaseInfixFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BaseInfixFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BaseInfixFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,27 @@
+package org.drools.clips.functions;
+
+import org.drools.clips.Appendable;
+import org.drools.clips.Function;
+import org.drools.clips.FunctionHandlers;
+import org.drools.clips.LispForm;
+import org.drools.clips.MVELBuildContext;
+import org.drools.clips.SExpression;
+
+public abstract class BaseInfixFunction implements Function {
+ public abstract String getMappedSymbol();
+
+ public void dump(LispForm lispForm, Appendable appendable, MVELBuildContext context) {
+ SExpression[] sExpressions = lispForm.getSExpressions();
+
+ appendable.append("(");
+ for ( int i = 1, length = sExpressions.length; i < length; i++) {
+
+ FunctionHandlers.dump( sExpressions[i], appendable, context );
+
+ if ( i != length -1 ) {
+ appendable.append( getMappedSymbol() );
+ }
+ }
+ appendable.append(")");
+ }
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BindFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/BindFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BindFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,49 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.BuildContext;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.FunctionCaller;
-import org.drools.clp.valuehandlers.TempTokenVariable;
-
-public class BindFunction extends BaseFunction
- implements
- Function {
- private static final String name = "bind";
-
- public BindFunction() {
-
- }
-
- public ValueHandler addParameterCallback(int index,
- FunctionCaller caller,
- ValueHandler valueHandler,
- BuildContext context) {
- // The first index in the 'bind' function is the variable
- // register the variable, if it doesn't already exist, will be a TempTokenVariable if it does not already exist
- if ( index == 0 && (valueHandler instanceof TempTokenVariable) ) {
- TempTokenVariable temp = (TempTokenVariable) valueHandler;
- valueHandler = context.createLocalVariable( temp.getIdentifier() );
- }
-
- caller.addParameter( valueHandler );
-
- return valueHandler;
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- ValueHandler nested = args[1].getValue( context );
- ValueHandler value = (nested != null ) ? nested : args[1];
-
- args[0].setValue( context,
- value );
- return args[0];
- }
-
- public String getName() {
- return name;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BreakFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/BreakFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/BreakFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,26 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.BaseValueHandler;
-import org.drools.clp.valuehandlers.BooleanValueHandler;
-
-public class BreakFunction extends BaseFunction
- implements
- Function {
- private static final String name = "break";
-
- public BreakFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- return BaseValueHandler.BREAK;
- }
-
- public String getName() {
- return name;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/CreateListFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/CreateListFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/CreateListFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,28 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.ListValueHandler;
-
-public class CreateListFunction extends BaseFunction
- implements
- Function {
- private static final String name = "create$";
-
- public CreateListFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- ListValueHandler list = new ListValueHandler();
- list.add( args,
- context );
- return list;
- }
-
- public String getName() {
- return name;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/DivideFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/DivideFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/DivideFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,33 +0,0 @@
-package org.drools.clp.functions;
-
-import java.math.BigDecimal;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.ObjectValueHandler;
-
-public class DivideFunction extends BaseFunction
- implements
- Function {
- private static final String name = "/";
-
- public DivideFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- BigDecimal bdval = args[0].getBigDecimalValue( context );
- for ( int i = 1, length = args.length; i < length; i++ ) {
- bdval = bdval.divide( args[i].getBigDecimalValue( context ), BigDecimal.ROUND_DOWN );
- }
-
- return new ObjectValueHandler( bdval );
- }
-
- public String getName() {
- return name;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/EqFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,26 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.BooleanValueHandler;
-
-public class EqFunction extends BaseFunction
- implements
- Function {
- private static final String name = "eq";
-
- public EqFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
-
- return new BooleanValueHandler( args[0].equals( args[1], context ) );
- }
-
- public String getName() {
- return name;
- }
-}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqOrLessThanFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqOrLessThanFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqOrLessThanFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,14 @@
+package org.drools.clips.functions;
+
+public class EqOrLessThanFunction extends BaseInfixFunction {
+ private static final String name = "<=";
+ private static final String mappedSymbol = "<=";
+
+ public String getName() {
+ return name;
+ }
+
+ public String getMappedSymbol() {
+ return mappedSymbol;
+ }
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqOrMoreThanFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqOrMoreThanFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/EqOrMoreThanFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,14 @@
+package org.drools.clips.functions;
+
+public class EqOrMoreThanFunction extends BaseInfixFunction {
+ private static final String name = ">=";
+ private static final String mappedSymbol = ">=";
+
+ public String getName() {
+ return name;
+ }
+
+ public String getMappedSymbol() {
+ return mappedSymbol;
+ }
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ForeachFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/ForeachFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ForeachFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,75 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.BuildContext;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.BaseValueHandler;
-import org.drools.clp.valuehandlers.FunctionCaller;
-import org.drools.clp.valuehandlers.ListValueHandler;
-import org.drools.clp.valuehandlers.TempTokenVariable;
-
-public class ForeachFunction extends BaseFunction
- implements
- Function {
- private static final String name = "foreach";
-
- public ForeachFunction() {
-
- }
-
- public ValueHandler addParameterCallback(int index,
- FunctionCaller caller,
- ValueHandler valueHandler,
- BuildContext context) {
- // The first index in the 'foreach' function is the variable
- // register the variable, if it doesn't already exist, will be a TempTokenVariable if it does not already exist
- if ( index == 0 && (valueHandler instanceof TempTokenVariable) ) {
- TempTokenVariable temp = (TempTokenVariable) valueHandler;
- valueHandler = context.createLocalVariable( temp.getIdentifier() );
- }
-
- caller.addParameter( valueHandler );
-
- return valueHandler;
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- ValueHandler result = null;
-
- BindFunction bind = new BindFunction();
- ValueHandler[] bindArgs = new ValueHandler[2];
- bindArgs[0] = args[0];
-
- // Check if the arg is a List or a variable resolving to a list
- ValueHandler value = args[1];
- if ( !(value instanceof ListValueHandler ) ) {
- value = value.getValue( context );
- }
- ValueHandler[] list = (( ListValueHandler ) value).getList();
-
- for (int i = 0, length1 = list.length; i < length1; i++ ) {
- bindArgs[1] = list[i];
- bind.execute( bindArgs, context );
- for (int j = 2, length2 = args.length; j < length2; j++ ) {
- // iterate for each action
- result = args[j].getValue( context );
- if ( result == BaseValueHandler.BREAK ) {
- break;
- }
- }
- if ( result == BaseValueHandler.BREAK ) {
- // need to do this twice as its a nested loop here, a single loop in the lisp
- break;
- }
- }
-
- return result;
- }
-
- public String getName() {
- return name;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/GreaterThanOrEqualFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/GreaterThanOrEqualFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/GreaterThanOrEqualFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,26 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.BooleanValueHandler;
-
-public class GreaterThanOrEqualFunction extends BaseFunction
- implements
- Function {
- private static final String name = ">=";
-
- public GreaterThanOrEqualFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- return new BooleanValueHandler( args[0].getBigDecimalValue( context ).compareTo( args[1].getBigDecimalValue( context ) ) >= 0 );
- }
-
- public String getName() {
- return name;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/IfFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/IfFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/IfFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,78 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.BuildContext;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.LispForm;
-import org.drools.clp.LispList;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.BooleanValueHandler;
-import org.drools.clp.valuehandlers.FunctionCaller;
-import org.drools.clp.valuehandlers.ListValueHandler;
-import org.drools.clp.valuehandlers.LongValueHandler;
-import org.drools.clp.valuehandlers.ObjectValueHandler;
-import org.drools.clp.valuehandlers.TempTokenVariable;
-
-public class IfFunction extends BaseFunction
- implements
- Function {
- private static final String name = "if";
-
- public IfFunction() {
-
- }
-
- public ValueHandler addParameterCallback(int index,
- FunctionCaller caller,
- ValueHandler valueHandler,
- BuildContext context) {
- // We need to determine and store the 'else' location so that we don't have to "seach" for it at runtime
- // we rewrite the conditional function into a list, the first element stores the original
-
- if ( index == 0 ) {
- // we are at the conditional element, rewrite it so it can hold the 'else' position
- ListValueHandler list = new ListValueHandler();
- list.add( valueHandler );
- valueHandler = list;
- } else if ( valueHandler instanceof ObjectValueHandler ) {
- String token = valueHandler.getStringValue( null );
- if ( token.equals( "else" ) ) {
- ((ListValueHandler) caller.getParameters()[0]).add( new LongValueHandler( index ) );
- }
- }
-
- caller.addParameter( valueHandler );
-
- return valueHandler;
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- ValueHandler[] list = ((ListValueHandler)args[0]).getList();
-
- ValueHandler result = null;
-
- int elseIndex = -1;
- if ( list.length == 2 ) {
- elseIndex = list[1].getIntValue( context );
- }
-
- if ( list[0].getBooleanValue( context ) ) {
- for ( int i = 2; i < elseIndex; i++ ) {
- result = args[i].getValue( context );
- }
- } else if ( elseIndex != -1) {
- for ( int i = elseIndex+1; i < args.length; i++ ) {
- result = args[i].getValue( context );
- }
- } else {
- result = new BooleanValueHandler( false );
- }
-
- return result;
- }
-
- public String getName() {
- return name;
- }
-}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/IfFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/IfFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/IfFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,51 @@
+package org.drools.clips.functions;
+
+import org.drools.clips.Appendable;
+import org.drools.clips.Function;
+import org.drools.clips.FunctionHandlers;
+import org.drools.clips.LispAtom;
+import org.drools.clips.LispForm;
+import org.drools.clips.MVELBuildContext;
+import org.drools.clips.SExpression;
+
+public class IfFunction implements Function {
+ private static final String name = "if";
+
+ public String getName() {
+ return name;
+ }
+
+ public void dump(LispForm lispForm, Appendable appendable, MVELBuildContext context) {
+ SExpression[] sExpressions = lispForm.getSExpressions();
+
+ appendable.append( "if " );
+
+ FunctionHandlers.dump( sExpressions[1], appendable, context );
+
+ appendable.append( "{" );
+ int i = 3;
+ for ( int length = sExpressions.length; i < length; i++ ) {
+ SExpression sExpr = ( SExpression ) sExpressions[i];
+ if ( ( sExpr instanceof LispAtom ) && "\"else\"".equals( ((LispAtom)sExpr).getValue() ) ) {
+ i++;
+ break;
+ }
+ FunctionHandlers.dump( sExpressions[i], appendable, context );
+ }
+ appendable.append( "}" );
+
+
+ while ( i < sExpressions.length ) {
+ appendable.append( " else {" );
+ for ( int length = sExpressions.length; i < length; i++ ) {
+ SExpression sExpr = ( SExpression ) sExpressions[i];
+ if ( ( sExpr instanceof LispAtom ) && "\"else\"".equals( ((LispAtom)sExpr).getValue() ) ) {
+ i++;
+ break;
+ }
+ FunctionHandlers.dump( sExpressions[i], appendable, context );
+ }
+ appendable.append( "}" );
+ }
+ }
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/LessThanFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/LessThanFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/LessThanFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,26 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.BooleanValueHandler;
-
-public class LessThanFunction extends BaseFunction
- implements
- Function {
- private static final String name = "<";
-
- public LessThanFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- return new BooleanValueHandler( args[0].getBigDecimalValue( context ).compareTo( args[1].getBigDecimalValue( context ) ) < 0 );
- }
-
- public String getName() {
- return name;
- }
-
-}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/LessThanFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/LessThanFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/LessThanFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,14 @@
+package org.drools.clips.functions;
+
+public class LessThanFunction extends BaseInfixFunction {
+ private static final String name = "<";
+ private static final String mappedSymbol = "<";
+
+ public String getName() {
+ return name;
+ }
+
+ public String getMappedSymbol() {
+ return mappedSymbol;
+ }
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MinusFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/MinusFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MinusFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,32 +0,0 @@
-package org.drools.clp.functions;
-
-import java.math.BigDecimal;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.ObjectValueHandler;
-
-public class MinusFunction extends BaseFunction
- implements
- Function {
- private static final String name = "-";
-
- public MinusFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- BigDecimal bdval = args[0].getBigDecimalValue( context );
- for ( int i = 1, length = args.length; i < length; i++ ) {
- bdval = bdval.subtract( args[i].getBigDecimalValue( context ) );
- }
-
- return new ObjectValueHandler( bdval );
- }
-
- public String getName() {
- return name;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ModifyFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/ModifyFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ModifyFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,38 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.LispData;
-import org.drools.clp.LispList;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.ListValueHandler;
-import org.mvel.PropertyAccessor;
-
-public class ModifyFunction extends BaseFunction
- implements
- Function {
- private static final String name = "modify";
-
- public ModifyFunction() {
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- Object object = args[0].getObject( context );
- for ( int i = 1, length = args.length; i < length; i++ ) {
- ValueHandler[] list = ((ListValueHandler) args[i]).getList();
- PropertyAccessor.set( object,
- list[0].getStringValue( context ),
- list[1].getObject( context ) );
- }
- return null;
- }
-
- public LispList createList(int index) {
- return new LispData();
- }
-
- public String getName() {
- return name;
- }
-}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ModifyFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ModifyFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ModifyFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,37 @@
+package org.drools.clips.functions;
+
+import org.drools.clips.Appendable;
+import org.drools.clips.Function;
+import org.drools.clips.FunctionHandlers;
+import org.drools.clips.LispAtom;
+import org.drools.clips.LispForm;
+import org.drools.clips.MVELBuildContext;
+import org.drools.clips.SExpression;
+
+public class ModifyFunction implements Function {
+ private static final String name = "modify";
+
+ public String getName() {
+ return name;
+ }
+
+ public void dump(LispForm lispForm, Appendable appendable, MVELBuildContext context) {
+ SExpression[] sExpressions = lispForm.getSExpressions();
+
+ appendable.append("modify (" + ( (LispAtom) lispForm.getSExpressions()[1]).getValue() + ") {");
+
+ for ( int i = 2, length = sExpressions.length; i < length; i++) {
+ LispForm setter = (LispForm) sExpressions[i];
+ appendable.append( ( ( LispAtom ) setter.getSExpressions()[0]).getValue() );
+
+ appendable.append( " = " );
+
+ FunctionHandlers.dump( setter.getSExpressions()[1], appendable, context);
+
+ if ( i != length -1 ) {
+ appendable.append( "," );
+ }
+ }
+ appendable.append("};");
+ }
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MoreThanFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MoreThanFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MoreThanFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,14 @@
+package org.drools.clips.functions;
+
+public class MoreThanFunction extends BaseInfixFunction {
+ private static final String name = ">";
+ private static final String mappedSymbol = ">";
+
+ public String getName() {
+ return name;
+ }
+
+ public String getMappedSymbol() {
+ return mappedSymbol;
+ }
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MultiplyFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/MultiplyFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MultiplyFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,33 +0,0 @@
-package org.drools.clp.functions;
-
-import java.math.BigDecimal;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.ObjectValueHandler;
-
-public class MultiplyFunction extends BaseFunction
- implements
- Function {
- private static final String name = "*";
-
- public MultiplyFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- BigDecimal bdval = args[0].getBigDecimalValue( context );
- for ( int i = 1, length = args.length; i < length; i++ ) {
- bdval = bdval.multiply( args[i].getBigDecimalValue( context ) );
- }
-
- return new ObjectValueHandler( bdval );
- }
-
- public String getName() {
- return name;
- }
-
-}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MultiplyFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MultiplyFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/MultiplyFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,14 @@
+package org.drools.clips.functions;
+
+public class MultiplyFunction extends BaseInfixFunction {
+ private static final String name = "*";
+ private static final String mappedSymbol = "*";
+
+ public String getName() {
+ return name;
+ }
+
+ public String getMappedSymbol() {
+ return mappedSymbol;
+ }
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PlusFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/PlusFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PlusFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,32 +0,0 @@
-package org.drools.clp.functions;
-
-import java.math.BigDecimal;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.ObjectValueHandler;
-
-public class PlusFunction extends BaseFunction
- implements
- Function {
- private static final String name = "+";
-
- public PlusFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- BigDecimal bdval = args[0].getBigDecimalValue( context );
- for ( int i = 1, length = args.length; i < length; i++ ) {
- bdval = bdval.add( args[i].getBigDecimalValue( context ) );
- }
-
- return new ObjectValueHandler( bdval );
- }
-
- public String getName() {
- return name;
- }
-}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PlusFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PlusFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PlusFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,14 @@
+package org.drools.clips.functions;
+
+public class PlusFunction extends BaseInfixFunction {
+ private static final String name = "+";
+ private static final String mappedSymbol = "+";
+
+ public String getName() {
+ return name;
+ }
+
+ public String getMappedSymbol() {
+ return mappedSymbol;
+ }
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrintoutFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/PrintoutFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrintoutFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,46 +0,0 @@
-package org.drools.clp.functions;
-
-import java.io.PrintStream;
-
-import org.drools.base.SimpleValueType;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.ListValueHandler;
-
-public class PrintoutFunction extends BaseFunction
- implements
- Function {
- private static final String name = "printout";
-
- public PrintoutFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- PrintStream route = context.getPrintoutRouters( args[0].getStringValue( context ) );
-
- if ( route == null ) {
- throw new RuntimeException("printout route '" + args[0].getStringValue( context ) + "' does not exists" );
- }
-
- for ( int i = 1; i < args.length; i++ ) {
- ValueHandler value = args[i].getValue( context );
- if ( value != null && value.getValueType( context ) == SimpleValueType.LIST ) {
- ValueHandler[] list = ((ListValueHandler)value).getList();
- for ( int j = 0; j < list.length; j++ ) {
- route.print( list[j].getStringValue( context ) );
- }
- } else {
- route.print( args[i].getStringValue( context ) );
- }
- }
-
- return null;
- }
-
- public String getName() {
- return name;
- }
-}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrintoutFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrintoutFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrintoutFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,33 @@
+package org.drools.clips.functions;
+
+import org.drools.clips.Appendable;
+import org.drools.clips.Function;
+import org.drools.clips.FunctionHandlers;
+import org.drools.clips.LispAtom;
+import org.drools.clips.LispForm;
+import org.drools.clips.MVELBuildContext;
+import org.drools.clips.SExpression;
+
+public class PrintoutFunction implements Function {
+ private static final String name = "printout";
+
+ private static final int route = 1;
+
+ public String getName() {
+ return name;
+ }
+
+ public void dump(LispForm lispForm, Appendable appendable, MVELBuildContext context) {
+ SExpression[] sExpressions = lispForm.getSExpressions();
+ appendable.append( "printrouters.get(" + ( ( LispAtom ) lispForm.getSExpressions()[route]).getValue()+ ").print(" );
+ //appendable.append( "routers.get(" + ( ( LispAtom2 ) lispForm.getSExpressions()[route]).getValue()+ ").print(" );
+ for ( int i = 2, length = sExpressions.length; i < length; i++) {
+ FunctionHandlers.dump( sExpressions[i], appendable, context );
+
+ if ( i != length -1 ) {
+ appendable.append( "+" );
+ }
+ }
+ appendable.append( ");" );
+ }
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrognFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/PrognFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrognFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,30 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-
-public class PrognFunction extends BaseFunction
- implements
- Function {
- private static final String name = "progn";
-
- public PrognFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
-
- ValueHandler result = null;
- for ( int i = 0, length = args.length; i < length; i++ ) {
- result = args[i].getValue( context );
- }
-
- return result;
- }
-
- public String getName() {
- return name;
- }
-}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrognFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrognFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/PrognFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,40 @@
+package org.drools.clips.functions;
+
+import org.drools.clips.Appendable;
+import org.drools.clips.Function;
+import org.drools.clips.FunctionHandlers;
+import org.drools.clips.LispAtom;
+import org.drools.clips.LispForm;
+import org.drools.clips.MVELBuildContext;
+import org.drools.clips.SExpression;
+
+public class PrognFunction implements Function {
+ private static final String name = "progn";
+
+ public String getName() {
+ return name;
+ }
+
+ public void dump(LispForm lispForm, Appendable appendable, MVELBuildContext context) {
+ Function createList = FunctionHandlers.getInstance().getFunction( "create$" );
+
+ SExpression[] sExpressions = lispForm.getSExpressions();
+
+ LispForm listSpec = (LispForm) sExpressions[1];
+
+ String var = ( ( LispAtom ) listSpec.getSExpressions()[0] ).getValue();
+
+ appendable.append( "foreach( " + var + " : " );
+
+ createList.dump( (LispForm) listSpec.getSExpressions()[1], appendable, context );
+
+ appendable.append( " ) {" );
+
+ for ( int i = 2, length = sExpressions.length; i < length; i++ ) {
+ FunctionHandlers.dump( sExpressions[i], appendable, context );
+ }
+
+ appendable.append( "}" );
+
+ }
+}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ReturnFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ReturnFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/ReturnFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,21 @@
+package org.drools.clips.functions;
+
+import org.drools.clips.Appendable;
+import org.drools.clips.Function;
+import org.drools.clips.FunctionHandlers;
+import org.drools.clips.LispForm;
+import org.drools.clips.MVELBuildContext;
+
+public class ReturnFunction implements Function {
+ private static final String name = "return";
+
+ public String getName() {
+ return name;
+ }
+
+ public void dump(LispForm lispForm, Appendable appendable, MVELBuildContext context) {
+ appendable.append( "return " );
+ FunctionHandlers.dump( lispForm.getSExpressions()[1], appendable, context );
+ appendable.append( ";\n" );
+ }
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchCaseFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/SwitchCaseFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchCaseFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,61 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.BuildContext;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.LispForm;
-import org.drools.clp.LispList;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.BaseValueHandler;
-import org.drools.clp.valuehandlers.BooleanValueHandler;
-import org.drools.clp.valuehandlers.FunctionCaller;
-import org.drools.clp.valuehandlers.TempTokenVariable;
-
-public class SwitchCaseFunction extends BaseFunction
- implements
- Function {
- private static final String name = "case";
-
- public SwitchCaseFunction() {
-
- }
-
- public ValueHandler addParameterCallback(int index,
- FunctionCaller caller,
- ValueHandler valueHandler,
- BuildContext context) {
- if ( index == 0 ) {
- // swap the element for an equality check
- FunctionCaller switchCaller = new FunctionCaller( context.getFunctionRegistry().getFunction( "eq" ) );
- switchCaller.addParameter( (ValueHandler) context.getProperty( "switch-variable" ) );
- switchCaller.addParameter( valueHandler );
- valueHandler = switchCaller;
- }
-
- caller.addParameter( valueHandler );
-
- return valueHandler;
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- ValueHandler result = null;
-
- if ( args[0].getBooleanValue( context ) ) {
- for (int i = 2, length = args.length; i < length; i++ ) {
- result = args[i].getValue( context );
- if ( result == BaseValueHandler.BREAK ) {
- break;
- }
- }
- } else {
- result = new BooleanValueHandler( false );
- }
-
- return result;
- }
-
- public String getName() {
- return name;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchDefaultFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/SwitchDefaultFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchDefaultFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,30 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.ExecutionBuildContext;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.LispForm;
-import org.drools.clp.LispList;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.BooleanValueHandler;
-import org.drools.clp.valuehandlers.FunctionCaller;
-import org.drools.clp.valuehandlers.TempTokenVariable;
-
-public class SwitchDefaultFunction extends BaseFunction
- implements
- Function {
- private static final String name = "default";
-
- public SwitchDefaultFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- return args[0].getValue( context );
- }
-
- public String getName() {
- return name;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/SwitchFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,63 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.BuildContext;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.LispForm;
-import org.drools.clp.LispList;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.BaseValueHandler;
-import org.drools.clp.valuehandlers.BooleanValueHandler;
-import org.drools.clp.valuehandlers.FunctionCaller;
-import org.drools.clp.valuehandlers.IndexedLocalVariableValue;
-import org.drools.clp.valuehandlers.TempTokenVariable;
-
-public class SwitchFunction extends BaseFunction
- implements
- Function {
- private static final String name = "switch";
-
- public SwitchFunction() {
-
- }
-
- public ValueHandler addParameterCallback(int index,
- FunctionCaller caller,
- ValueHandler valueHandler,
- BuildContext context) {
- if ( index == 0 ) {
- if ( !(valueHandler instanceof IndexedLocalVariableValue ) ) {
- // this should already be bound as a local variable
- throw new RuntimeException( "The variable must already have been declared to use it in a switch statement" );
- } else {
- context.setProperty( "switch-variable", valueHandler );
- }
- }
-
- caller.addParameter( valueHandler );
-
- return valueHandler;
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- ValueHandler result = null;
-
- // binds the variable for the case function to use
- args[0].getValue( context );
-
- // now its bound we can execute each case statement in turn
- for (int i = 1, length = args.length; i < length; i++ ) {
- result = args[i].getValue( context );
- if ( result == BaseValueHandler.BREAK ) {
- break;
- }
- }
-
- return result;
- }
-
- public String getName() {
- return name;
- }
-}
Added: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/SwitchFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,72 @@
+package org.drools.clips.functions;
+
+import org.drools.clips.Appendable;
+import org.drools.clips.Function;
+import org.drools.clips.FunctionHandlers;
+import org.drools.clips.LispAtom;
+import org.drools.clips.LispForm;
+import org.drools.clips.MVELBuildContext;
+import org.drools.clips.SExpression;
+
+public class SwitchFunction implements Function {
+ private static String name = "switch";
+
+ public String getName() {
+ return name;
+ }
+
+ public void dump(LispForm lispForm, Appendable appendable, MVELBuildContext context) {
+ SExpression[] sExpressions = lispForm.getSExpressions();
+
+ appendable.append( "switchvar = " );
+ LispForm expr = ( LispForm ) sExpressions[1];
+ if ( expr.getSExpressions().length > 1 ) {
+ FunctionHandlers.dump( expr, appendable, context );
+ } else {
+ FunctionHandlers.dump( expr.getSExpressions()[0], appendable, context );
+ }
+ appendable.append( ";\n" );
+
+ LispForm caseForm = ( LispForm ) sExpressions[2];
+
+ appendable.append( "if ( switchvar == " );
+
+ FunctionHandlers.dump( caseForm.getSExpressions()[1], appendable, context );
+ appendable.append( ") {" );
+ for ( int j = 3, jlength = caseForm.getSExpressions().length; j < jlength; j++ ) {
+ FunctionHandlers.dump( caseForm.getSExpressions()[j], appendable, context );
+ }
+ appendable.append( "}" );
+
+ for ( int i = 3, length = sExpressions.length-1; i < length; i++ ) {
+ caseForm = ( LispForm ) sExpressions[i];
+
+ appendable.append( " else if ( switchvar == " );
+ FunctionHandlers.dump( caseForm.getSExpressions()[1], appendable, context );
+ appendable.append( ") {" );
+
+ for ( int j = 3, jlength = caseForm.getSExpressions().length; j < jlength; j++ ) {
+ FunctionHandlers.dump( caseForm.getSExpressions()[j], appendable, context );
+ }
+ appendable.append( "}" );
+ }
+
+ caseForm = ( LispForm ) sExpressions[ sExpressions.length-1 ];
+ if ( "case".equals( ((LispAtom)caseForm.getSExpressions()[0]).getValue() ) ) {
+ appendable.append( " else if ( switchvar == " );
+ FunctionHandlers.dump( caseForm.getSExpressions()[1], appendable, context );
+ appendable.append( ") {" );
+ for ( int j = 3, length = caseForm.getSExpressions().length; j < length; j++ ) {
+ FunctionHandlers.dump( caseForm.getSExpressions()[j], appendable, context );
+ }
+ appendable.append( "}" );
+ } else {
+ appendable.append( " else { " );
+ for ( int j = 1, length = caseForm.getSExpressions().length; j < length; j++ ) {
+ FunctionHandlers.dump( caseForm.getSExpressions()[j], appendable, context );
+ }
+ appendable.append( "}" );
+ }
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/WhileFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/functions/WhileFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/functions/WhileFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,44 +0,0 @@
-package org.drools.clp.functions;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.valuehandlers.BaseValueHandler;
-
-public class WhileFunction extends BaseFunction
- implements
- Function {
- private static final String name = "while";
-
- public WhileFunction() {
-
- }
-
- public ValueHandler execute(ValueHandler[] args,
- ExecutionContext context) {
- ValueHandler result = null;
-
- ValueHandler doLoop = args[0];
-
- while ( doLoop.getBooleanValue( context ) ) {
- for (int i = 2, length = args.length; i < length; i++ ) {
- // iterate for each action
- result = args[i].getValue( context );
- if ( result == BaseValueHandler.BREAK ) {
- break;
- }
- }
- if ( result == BaseValueHandler.BREAK ) {
- // need to do this twice as its a nested loop here, a single loop in the lisp
- break;
- }
- }
-
- return result;
- }
-
- public String getName() {
- return name;
- }
-
-}
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers (from rev 18083, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers)
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/BaseValueHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/BaseValueHandler.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/BaseValueHandler.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,76 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-
-public abstract class BaseValueHandler implements ValueHandler {
- public static final ObjectValueHandler NULL = new ObjectValueHandler( "null" );
- public static final ObjectValueHandler BREAK = new ObjectValueHandler( "break" );
-
- public BigDecimal getBigDecimalValue(ExecutionContext context) throws NumberFormatException {
- Object object = getObject( context );
- if ( object instanceof BigDecimal ) {
- return (BigDecimal) object;
- } else {
- return new BigDecimal( object.toString() );
- }
- }
-
- public BigInteger getBigIntegerValue(ExecutionContext context) throws NumberFormatException {
- Object object = getObject( context );
- if ( object instanceof BigInteger ) {
- return (BigInteger) object;
- } else {
- return new BigInteger( object.toString() );
- }
- }
-
- public boolean getBooleanValue(ExecutionContext context) throws ClassCastException {
- return ((Boolean) getObject(context)).booleanValue();
- }
-
- public double getDoubleValue(ExecutionContext context) throws NumberFormatException {
- return ((Double) getObject(context)).doubleValue();
- }
-
- public float getFloatValue(ExecutionContext context) throws NumberFormatException {
- return ((Float) getObject(context)).floatValue();
- }
-
- public int getIntValue(ExecutionContext context) throws NumberFormatException {
- return ((Integer) getObject(context)).intValue();
- }
-
- public long getLongValue(ExecutionContext context) throws NumberFormatException {
- return ((Long) getObject(context)).longValue();
- }
-
- public short getShortValue(ExecutionContext context) throws NumberFormatException {
- return ((Short) getObject(context)).shortValue();
- }
-
- public String getStringValue(ExecutionContext context) {
- return getObject(context).toString();
- }
-
- public String toString() {
- String name = getClass().getName();
- name = name.substring( name.lastIndexOf( "." ) + 1 );
- try {
- return "[" + name + " value = '" + getObject(null) + "']";
- } catch (Exception e) {
- return "[" + name + " value = N/A]";
- }
- }
-
- public boolean equals(ValueHandler other, ExecutionContext context) {
- Object o1 = getObject(context);
- Object o2 = other.getObject( context );
- return o1.equals(o2);
- }
-
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/BooleanValueHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/BooleanValueHandler.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/BooleanValueHandler.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,96 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-import org.drools.base.SimpleValueType;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-
-public class BooleanValueHandler implements ValueHandler {
- private boolean booleanValue;
-
- public BooleanValueHandler(String booleanValue) {
- this.booleanValue = Boolean.valueOf( booleanValue ).booleanValue();
- }
-
- public BooleanValueHandler(boolean booleanValue) {
- this.booleanValue = booleanValue;
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- return this;
- }
-
- public int getValueType(ExecutionContext context) {
- return SimpleValueType.BOOLEAN;
- }
-
- public void setValue(ExecutionContext context, Object value) {
- throw new RuntimeException( "LiteralValues cannot be set");
- }
-
- public Object getObject(ExecutionContext context) {
- return new Boolean( this.booleanValue );
- }
-
- public BigDecimal getBigDecimalValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "Boolean format exception, cannot be cast to BitDecimal" );
- }
-
- public BigInteger getBigIntegerValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "Boolean format exception, cannot be cast to BitInteger" );
- }
-
- public boolean getBooleanValue(ExecutionContext context) throws ClassCastException {
- return this.booleanValue;
- }
-
- public double getDoubleValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "Boolean format exception, cannot be cast to double" );
- }
-
- public float getFloatValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "Boolean format exception, cannot be cast to float" );
- }
-
- public int getIntValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "Boolean format exception, cannot be cast to int" );
- }
-
- public long getLongValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "Boolean format exception, cannot be cast to long" );
- }
-
- public short getShortValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "Boolean format exception, cannot be cast to short" );
- }
-
- public String getStringValue(ExecutionContext context) {
- return Boolean.toString( this.booleanValue );
- }
-
- public String toString() {
- return "[BooleanLiteralValue value='" + this.booleanValue + "']";
- }
-
- public int hashCode() {
- final int PRIME = 31;
- int result = 1;
- result = PRIME * result + (booleanValue ? 1231 : 1237);
- return result;
- }
-
- public boolean equals(Object obj) {
- if ( this == obj ) return true;
- if ( obj == null ) return false;
- if ( !(obj instanceof BooleanValueHandler) ) return false;
- final BooleanValueHandler other = (BooleanValueHandler) obj;
- if ( booleanValue != other.booleanValue ) return false;
- return true;
- }
-
- public boolean equals(ValueHandler other, ExecutionContext context) {
- return getBooleanValue( context ) == other.getBooleanValue( context );
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/CLPGlobalVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/CLPGlobalVariable.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/CLPGlobalVariable.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,55 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import org.drools.clp.CLPFactory;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.VariableValueHandler;
-
-
-public class CLPGlobalVariable extends BaseValueHandler implements VariableValueHandler {
-
- private String identifier;
- private Class knownType;
- private int simpleType;
- private CLPFactory factory;
-
- public CLPGlobalVariable(String identifier,
- Class knownType,
- int simpleType,
- CLPFactory factory ) {
- this.identifier = identifier;
- this.factory = factory;
- this.knownType = knownType;
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- return this;
- }
-
- public String getIdentifier() {
- return this.identifier;
- }
-
- public int getValueType(ExecutionContext context) {
- return this.simpleType;
- }
-
- public Class getKnownType() {
- return this.knownType;
- }
-
- public Object getObject(ExecutionContext context) {
- return this.factory.getValue( this.identifier );
- }
-
- public void setValue(ExecutionContext context, Object value) {
- throw new UnsupportedOperationException( "External Variable identifer='" + getIdentifier() + "' type='" + getKnownType() + "' is final, it cannot be set" );
- }
-
- public String toString() {
- String name = getClass().getName();
- name = name.substring( name.lastIndexOf( "." ) + 1 );
- return "[" + name + " identifier = '" + getIdentifier() + "']";
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/CLPLocalDeclarationVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/CLPLocalDeclarationVariable.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/CLPLocalDeclarationVariable.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,103 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.VariableValueHandler;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.rule.Declaration;
-
-public class CLPLocalDeclarationVariable implements VariableValueHandler {
-
- private Declaration declaration;
- private InternalWorkingMemory workingmemory;
-
- public CLPLocalDeclarationVariable(Declaration declaration, InternalWorkingMemory workingMemory) {
- this.workingmemory = workingMemory;
- this.declaration = declaration;
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- return this;
- }
-
- public String getIdentifier() {
- return this.declaration.getIdentifier();
- }
-
- public Class getKnownType() {
- return declaration.getExtractor().getExtractToClass();
- }
-
- public int getValueType(ExecutionContext context) {
- return this.declaration.getValueType().getSimpleType();
- }
-
- public void setValue(ExecutionContext context,
- Object object) {
- throw new UnsupportedOperationException( "External Variable identifer='" + getIdentifier() + "' type='" + getKnownType() + "' is final, it cannot be set" );
- }
-
- public Object getObject(ExecutionContext context) {
- return declaration.getValue(workingmemory, context.getObject());
- }
-
- public BigDecimal getBigDecimalValue(ExecutionContext context) throws NumberFormatException {
- Object object = declaration.getValue(workingmemory, context.getObject() );
- if ( object instanceof BigDecimal ) {
- return (BigDecimal) object;
- } else {
- return new BigDecimal( object.toString() );
- }
- }
-
- public BigInteger getBigIntegerValue(ExecutionContext context) throws NumberFormatException {
- Object object = declaration.getValue(workingmemory, context.getObject() );
- if ( object instanceof BigInteger ) {
- return (BigInteger) object;
- } else {
- return new BigInteger( object.toString() );
- }
- }
-
- public boolean getBooleanValue(ExecutionContext context) throws ClassCastException {
- return declaration.getBooleanValue(workingmemory, context.getObject() );
- }
-
- public double getDoubleValue(ExecutionContext context) throws NumberFormatException {
- return declaration.getDoubleValue(workingmemory, context.getObject() );
- }
-
- public float getFloatValue(ExecutionContext context) throws NumberFormatException {
- return declaration.getFloatValue( workingmemory,context.getObject() );
- }
-
- public int getIntValue(ExecutionContext context) throws NumberFormatException {
- return declaration.getIntValue( workingmemory, context.getObject() );
- }
-
- public long getLongValue(ExecutionContext context) throws NumberFormatException {
- return declaration.getLongValue(workingmemory, context.getObject() );
- }
-
- public short getShortValue(ExecutionContext context) throws NumberFormatException {
- return declaration.getShortValue(workingmemory, context.getObject() );
- }
-
- public String getStringValue(ExecutionContext context) {
- return (String) declaration.getValue(workingmemory, context.getObject() );
- }
-
- public String toString() {
- String name = getClass().getName();
- name = name.substring( name.lastIndexOf( "." ) + 1 );
- return "[" + name + " identifier = '" + getIdentifier() + "']";
- }
-
- public boolean equals(ValueHandler other, ExecutionContext context) {
- // FIXME
- return false;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/CLPPreviousDeclarationVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/CLPPreviousDeclarationVariable.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/CLPPreviousDeclarationVariable.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,115 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.VariableValueHandler;
-import org.drools.common.InternalFactHandle;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.rule.Declaration;
-
-public class CLPPreviousDeclarationVariable implements VariableValueHandler {
-
- private Declaration declaration;
- private InternalWorkingMemory workingmemory;
-
- public CLPPreviousDeclarationVariable(Declaration declaration, InternalWorkingMemory workingmemory) {
- this.declaration = declaration;
- this.workingmemory = workingmemory;
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- return this;
- }
-
- public String getIdentifier() {
- return this.declaration.getIdentifier();
- }
-
- public Class getKnownType() {
- return declaration.getExtractor().getExtractToClass();
- }
-
- public int getValueType(ExecutionContext context) {
- return this.declaration.getValueType().getSimpleType();
- }
-
- public void setValue(ExecutionContext context,
- Object object) {
- throw new UnsupportedOperationException( "External Variable identifer='" + getIdentifier() + "' type='" + getKnownType() + "' is final, it cannot be set" );
- }
-
- public Object getObject(ExecutionContext context) {
- InternalFactHandle handle = context.getTuple().get( this.declaration );
- return declaration.getValue( workingmemory, handle.getObject() );
- }
-
- public BigDecimal getBigDecimalValue(ExecutionContext context) throws NumberFormatException {
- InternalFactHandle handle = context.getTuple().get( this.declaration );
- Object object = declaration.getValue(workingmemory, handle.getObject() );
- if ( object instanceof BigDecimal ) {
- return (BigDecimal) object;
- } else {
- return new BigDecimal( object.toString() );
- }
- }
-
- public BigInteger getBigIntegerValue(ExecutionContext context) throws NumberFormatException {
- InternalFactHandle handle = context.getTuple().get( this.declaration );
- Object object = declaration.getValue(workingmemory, handle.getObject() );
- if ( object instanceof BigInteger ) {
- return (BigInteger) object;
- } else {
- return new BigInteger( object.toString() );
- }
- }
-
- public boolean getBooleanValue(ExecutionContext context) throws ClassCastException {
- InternalFactHandle handle = context.getTuple().get( this.declaration );
- return declaration.getBooleanValue(workingmemory, handle.getObject() );
- }
-
- public double getDoubleValue(ExecutionContext context) throws NumberFormatException {
- InternalFactHandle handle = context.getTuple().get( this.declaration );
- return declaration.getDoubleValue(workingmemory, handle.getObject() );
- }
-
- public float getFloatValue(ExecutionContext context) throws NumberFormatException {
- InternalFactHandle handle = context.getTuple().get( this.declaration );
- return declaration.getFloatValue(workingmemory, handle.getObject() );
- }
-
- public int getIntValue(ExecutionContext context) throws NumberFormatException {
- InternalFactHandle handle = context.getTuple().get( this.declaration );
- return declaration.getIntValue(workingmemory, handle.getObject() );
- }
-
- public long getLongValue(ExecutionContext context) throws NumberFormatException {
- InternalFactHandle handle = context.getTuple().get( this.declaration );
- return declaration.getLongValue(workingmemory, handle.getObject() );
- }
-
- public short getShortValue(ExecutionContext context) throws NumberFormatException {
- InternalFactHandle handle = context.getTuple().get( this.declaration );
- return declaration.getShortValue(workingmemory, handle.getObject() );
- }
-
- public String getStringValue(ExecutionContext context) {
- InternalFactHandle handle = context.getTuple().get( this.declaration );
- return (String) declaration.getValue(workingmemory, handle.getObject() );
- }
-
- public String toString() {
- String name = getClass().getName();
- name = name.substring( name.lastIndexOf( "." ) + 1 );
- return "[" + name + " identifier = '" + getIdentifier() + "']";
- }
-
- public boolean equals(ValueHandler other, ExecutionContext context) {
- // FIXME
- return false;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/DoubleValueHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/DoubleValueHandler.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/DoubleValueHandler.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,100 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-import org.drools.base.SimpleValueType;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-
-public class DoubleValueHandler implements ValueHandler {
- private double doubleValue;
-
- public DoubleValueHandler(String doubleValue) {
- this.doubleValue = Double.valueOf( doubleValue ).doubleValue();
- }
-
- public DoubleValueHandler(double doubleValue) {
- this.doubleValue = doubleValue;
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- return this;
- }
-
- public int getValueType(ExecutionContext context) {
- return SimpleValueType.DECIMAL;
- }
-
- public void setValue(ExecutionContext context, Object value) {
- throw new RuntimeException( "LiteralValues cannot be set");
- }
-
- public Object getObject(ExecutionContext context) {
- return new Double( this.doubleValue );
- }
-
- public BigDecimal getBigDecimalValue(ExecutionContext context) throws NumberFormatException {
- return new BigDecimal( this.doubleValue );
- }
-
- public BigInteger getBigIntegerValue(ExecutionContext context) throws NumberFormatException {
- return BigInteger.valueOf( (long) this.doubleValue );
- }
-
- public boolean getBooleanValue(ExecutionContext context) throws ClassCastException {
- return ( this.doubleValue == 0 ) ? false : true;
- }
-
- public double getDoubleValue(ExecutionContext context) throws NumberFormatException {
- return this.doubleValue;
- }
-
- public float getFloatValue(ExecutionContext context) throws NumberFormatException {
- return (float) this.doubleValue;
- }
-
- public int getIntValue(ExecutionContext context) throws NumberFormatException {
- return (int) this.doubleValue;
- }
-
- public long getLongValue(ExecutionContext context) throws NumberFormatException {
- return (long) this.doubleValue;
- }
-
- public short getShortValue(ExecutionContext context) throws NumberFormatException {
- return (short) this.doubleValue;
- }
-
- public String getStringValue(ExecutionContext context) {
- return Double.toString( this.doubleValue );
- }
-
- public String toString() {
- return "[DoubleLiteralValue value='" + this.doubleValue + "']";
- }
-
- public int hashCode() {
- final int PRIME = 31;
- int result = 1;
- long temp;
- temp = Double.doubleToLongBits( doubleValue );
- result = PRIME * result + (int) (temp ^ (temp >>> 32));
- return result;
- }
-
- public boolean equals(Object obj) {
- if ( this == obj ) return true;
- if ( obj == null ) return false;
- if ( !(obj instanceof DoubleValueHandler) ) return false;
- final DoubleValueHandler other = (DoubleValueHandler) obj;
- if ( Double.doubleToLongBits( doubleValue ) != Double.doubleToLongBits( other.doubleValue ) ) return false;
- return true;
- }
-
- public boolean equals(ValueHandler other, ExecutionContext context) {
- return getDoubleValue( context ) == other.getDoubleValue( context );
- }
-
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/FunctionCaller.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/FunctionCaller.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/FunctionCaller.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,141 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Map;
-
-import org.drools.base.SimpleValueType;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.Function;
-import org.drools.clp.LispList;
-import org.drools.clp.ValueHandler;
-
-public class FunctionCaller
- implements
- ValueHandler {
- private Function function;
-
- protected ValueHandler[] parameters;
-
- public FunctionCaller() {
- this( null );
- }
-
- public FunctionCaller(Function function) {
- this.function = function;
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- return this.function.execute( this.parameters,
- context );
- }
-
- public int getValueType(ExecutionContext context) {
- return SimpleValueType.FUNCTION;
- }
-
- public void setFunction(Function function) {
- this.function = function;
- }
-
- public Function getFunction() {
- return this.function;
- }
-
- public String getName() {
- return (this.function == null) ? null : this.function.getName();
- }
-
- public LispList createList(int index) {
- return this.function.createList( index );
- }
-
- public void addParameter(ValueHandler valueHandler) {
- if ( this.parameters == null ) {
- this.parameters = new ValueHandler[]{valueHandler};
- } else {
- ValueHandler[] temp = new ValueHandler[parameters.length + 1];
- System.arraycopy( this.parameters,
- 0,
- temp,
- 0,
- this.parameters.length );
- temp[temp.length - 1] = valueHandler;
- this.parameters = temp;
- }
- }
-
- public ValueHandler[] getParameters() {
- return this.parameters;
- }
-
- public Object getObject(ExecutionContext context) {
- return getValue( context ).getObject( context );
- }
-
- public void setValue(ExecutionContext context,
- Object object) {
- throw new RuntimeException( "You cannot set the value on a Function" );
- }
-
- public void replaceTempTokens(Map variables) {
- if ( this.parameters == null ) {
- return;
- }
- for ( int i = 0, length = this.parameters.length; i < length; i++ ) {
- if ( this.parameters[i] instanceof TempTokenVariable ) {
- TempTokenVariable var = (TempTokenVariable) this.parameters[i];
- this.parameters[i] = (ValueHandler) variables.get( var.getIdentifier() );
- } else if ( this.parameters[i] instanceof FunctionCaller ) {
- ((FunctionCaller) parameters[i]).replaceTempTokens( variables );
- } else if ( this.parameters[i] instanceof ListValueHandler ) {
- ((ListValueHandler) parameters[i]).replaceTempTokens( variables );
- }
- }
- }
-
- public BigDecimal getBigDecimalValue(ExecutionContext context) throws NumberFormatException {
- return getValue( context ).getBigDecimalValue( context );
- }
-
- public BigInteger getBigIntegerValue(ExecutionContext context) throws NumberFormatException {
- return getValue( context ).getBigIntegerValue( context );
- }
-
- public boolean getBooleanValue(ExecutionContext context) throws ClassCastException {
- return getValue( context ).getBooleanValue( context );
- }
-
- public double getDoubleValue(ExecutionContext context) throws NumberFormatException {
- return getValue( context ).getDoubleValue( context );
- }
-
- public float getFloatValue(ExecutionContext context) throws NumberFormatException {
- return getValue( context ).getFloatValue( context );
- }
-
- public int getIntValue(ExecutionContext context) throws NumberFormatException {
- return getValue( context ).getIntValue( context );
- }
-
- public long getLongValue(ExecutionContext context) throws NumberFormatException {
- return getValue( context ).getLongValue( context );
- }
-
- public short getShortValue(ExecutionContext context) throws NumberFormatException {
- return getValue( context ).getShortValue( context );
- }
-
- public String getStringValue(ExecutionContext context) {
- return getValue( context ).getStringValue( context );
- }
-
- public String toString() {
- return "[FunctionCaller " + this.function + "]";
- }
-
- public boolean equals(ValueHandler other, ExecutionContext context) {
- return this == other;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/IndexedLocalVariableValue.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/IndexedLocalVariableValue.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/IndexedLocalVariableValue.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,64 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.VariableValueHandler;
-
-
-public class IndexedLocalVariableValue extends BaseValueHandler implements VariableValueHandler {
- private static final long serialVersionUID = 400L;
-
- /** The identifier for the variable. */
- private final String identifier;
- private final int index;
-
- /**
- * Construct.
- *
- * @param identifier
- * The name of the variable.
- */
- public IndexedLocalVariableValue(final String identifier, final int index) {
- this.identifier = identifier;
- this.index = index;
- }
-
- /**
- * Retrieve the variable's identifier.
- *
- * @return The variable's identifier.
- */
- public String getIdentifier() {
- return this.identifier;
- }
-
- public int getValueType(ExecutionContext context) {
- return context.getLocalVariable( this.index ).getValueType( context );
- }
-
- public Object getObject(ExecutionContext context) {
- return getValue(context).getObject( context );
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- ValueHandler valueHandler = context.getLocalVariable( this.index );
- ValueHandler nested;
- while ( (nested = valueHandler.getValue( context ) ) != valueHandler ) {
- valueHandler = nested;
- }
- return valueHandler;
- }
-
- public void setValue(ExecutionContext context,
- Object object) {
- context.setLocalVariable( this.index, (ValueHandler) object );
- }
-
- public String toString() {
- String name = getClass().getName();
- name = name.substring( name.lastIndexOf( "." ) + 1 );
- return "[" + name + " identifier = '" + getIdentifier() + "']";
- }
-
-}
-
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/ListValueHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/ListValueHandler.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/ListValueHandler.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,163 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Map;
-
-import org.drools.base.SimpleValueType;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-
-public class ListValueHandler
- implements
- ValueHandler {
- private ValueHandler[] list;
-
- public ListValueHandler() {
-
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- return this;
- }
-
- public int getValueType(ExecutionContext context) {
- return SimpleValueType.LIST;
- }
-
- public void add(ListValueHandler list,
- ExecutionContext context) {
- add( list.getList(),
- context );
- }
-
- public void add(ValueHandler[] valueHandlers,
- ExecutionContext context) {
- for ( int i = 0, length = valueHandlers.length; i < length; i++ ) {
- add( valueHandlers[i],
- context );
- }
- }
-
- public void add(ValueHandler valueHandler,
- ExecutionContext context) {
- ValueHandler nested = valueHandler.getValue( context );
- valueHandler = (nested != null ) ? nested : valueHandler;
- if ( valueHandler instanceof ListValueHandler ) {
- add( (ListValueHandler) valueHandler,
- context );
- } else {
- add( valueHandler );
- }
- }
-
- public void add(ValueHandler valueHandler) {
- if ( this.list == null ) {
- this.list = new ValueHandler[]{valueHandler};
- } else {
- ValueHandler[] temp = new ValueHandler[this.list.length + 1];
- System.arraycopy( this.list,
- 0,
- temp,
- 0,
- this.list.length );
- temp[temp.length - 1] = valueHandler;
- this.list = temp;
- }
- }
-
- public ValueHandler[] getList() {
- return this.list;
- }
-
- public BigDecimal getBigDecimalValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "ListValueHandler cannot return BigDecimal" );
- }
-
- public BigInteger getBigIntegerValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "ListValueHandler cannot return BigInteger" );
- }
-
- public boolean getBooleanValue(ExecutionContext context) throws ClassCastException {
- throw new RuntimeException( "ListValueHandler cannot return Boolean" );
- }
-
- public double getDoubleValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "ListValueHandler cannot return Double" );
- }
-
- public float getFloatValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "ListValueHandler cannot return Float" );
- }
-
- public int getIntValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "ListValueHandler cannot return Int" );
- }
-
- public long getLongValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "ListValueHandler cannot return Long" );
- }
-
- public short getShortValue(ExecutionContext context) throws NumberFormatException {
- throw new RuntimeException( "ListValueHandler cannot return Short" );
- }
-
- public String getStringValue(ExecutionContext context) {
- throw new RuntimeException( "ListValueHandler cannot return String" );
- }
-
- public Object getObject(ExecutionContext context) {
- Object[] objects = new Object[this.list.length];
- for ( int i = 0, length = this.list.length; i < length; i++ ) {
- objects[i] = this.list[i].getObject( context );
- }
-
- return objects;
- }
-
- public void setValue(ExecutionContext context,
- Object object) {
- throw new RuntimeException( "cannot set value on ListValueHandler" );
- }
-
- public void replaceTempTokens(Map variables) {
- for ( int i = 0, length = this.list.length; i < length; i++ ) {
- if ( this.list[i] instanceof TempTokenVariable ) {
- TempTokenVariable var = (TempTokenVariable) this.list[i];
- this.list[i] = (ValueHandler) variables.get( var.getIdentifier() );
- } else if ( this.list[i] instanceof FunctionCaller ) {
- ((FunctionCaller) list[i]).replaceTempTokens( variables );
- } else if ( this.list[i] instanceof ListValueHandler ) {
- ((ListValueHandler) list[i]).replaceTempTokens( variables );
- }
- }
- }
-
- public int size() {
- return (this.list == null) ? 0 : this.list.length;
- }
-
- public boolean isEmpty() {
- return (this.list == null) ? true : this.list.length > 0;
- }
-
- public String toString() {
- StringBuffer b = new StringBuffer();
- b.append( "[ListValueHandler " );
- for ( int i = 0, length = this.list.length; i < length; i++ ) {
- b.append( this.list[i] + " " );
- }
- b.append( "]" );
-
- return b.toString();
- }
-
- public boolean equals(ValueHandler other, ExecutionContext context) {
- for ( int i = 0, length = this.list.length; i < length; i++ ) {
- if ( !getValue( context ).equals( other.getValue( context ), context) ) {
- return false;
- }
- }
- return true;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/LongValueHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/LongValueHandler.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/LongValueHandler.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,97 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-import org.drools.base.SimpleValueType;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-
-public class LongValueHandler implements ValueHandler {
- private long longValue;
-
- public LongValueHandler(String longValue) {
- this.longValue = Long.valueOf( longValue ).longValue();
- }
-
- public int getValueType(ExecutionContext context) {
- return SimpleValueType.INTEGER;
- }
-
- public LongValueHandler(long longValue) {
- this.longValue = longValue;
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- return this;
- }
-
- public void setValue(ExecutionContext context, Object value) {
- throw new RuntimeException( "LiteralValues cannot be set");
- }
-
- public Object getObject(ExecutionContext context) {
- return new Long( this.longValue );
- }
-
- public BigDecimal getBigDecimalValue(ExecutionContext context) throws NumberFormatException {
- return new BigDecimal( this.longValue );
- }
-
- public BigInteger getBigIntegerValue(ExecutionContext context) throws NumberFormatException {
- return BigInteger.valueOf( this.longValue );
- }
-
- public boolean getBooleanValue(ExecutionContext context) throws ClassCastException {
- return ( this.longValue == 0 ) ? false : true;
- }
-
- public double getDoubleValue(ExecutionContext context) throws NumberFormatException {
- return this.longValue;
- }
-
- public float getFloatValue(ExecutionContext context) throws NumberFormatException {
- return this.longValue;
- }
-
- public int getIntValue(ExecutionContext context) throws NumberFormatException {
- return (int) this.longValue;
- }
-
- public long getLongValue(ExecutionContext context) throws NumberFormatException {
- return this.longValue;
- }
-
- public short getShortValue(ExecutionContext context) throws NumberFormatException {
- return (short) this.longValue;
- }
-
- public String getStringValue(ExecutionContext context) {
- return Long.toString( this.longValue );
- }
-
- public String toString() {
- return "[LongLiteralValue value='" + this.longValue + "']";
- }
-
- public int hashCode() {
- final int PRIME = 31;
- int result = 1;
- result = PRIME * result + (int) (longValue ^ (longValue >>> 32));
- return result;
- }
-
- public boolean equals(Object obj) {
- if ( this == obj ) return true;
- if ( obj == null ) return false;
- if ( ! ( obj instanceof LongValueHandler ) ) return false;
- final LongValueHandler other = (LongValueHandler) obj;
- if ( longValue != other.longValue ) return false;
- return true;
- }
-
- public boolean equals(ValueHandler other, ExecutionContext context) {
- return getLongValue( context ) == other.getLongValue( context );
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/ObjectValueHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/ObjectValueHandler.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/ObjectValueHandler.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,30 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import org.drools.base.SimpleValueType;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-
-public class ObjectValueHandler extends BaseValueHandler {
- private Object objectValue;
-
- public ObjectValueHandler(Object objectValue) {
- this.objectValue = objectValue;
- }
-
- public int getValueType(ExecutionContext context) {
- return SimpleValueType.OBJECT;
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- return this;
- }
-
- public void setValue(ExecutionContext context, Object value) {
- throw new RuntimeException( "LiteralValues cannot be set");
- }
-
- public Object getObject(ExecutionContext context) {
- return this.objectValue;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/TempTokenVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clp/valuehandlers/TempTokenVariable.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/valuehandlers/TempTokenVariable.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,41 +0,0 @@
-package org.drools.clp.valuehandlers;
-
-import org.drools.base.SimpleValueType;
-import org.drools.clp.ExecutionContext;
-import org.drools.clp.ValueHandler;
-import org.drools.clp.VariableValueHandler;
-
-
-public class TempTokenVariable extends BaseValueHandler implements VariableValueHandler {
-
- private String identifier;
-
- public TempTokenVariable(String identifier) {
- this.identifier = identifier;
- }
-
- public ValueHandler getValue(ExecutionContext context) {
- return this;
- }
-
- public String getIdentifier() {
- return this.identifier;
- }
-
- public int getValueType(ExecutionContext context) {
- return SimpleValueType.UNKNOWN;
- }
-
- public Object getObject(ExecutionContext context) {
- throw new UnsupportedOperationException( "TempTokenVariable Variable identifer='" + getIdentifier() + " cannot be read" );
- }
-
- public void setValue(ExecutionContext context, Object value) {
- throw new UnsupportedOperationException( "TempTokenVariable Variable identifer='" + getIdentifier() + " cannot be set" );
- }
-
- public void setContext(ExecutionContext context) {
-
- }
-
-}
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips (from rev 18083, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clp)
Deleted: 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/clp/ClipsDialect.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,291 +0,0 @@
-package org.drools.rule.builder.dialect.clp;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.base.ClassFieldExtractorCache;
-import org.drools.base.TypeResolver;
-import org.drools.compiler.Dialect;
-import org.drools.compiler.PackageBuilder;
-import org.drools.lang.descr.AccumulateDescr;
-import org.drools.lang.descr.AndDescr;
-import org.drools.lang.descr.BaseDescr;
-import org.drools.lang.descr.CollectDescr;
-import org.drools.lang.descr.EvalDescr;
-import org.drools.lang.descr.ExistsDescr;
-import org.drools.lang.descr.ForallDescr;
-import org.drools.lang.descr.FromDescr;
-import org.drools.lang.descr.FunctionDescr;
-import org.drools.lang.descr.NotDescr;
-import org.drools.lang.descr.OrDescr;
-import org.drools.lang.descr.PatternDescr;
-import org.drools.lang.descr.ProcessDescr;
-import org.drools.lang.descr.QueryDescr;
-import org.drools.lang.descr.RuleDescr;
-import org.drools.rule.Package;
-import org.drools.rule.builder.AccumulateBuilder;
-import org.drools.rule.builder.ActionBuilder;
-import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.EntryPointBuilder;
-import org.drools.rule.builder.FromBuilder;
-import org.drools.rule.builder.GroupElementBuilder;
-import org.drools.rule.builder.PackageBuildContext;
-import org.drools.rule.builder.PatternBuilder;
-import org.drools.rule.builder.PredicateBuilder;
-import org.drools.rule.builder.ProcessBuildContext;
-import org.drools.rule.builder.ProcessClassBuilder;
-import org.drools.rule.builder.QueryBuilder;
-import org.drools.rule.builder.ReturnValueBuilder;
-import org.drools.rule.builder.ReturnValueEvaluatorBuilder;
-import org.drools.rule.builder.RuleBuildContext;
-import org.drools.rule.builder.RuleClassBuilder;
-import org.drools.rule.builder.RuleConditionBuilder;
-import org.drools.rule.builder.SalienceBuilder;
-import org.drools.rule.builder.dialect.mvel.MVELDialectConfiguration;
-public class ClipsDialect implements Dialect {
-
- public final static String ID = "clips";
-
- private final static String EXPRESSION_DIALECT_NAME = "mvel";
-
- private final PatternBuilder pattern = new PatternBuilder();
- private final ClpConsequenceBuilder consequence = new ClpConsequenceBuilder();
-
- private Package pkg;
- private ClipsDialectConfiguration configuration;
- private TypeResolver typeResolver;
- private ClassFieldExtractorCache classFieldExtractorCache;
-
- // a map of registered builders
- private Map builders;
-
- public void init(PackageBuilder builder) {
- this.pkg = builder.getPackage();
- this.configuration = (ClipsDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "clips" );
- this.typeResolver = builder.getTypeResolver();
- this.classFieldExtractorCache = builder.getClassFieldExtractorCache();
-
- initBuilder();
- }
-
- public void initBuilder() {
- // statically adding all builders to the map
- // but in the future we can move that to a configuration
- // if we want to
- this.builders = new HashMap();
-
- final GroupElementBuilder gebuilder = new GroupElementBuilder();
-
- this.builders.put( AndDescr.class,
- gebuilder );
-
- this.builders.put( OrDescr.class,
- gebuilder );
-
- this.builders.put( NotDescr.class,
- gebuilder );
-
- this.builders.put( ExistsDescr.class,
- gebuilder );
-
- this.builders.put( PatternDescr.class,
- getPatternBuilder() );
-
-// this.builders.put( FromDescr.class,
-// getFromBuilder() );
-//
-// this.builders.put( QueryDescr.class,
-// getQueryBuilder() );
-//
-// this.builders.put( AccumulateDescr.class,
-// getAccumulateBuilder() );
-//
-// this.builders.put( EvalDescr.class,
-// getEvalBuilder() );
-//
-// this.builders.put( CollectDescr.class,
-// collect );
-//
-// this.builders.put( ForallDescr.class,
-// forall );
-//
-// this.builders.put( FunctionDescr.class,
-// function );
- }
-
- public void init(Package pkg) {
- // TODO Auto-generated method stub
-
- }
-
- public void init(RuleDescr ruleDescr) {
- // TODO Auto-generated method stub
-
- }
-
- public void addFunction(FunctionDescr functionDescr,
- TypeResolver typeResolver) {
- // TODO Auto-generated method stub
- }
-
- public void addImport(String importEntry) {
- // TODO Auto-generated method stub
-
- }
-
- public void addRule(RuleBuildContext context) {
- // TODO Auto-generated method stub
-
- }
-
- public void addStaticImport(String importEntry) {
- // TODO Auto-generated method stub
-
- }
-
- public AnalysisResult analyzeBlock(RuleBuildContext context,
- BaseDescr descr,
- String text) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public AnalysisResult analyzeExpression(RuleBuildContext context,
- BaseDescr descr,
- Object content) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public void compileAll() {
- // TODO Auto-generated method stub
-
- }
-
- public AccumulateBuilder getAccumulateBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public RuleConditionBuilder getBuilder(final Class clazz) {
- return (RuleConditionBuilder) this.builders.get( clazz );
- }
-
- public Map getBuilders() {
- return this.builders;
- }
-
- public ClassFieldExtractorCache getClassFieldExtractorCache() {
- return this.classFieldExtractorCache;
- }
-
- public ConsequenceBuilder getConsequenceBuilder() {
- return consequence;
- }
-
- public RuleConditionBuilder getEvalBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public String getExpressionDialectName() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public FromBuilder getFromBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public String getId() {
- return ID;
- }
-
- public PatternBuilder getPatternBuilder() {
- return this.pattern;
- }
-
- public PredicateBuilder getPredicateBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public QueryBuilder getQueryBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public List getResults() {
- return new ArrayList();
- }
-
- public ReturnValueBuilder getReturnValueBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public RuleClassBuilder getRuleClassBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public SalienceBuilder getSalienceBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public TypeResolver getTypeResolver() {
- return this.typeResolver;
- }
-
- public void addProcess(ProcessBuildContext context) {
- // TODO Auto-generated method stub
-
- }
-
- public AnalysisResult analyzeBlock(PackageBuildContext context,
- BaseDescr descr,
- String text,
- Set[] availableIdentifiers) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public AnalysisResult analyzeExpression(PackageBuildContext context,
- BaseDescr descr,
- Object content,
- Set[] availableIdentifiers) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public ActionBuilder getActionBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public EntryPointBuilder getEntryPointBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public ProcessClassBuilder getProcessClassBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public ReturnValueEvaluatorBuilder getReturnValueEvaluatorBuilder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public void init(ProcessDescr processDescr) {
- // TODO Auto-generated method stub
-
- }
-
-}
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java (from rev 18196, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clp/ClipsDialect.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialect.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,291 @@
+package org.drools.rule.builder.dialect.clips;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.TypeResolver;
+import org.drools.compiler.Dialect;
+import org.drools.compiler.PackageBuilder;
+import org.drools.lang.descr.AccumulateDescr;
+import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.lang.descr.CollectDescr;
+import org.drools.lang.descr.EvalDescr;
+import org.drools.lang.descr.ExistsDescr;
+import org.drools.lang.descr.ForallDescr;
+import org.drools.lang.descr.FromDescr;
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.NotDescr;
+import org.drools.lang.descr.OrDescr;
+import org.drools.lang.descr.PatternDescr;
+import org.drools.lang.descr.ProcessDescr;
+import org.drools.lang.descr.QueryDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.Package;
+import org.drools.rule.builder.AccumulateBuilder;
+import org.drools.rule.builder.ActionBuilder;
+import org.drools.rule.builder.ConsequenceBuilder;
+import org.drools.rule.builder.EntryPointBuilder;
+import org.drools.rule.builder.FromBuilder;
+import org.drools.rule.builder.GroupElementBuilder;
+import org.drools.rule.builder.PackageBuildContext;
+import org.drools.rule.builder.PatternBuilder;
+import org.drools.rule.builder.PredicateBuilder;
+import org.drools.rule.builder.ProcessBuildContext;
+import org.drools.rule.builder.ProcessClassBuilder;
+import org.drools.rule.builder.QueryBuilder;
+import org.drools.rule.builder.ReturnValueBuilder;
+import org.drools.rule.builder.ReturnValueEvaluatorBuilder;
+import org.drools.rule.builder.RuleBuildContext;
+import org.drools.rule.builder.RuleClassBuilder;
+import org.drools.rule.builder.RuleConditionBuilder;
+import org.drools.rule.builder.SalienceBuilder;
+import org.drools.rule.builder.dialect.mvel.MVELDialectConfiguration;
+public class ClipsDialect implements Dialect {
+
+ public final static String ID = "clips";
+
+ private final static String EXPRESSION_DIALECT_NAME = "mvel";
+
+ private final PatternBuilder pattern = new PatternBuilder();
+ private final ClpConsequenceBuilder consequence = new ClpConsequenceBuilder();
+
+ private Package pkg;
+ private ClipsDialectConfiguration configuration;
+ private TypeResolver typeResolver;
+ private ClassFieldExtractorCache classFieldExtractorCache;
+
+ // a map of registered builders
+ private Map builders;
+
+ public void init(PackageBuilder builder) {
+ this.pkg = builder.getPackage();
+ this.configuration = (ClipsDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "clips" );
+ this.typeResolver = builder.getTypeResolver();
+ this.classFieldExtractorCache = builder.getClassFieldExtractorCache();
+
+ initBuilder();
+ }
+
+ public void initBuilder() {
+ // statically adding all builders to the map
+ // but in the future we can move that to a configuration
+ // if we want to
+ this.builders = new HashMap();
+
+ final GroupElementBuilder gebuilder = new GroupElementBuilder();
+
+ this.builders.put( AndDescr.class,
+ gebuilder );
+
+ this.builders.put( OrDescr.class,
+ gebuilder );
+
+ this.builders.put( NotDescr.class,
+ gebuilder );
+
+ this.builders.put( ExistsDescr.class,
+ gebuilder );
+
+ this.builders.put( PatternDescr.class,
+ getPatternBuilder() );
+
+// this.builders.put( FromDescr.class,
+// getFromBuilder() );
+//
+// this.builders.put( QueryDescr.class,
+// getQueryBuilder() );
+//
+// this.builders.put( AccumulateDescr.class,
+// getAccumulateBuilder() );
+//
+// this.builders.put( EvalDescr.class,
+// getEvalBuilder() );
+//
+// this.builders.put( CollectDescr.class,
+// collect );
+//
+// this.builders.put( ForallDescr.class,
+// forall );
+//
+// this.builders.put( FunctionDescr.class,
+// function );
+ }
+
+ public void init(Package pkg) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void init(RuleDescr ruleDescr) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void addFunction(FunctionDescr functionDescr,
+ TypeResolver typeResolver) {
+ // TODO Auto-generated method stub
+ }
+
+ public void addImport(String importEntry) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void addRule(RuleBuildContext context) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void addStaticImport(String importEntry) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public AnalysisResult analyzeBlock(RuleBuildContext context,
+ BaseDescr descr,
+ String text) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public AnalysisResult analyzeExpression(RuleBuildContext context,
+ BaseDescr descr,
+ Object content) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void compileAll() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public AccumulateBuilder getAccumulateBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public RuleConditionBuilder getBuilder(final Class clazz) {
+ return (RuleConditionBuilder) this.builders.get( clazz );
+ }
+
+ public Map getBuilders() {
+ return this.builders;
+ }
+
+ public ClassFieldExtractorCache getClassFieldExtractorCache() {
+ return this.classFieldExtractorCache;
+ }
+
+ public ConsequenceBuilder getConsequenceBuilder() {
+ return consequence;
+ }
+
+ public RuleConditionBuilder getEvalBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getExpressionDialectName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public FromBuilder getFromBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getId() {
+ return ID;
+ }
+
+ public PatternBuilder getPatternBuilder() {
+ return this.pattern;
+ }
+
+ public PredicateBuilder getPredicateBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public QueryBuilder getQueryBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List getResults() {
+ return new ArrayList();
+ }
+
+ public ReturnValueBuilder getReturnValueBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public RuleClassBuilder getRuleClassBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public SalienceBuilder getSalienceBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public TypeResolver getTypeResolver() {
+ return this.typeResolver;
+ }
+
+ public void addProcess(ProcessBuildContext context) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public AnalysisResult analyzeBlock(PackageBuildContext context,
+ BaseDescr descr,
+ String text,
+ Set[] availableIdentifiers) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public AnalysisResult analyzeExpression(PackageBuildContext context,
+ BaseDescr descr,
+ Object content,
+ Set[] availableIdentifiers) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ActionBuilder getActionBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public EntryPointBuilder getEntryPointBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ProcessClassBuilder getProcessClassBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ReturnValueEvaluatorBuilder getReturnValueEvaluatorBuilder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void init(ProcessDescr processDescr) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialectConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clp/ClipsDialectConfiguration.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialectConfiguration.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,35 +0,0 @@
-package org.drools.rule.builder.dialect.clp;
-
-import org.drools.compiler.Dialect;
-import org.drools.compiler.DialectConfiguration;
-import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.PackageBuilderConfiguration;
-
-/**
- * The Clips dialect.
- *
- *
- */
-public class ClipsDialectConfiguration
- implements
- DialectConfiguration {
-
- private ClipsDialect dialect;
- private PackageBuilderConfiguration conf;
-
- public Dialect getDialect() {
- if ( this.dialect == null ) {
- this.dialect = new ClipsDialect();
- }
- return this.dialect;
- }
-
- public void init(PackageBuilderConfiguration conf) {
- this.conf = conf;
- }
-
- public PackageBuilderConfiguration getPackageBuilderConfiguration() {
- return this.conf;
- }
-
-}
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialectConfiguration.java (from rev 18196, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clp/ClipsDialectConfiguration.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialectConfiguration.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClipsDialectConfiguration.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,35 @@
+package org.drools.rule.builder.dialect.clips;
+
+import org.drools.compiler.Dialect;
+import org.drools.compiler.DialectConfiguration;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+
+/**
+ * The Clips dialect.
+ *
+ *
+ */
+public class ClipsDialectConfiguration
+ implements
+ DialectConfiguration {
+
+ private ClipsDialect dialect;
+ private PackageBuilderConfiguration conf;
+
+ public Dialect getDialect() {
+ if ( this.dialect == null ) {
+ this.dialect = new ClipsDialect();
+ }
+ return this.dialect;
+ }
+
+ public void init(PackageBuilderConfiguration conf) {
+ this.conf = conf;
+ }
+
+ public PackageBuilderConfiguration getPackageBuilderConfiguration() {
+ return this.conf;
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClpConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clp/ClpConsequenceBuilder.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClpConsequenceBuilder.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,28 +0,0 @@
-package org.drools.rule.builder.dialect.clp;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.drools.clp.BlockExecutionEngine;
-import org.drools.clp.ExecutionEngine;
-import org.drools.rule.Declaration;
-import org.drools.rule.Rule;
-import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.RuleBuildContext;
-
-public class ClpConsequenceBuilder implements ConsequenceBuilder {
-
- public void build(RuleBuildContext context) {
- Rule rule = context.getRule();
- BlockExecutionEngine rhs = ( BlockExecutionEngine ) context.getRuleDescr().getConsequence();
- Map vars = new HashMap();
-
- for(Declaration declaration : rule.getDeclarations() ) {
- vars.put( declaration.getIdentifier(), declaration );
- }
-
- rhs.replaceTempTokens( vars );
- rule.setConsequence( rhs );
- }
-
-}
Copied: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClpConsequenceBuilder.java (from rev 18196, labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clp/ClpConsequenceBuilder.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClpConsequenceBuilder.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/rule/builder/dialect/clips/ClpConsequenceBuilder.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,28 @@
+package org.drools.rule.builder.dialect.clips;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.clips.BlockExecutionEngine;
+import org.drools.clips.ExecutionEngine;
+import org.drools.rule.Declaration;
+import org.drools.rule.Rule;
+import org.drools.rule.builder.ConsequenceBuilder;
+import org.drools.rule.builder.RuleBuildContext;
+
+public class ClpConsequenceBuilder implements ConsequenceBuilder {
+
+ public void build(RuleBuildContext context) {
+ Rule rule = context.getRule();
+ BlockExecutionEngine rhs = ( BlockExecutionEngine ) context.getRuleDescr().getConsequence();
+ Map vars = new HashMap();
+
+ for(Declaration declaration : rule.getDeclarations() ) {
+ vars.put( declaration.getIdentifier(), declaration );
+ }
+
+ rhs.replaceTempTokens( vars );
+ rule.setConsequence( rhs );
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips (from rev 18083, labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/clp)
Deleted: labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/CLP.g
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/clp/CLP.g 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/CLP.g 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,820 +0,0 @@
-grammar CLP;
-
- at parser::header {
- package org.drools.clp;
-
- import org.drools.clp.valuehandlers.*;
- import java.util.List;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.HashMap;
- import java.util.Set;
- import java.util.HashSet;
- import java.util.StringTokenizer;
- import org.drools.lang.descr.*;
- import org.drools.lang.Location;
-}
-
- at parser::members {
- private PackageDescr packageDescr;
- private List errors = new ArrayList();
- private String source = "unknown";
- private int lineOffset = 0;
- private DescrFactory factory = new DescrFactory();
- private boolean parserDebug = false;
- private FunctionRegistry functionRegistry;
- private Location location = new Location( Location.LOCATION_UNKNOWN );
-
- public void setFunctionRegistry(FunctionRegistry functionRegistry) {
- this.functionRegistry = functionRegistry;
- }
-
- public void setParserDebug(boolean parserDebug) {
- this.parserDebug = parserDebug;
- }
-
- public void debug(String message) {
- if ( parserDebug )
- System.err.println( "drl parser: " + message );
- }
-
- public void setSource(String source) {
- this.source = source;
- }
- public DescrFactory getFactory() {
- return factory;
- }
-
- public String getSource() {
- return this.source;
- }
-
- public PackageDescr getPackageDescr() {
- return packageDescr;
- }
-
- private int offset(int line) {
- return line + lineOffset;
- }
-
- /**
- * This will set the offset to record when reparsing. Normally is zero of course
- */
- public void setLineOffset(int i) {
- this.lineOffset = i;
- }
-
- private String getString(Token token) {
- String orig = token.getText();
- return orig.substring( 1, orig.length() -1 );
- }
-
- public void reportError(RecognitionException ex) {
- // if we've already reported an error and have not matched a token
- // yet successfully, don't report any errors.
- if ( errorRecovery ) {
- return;
- }
- errorRecovery = true;
-
- ex.line = offset(ex.line); //add the offset if there is one
- errors.add( ex );
- }
-
- /** return the raw RecognitionException errors */
- public List getErrors() {
- return errors;
- }
-
- /** Return a list of pretty strings summarising the errors */
- public List getErrorMessages() {
- List messages = new ArrayList();
- for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
- messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
- }
- return messages;
- }
-
- /** return true if any parser errors were accumulated */
- public boolean hasErrors() {
- return ! errors.isEmpty();
- }
-
- /** This will take a RecognitionException, and create a sensible error message out of it */
- public String createErrorMessage(RecognitionException e)
- {
- StringBuffer message = new StringBuffer();
- message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
- if ( e instanceof MismatchedTokenException ) {
- MismatchedTokenException mte = (MismatchedTokenException)e;
- message.append("mismatched token: "+
- e.token+
- "; expecting type "+
- tokenNames[mte.expecting]);
- }
- else if ( e instanceof MismatchedTreeNodeException ) {
- MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
- message.append("mismatched tree node: "+
- //mtne.foundNode+ FIXME
- "; expecting type "+
- tokenNames[mtne.expecting]);
- }
- else if ( e instanceof NoViableAltException ) {
- NoViableAltException nvae = (NoViableAltException)e;
- message.append( "Unexpected token '" + e.token.getText() + "'" );
- /*
- message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
- " state "+nvae.stateNumber+
- " (decision="+nvae.decisionNumber+
- ") no viable alt; token="+
- e.token);
- */
- }
- else if ( e instanceof EarlyExitException ) {
- EarlyExitException eee = (EarlyExitException)e;
- message.append("required (...)+ loop (decision="+
- eee.decisionNumber+
- ") did not match anything; token="+
- e.token);
- }
- else if ( e instanceof MismatchedSetException ) {
- MismatchedSetException mse = (MismatchedSetException)e;
- message.append("mismatched token '"+
- e.token+
- "' expecting set "+mse.expecting);
- }
- else if ( e instanceof MismatchedNotSetException ) {
- MismatchedNotSetException mse = (MismatchedNotSetException)e;
- message.append("mismatched token '"+
- e.token+
- "' expecting set "+mse.expecting);
- }
- else if ( e instanceof FailedPredicateException ) {
- FailedPredicateException fpe = (FailedPredicateException)e;
- message.append("rule "+fpe.ruleName+" failed predicate: {"+
- fpe.predicateText+"}?");
- } else if (e instanceof GeneralParseException) {
- message.append(" " + e.getMessage());
- }
- return message.toString();
- }
-
- void checkTrailingSemicolon(String text, int line) {
- if (text.trim().endsWith( ";" ) ) {
- this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
- }
- }
-
-}
-
- at lexer::header {
- package org.drools.clp;
-}
-
-/*
-opt_semicolon
- : ';'?
- ;
-
-
-compilation_unit
- :
- ( statement )+
- ;
-*/
-/*
-statement
- :
- //later we add the other possible statements here
- ( //do something with the returned rule here )
- ;
-*/
-/* prolog
- @init {
- String packageName = "";
- }
- : ( n=package_statement { packageName = n; } )?
- {
- this.packageDescr = factory.createPackage( packageName );
- }
- ;
-
-statement
- :
- ( import_statement
- | function_import_statement
- | global
- | function
- | t=template {this.packageDescr.addFactTemplate( t ); }
- | r=rule { if( r != null ) this.packageDescr.addRule( r ); }
- | q=query { if( q != null ) this.packageDescr.addRule( q ); }
- )
- ;
-
-package_statement returns [String packageName]
- @init{
- packageName = null;
- }
- :
- PACKAGE n=dotted_name[null] opt_semicolon
- {
- packageName = n;
- }
- ;
-*/
-
-eval_script[Shell shell]
- : ( i=importDescr{ shell.importDescrHandler( i ); }
- | r=defrule { shell.ruleDescrHandler( r ); }
- //e=execution_block { parserHandler.lispFormHandler( e ); }
- | fc=lisp_list[shell, new LispForm(shell) ] { shell.lispFormHandler(fc); }
- )*
- ;
-
-importDescr returns[ImportDescr importDescr]
- : LEFT_PAREN 'import' importName=NAME { importDescr = new ImportDescr( importName.getText() ); }RIGHT_PAREN
- ;
-/*
-
-execution_list returns[ExecutionEngine engine]
- @init {
- engine = new BlockExecutionEngine();
- BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
- }
-
- :
- (fc=lisp_list[context, new LispForm(context) ] { context.addFunction( (FunctionCaller) fc ); })
- ;
-*/
-
-deffunction returns[Deffunction function]
- @init {
- BuildContext context = null;
- }
- : loc=LEFT_PAREN
- DEFFUNCTION
- ruleName=NAME {
- function = new Deffunction( ruleName.getText() );
- functionRegistry.addFunction( function );
- context = new ExecutionBuildContext( function, functionRegistry );
- }
- loc=LEFT_PAREN
- (v=VAR {
- context.addVariable( function.addParameter( v.getText() ) );
- })*
- RIGHT_PAREN
- (fc=lisp_list[context, new LispForm(context) ] { context.addFunction( (FunctionCaller) fc ); })*
- RIGHT_PAREN
- ;
-
-/*
-deffunction_params[BuildContext context]
- : loc=LEFT_PAREN
- (v=VAR {
- // this creates a parameter on the underlying function
- context.createLocalVariable( v.getText() );
- })*
- RIGHT_PAREN
- ;
-*/
-defrule returns [RuleDescr rule]
- @init {
- rule = null;
- AndDescr lhs = null;
- PatternDescr colum = null;
- AttributeDescr module = null;
- Set declarations = null;
- }
- : loc=LEFT_PAREN
-
- DEFRULE ruleName=NAME
- {
- debug( "start rule: " + ruleName.getText() );
- String ruleStr = ruleName.getText();
-
- if ( ruleStr.indexOf("::") >= 0 ) {
- String mod = ruleStr.substring(0, ruleStr.indexOf("::"));
- ruleStr = ruleStr.substring(ruleStr.indexOf("::")+2);
- module = new AttributeDescr( "agenda-group", mod );
- module.setLocation( offset(ruleName.getLine()), ruleName.getCharPositionInLine() );
- module.setStartCharacter( ((CommonToken)ruleName).getStartIndex() );
- module.setEndCharacter( ((CommonToken)ruleName).getStopIndex() );
- }
-
- rule = new RuleDescr( ruleStr, null );
- if( module != null ) {
- rule.addAttribute( module );
- }
-
- rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
- rule.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-
- // not sure how you define where a LHS starts in clips, so just putting it here for now
- lhs = new AndDescr();
- rule.setLhs( lhs );
- lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
- lhs.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-
- rule.addAttribute( new AttributeDescr( "dialect", "clips") );
-
- declarations = new HashSet();
- }
- documentation=STRING {
- // do nothing here for now
- }
- ruleAttribute[rule]
-
- ce[lhs, declarations]*
-
- '=>'
-
- engine=execution_block { rule.setConsequence( engine ); }
-
- RIGHT_PAREN
- ;
-
-
-ruleAttribute[RuleDescr rule]
- :
- ( LEFT_PAREN 'declare'
- ( LEFT_PAREN d=salience { rule.addAttribute( d ); } RIGHT_PAREN )?
- RIGHT_PAREN )?
- ;
-
-salience returns [AttributeDescr d ]
- @init {
- d = null;
- }
- :
- loc=SALIENCE i=INT
- {
- d = new AttributeDescr( "salience", i.getText() );
- d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
- d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
- d.setEndCharacter( ((CommonToken)i).getStopIndex() );
- }
- ;
-
-
-ce[ConditionalElementDescr in_ce, Set declarations]
- : ( and_ce[in_ce, declarations]
- | or_ce[in_ce, declarations]
- | not_ce[in_ce, declarations]
- | exists_ce[in_ce, declarations]
- | eval_ce[in_ce, declarations]
- | normal_pattern[in_ce, declarations]
- | bound_pattern[in_ce, declarations]
- )
- ;
-
-execution_block returns[ExecutionEngine engine]
- @init {
- engine = new BlockExecutionEngine();
- BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
- }
-
- :
- (fc=lisp_list[context, new LispForm(context) ] { context.addFunction( (FunctionCaller) fc ); })*
- ;
-
-and_ce[ConditionalElementDescr in_ce, Set declarations]
- @init {
- AndDescr andDescr= null;
- }
- : LEFT_PAREN
- AND {
- andDescr = new AndDescr();
- in_ce.addDescr( andDescr );
- }
- ce[andDescr, declarations]+
- RIGHT_PAREN
- ;
-
-or_ce[ConditionalElementDescr in_ce, Set declarations]
- @init {
- OrDescr orDescr= null;
- }
- : LEFT_PAREN
- OR {
- orDescr = new OrDescr();
- in_ce.addDescr( orDescr );
- }
- ce[orDescr, declarations]+
- RIGHT_PAREN
- ;
-
-not_ce[ConditionalElementDescr in_ce, Set declarations]
- @init {
- NotDescr notDescr= null;
- }
- : LEFT_PAREN
- NOT {
- notDescr = new NotDescr();
- in_ce.addDescr( notDescr );
- }
- ce[notDescr, declarations]
- RIGHT_PAREN
- ;
-
-exists_ce[ConditionalElementDescr in_ce, Set declarations]
- @init {
- ExistsDescr existsDescr= null;
- }
- : LEFT_PAREN
- EXISTS {
- existsDescr = new ExistsDescr();
- in_ce.addDescr( existsDescr );
- }
- ce[existsDescr, declarations]
- RIGHT_PAREN
- ;
-
-eval_ce[ConditionalElementDescr in_ce, Set declarations]
- @init {
- EvalDescr evalDescr= null;
- ExecutionEngine engine = new CLPEval();
- BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
- }
- : LEFT_PAREN
- TEST {
- evalDescr = new EvalDescr();
- in_ce.addDescr( evalDescr );
- }
- fc=lisp_list[context, new LispForm(context)] {
- engine.addFunction( (FunctionCaller) fc );
- evalDescr.setContent( engine );
- }
- RIGHT_PAREN
- ;
-
-normal_pattern[ConditionalElementDescr in_ce, Set declarations]
- @init {
- PatternDescr pattern = null;
- ConditionalElementDescr top = null;
- }
- : LEFT_PAREN
- name=NAME {
- pattern = new PatternDescr(name.getText());
- in_ce.addDescr( pattern );
- top = pattern.getConstraint();
-
- }
- field_constriant[top, declarations]*
- RIGHT_PAREN
- ;
-
-
-
-bound_pattern[ConditionalElementDescr in_ce, Set declarations]
- @init {
- PatternDescr pattern = null;
- String identifier = null;
- ConditionalElementDescr top = null;
- }
- : var=VAR {
- identifier = var.getText();
- }
- ASSIGN_OP LEFT_PAREN name=NAME
- {
- pattern = new PatternDescr(name.getText());
- pattern.setIdentifier( identifier );
- in_ce.addDescr( pattern );
- top = pattern.getConstraint();
- }
- field_constriant[top, declarations]*
- RIGHT_PAREN
- ;
-
-field_constriant[ConditionalElementDescr base, Set declarations]
- @init {
- List list = new ArrayList();
- FieldBindingDescr fbd = null;
- FieldConstraintDescr fc = null;
- RestrictionConnectiveDescr top = null;
- String op = "==";
- }
- :
- LEFT_PAREN f=NAME
- {
- 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]
- RIGHT_PAREN
- ;
-/*
-connected_constraint[RestrictionConnectiveDescr rc, ConditionalElementDescr base]
- :
- restriction[rc, base]
- (
- AMPERSAND { rc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND)); }
- connected_constraint[rc, base]
- |
- PIPE {rc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR)); }
- connected_constraint[rc, base]
- )?
- ;
-*/
-
-
-or_restr_connective[ RestrictionConnectiveDescr rcBase, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ]
- options {
- backtrack=true;
- }
- @init {
- RestrictionConnectiveDescr or = new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR);
- }
- :
- and_restr_connective[or, ceBase, fcBase, declarations]
- (
- options {backtrack=true;}
- : PIPE
- {
- location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
- }
- and_restr_connective[or, ceBase, fcBase, declarations]
- )*
- ;
- finally {
- if( or.getRestrictions().size() == 1 ) {
- $rcBase.addOrMerge( (RestrictionDescr) or.getRestrictions().get( 0 ) );
- } else if ( or.getRestrictions().size() > 1 ) {
- $rcBase.addRestriction( or );
- }
- }
-
-and_restr_connective[ RestrictionConnectiveDescr rcBase, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ]
- @init {
- RestrictionConnectiveDescr and = new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND);
- }
- :
- restriction[and, ceBase, fcBase, declarations]
- ( AMPERSAND restriction[and, ceBase, fcBase, declarations] )*
- /*
- ( options {backtrack=true;}
- : t=AMPERSAND
- {
- location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
- }
- restriction[and, ceBase]
- )*
- */
- ;
- finally {
- if( and.getRestrictions().size() == 1) {
- $rcBase.addOrMerge( (RestrictionDescr) and.getRestrictions().get( 0 ) );
- } else if ( and.getRestrictions().size() > 1 ) {
- $rcBase.addRestriction( and );
- }
- }
-
-restriction[RestrictionConnectiveDescr rc, ConditionalElementDescr base, FieldConstraintDescr fcBase, Set declarations ]
- @init {
- String op = "==";
- }
- : (TILDE{op = "!=";})?
- ( predicate_constraint[rc, op, base]
- | return_value_restriction[op, rc]
- | variable_restriction[op, rc, base, fcBase, declarations]
- | lc=literal_restriction {
- rc.addRestriction( new LiteralRestrictionDescr(op, lc) );
- op = "==";
- }
- )
- ;
-
-predicate_constraint[RestrictionConnectiveDescr rc, String op, ConditionalElementDescr base]
- @init {
- ExecutionEngine engine = new CLPPredicate();
- BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
- }
- : COLON
- fc=lisp_list[context, new LispForm(context)] {
- engine.addFunction( (FunctionCaller) fc );
- $rc.addRestriction( new PredicateDescr( engine ) );
- }
-
- ;
-
-
-return_value_restriction[String op, RestrictionConnectiveDescr rc]
- @init {
- ExecutionEngine engine = new CLPReturnValue();
- BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
- }
- : EQUALS
- func=lisp_list[context, new LispForm(context)] {
- engine.addFunction( (FunctionCaller) func );
- rc.addRestriction( new ReturnValueRestrictionDescr (op, engine ) );
- }
- ;
-
-//will add a declaration field binding, if this is the first time the name is used
-variable_restriction[String op, RestrictionConnectiveDescr rc, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ]
- : VAR {
- if ( declarations.contains( $VAR.text ) ) {
- rc.addRestriction( new VariableRestrictionDescr(op, $VAR.text) );
- } else {
- FieldBindingDescr fbd = new FieldBindingDescr();
- fbd.setIdentifier( $VAR.text );
- fbd.setFieldName( fcBase.getFieldName() );
- ceBase.insertBeforeLast( FieldConstraintDescr.class, fbd );
- declarations.add( $VAR.text );
- }
- }
- ;
-
-
-literal_restriction returns [String text]
- @init {
- text = null;
- }
- :
- t=literal {
- text = t;
- }
- ;
-
-lisp_list[BuildContext context, LispList list] returns[ValueHandler valueHandler]
- : LEFT_PAREN
- ( a=lisp_atom[context] { list.add( a ); }
- | a=lisp_list[context, list.createList()] { list.add( a ); }
- )*
- RIGHT_PAREN
- { valueHandler = list.getValueHandler(); }
- ;
-
-lisp_atom[BuildContext context] returns[ValueHandler value]
- @init {
- value = null;
- }
- :
- ( t=VAR { value = context.getVariableValueHandler(t.getText() ); }
- | t=STRING { value = new ObjectValueHandler( getString( t ) ); }
- | t=NAME { value = new ObjectValueHandler( t.getText() ); }
- | t=FLOAT { value = new DoubleValueHandler( t.getText() ); }
- | t=INT { value = new LongValueHandler( t.getText() ); }
- | t=BOOL { value = new BooleanValueHandler( t.getText() ); }
- | t=NULL { value = ObjectValueHandler.NULL; }
- )
- ;
-
-literal returns [String text]
- @init {
- text = null;
- }
- : ( t=STRING { text = getString( t ); }
- | t=NAME { text = t.getText(); }
- | t=INT { text = t.getText(); }
- | t=FLOAT { text = t.getText(); }
- | t=BOOL { text = t.getText(); }
- | t=NULL { text = null; }
- )
- ;
-
-WS : ( ' '
- | '\t'
- | '\f'
- | EOL
- )
- { $channel=HIDDEN; }
- ;
-
-DEFRULE : 'defrule';
-DEFFUNCTION : 'deffunction';
-OR : 'or';
-AND : 'and';
-NOT : 'not';
-EXISTS : 'exists';
-TEST : 'test';
-
-NULL : 'null';
-
-DECLARE : 'declare';
-
-SALIENCE : 'salience';
-
-//MODIFY : 'modify';
-
-fragment
-EOL :
- ( ( '\r\n' )=> '\r\n' // Evil DOS
- | '\r' // Macintosh
- | '\n' // Unix (the right way)
- )
- ;
-
-INT
- : ('-')?('0'..'9')+
- ;
-
-FLOAT
- : ('-')?('0'..'9')+ '.' ('0'..'9')+
- ;
-
-STRING
- : ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
- | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
- ;
-
-fragment
-HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
-
-fragment
-EscapeSequence
- : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
- | UnicodeEscape
- | OctalEscape
- ;
-
-fragment
-OctalEscape
- : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
- | '\\' ('0'..'7') ('0'..'7')
- | '\\' ('0'..'7')
- ;
-
-fragment
-UnicodeEscape
- : '\\' 'u' HexDigit HexDigit HexDigit HexDigit
- ;
-
-BOOL
- : ('true'|'false')
- ;
-
-VAR : '?'('a'..'z'|'A'..'Z'|'_'|'$')SYMBOL*
- ;
-
-SH_STYLE_SINGLE_LINE_COMMENT
- : '#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n' */
- { $channel=HIDDEN; }
- ;
-
-
-C_STYLE_SINGLE_LINE_COMMENT
- : '//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n'
- { $channel=HIDDEN; }
- ;
-
-
-LEFT_PAREN
- : '('
- ;
-
-RIGHT_PAREN
- : ')'
- ;
-
-LEFT_SQUARE
- : '['
- ;
-
-RIGHT_SQUARE
- : ']'
- ;
-
-LEFT_CURLY
- : '{'
- ;
-
-RIGHT_CURLY
- : '}'
- ;
-
-TILDE : '~'
- ;
-
-AMPERSAND
- : '&'
- ;
-
-PIPE
- : '|'
- ;
-
-ASSIGN_OP
- : '<-'
- ;
-
-COLON : ':';
-
-EQUALS : '=';
-
-MULTI_LINE_COMMENT
- : '/*' (options{greedy=false;} : .)* '*/'
- { $channel=HIDDEN; }
- ;
-
-NAME : SYMBOL ;
-
-fragment
-SYMBOL
- : ((~(' '|'\t'|'\n'|'\r'|'"'|'('|')'|';'|'&'|'|'|'~'|'?'|'$'))|('$' ~('?'|' '|'\t'|'\n'|'\r'|'"'|'('|')'|';'|'&'|'|'|'~'|'<')))
- (~(' '|'\t'|'\n'|'\r'|'"'|'('|')'|';'|'&'|'|'|'~'|'<'|'?'))*
- ;
-
Deleted: labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/CLPMVEL.g
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/clp/CLPMVEL.g 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/CLPMVEL.g 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,891 +0,0 @@
-grammar CLPMVEL;
-
- at parser::header {
- package org.drools.clp;
-
- import org.drools.clp.mvel.*;
-
- import org.drools.clp.valuehandlers.*;
- import java.util.List;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.HashMap;
- import java.util.Set;
- import java.util.HashSet;
- import java.util.StringTokenizer;
- import org.drools.lang.descr.*;
- import org.drools.lang.Location;
-}
-
- at parser::members {
- private PackageDescr packageDescr;
- private List errors = new ArrayList();
- private String source = "unknown";
- private int lineOffset = 0;
- private DescrFactory factory = new DescrFactory();
- private boolean parserDebug = false;
- private FunctionRegistry functionRegistry;
- private Location location = new Location( Location.LOCATION_UNKNOWN );
-
- public void setFunctionRegistry(FunctionRegistry functionRegistry) {
- this.functionRegistry = functionRegistry;
- }
-
- public void setParserDebug(boolean parserDebug) {
- this.parserDebug = parserDebug;
- }
-
- public void debug(String message) {
- if ( parserDebug )
- System.err.println( "drl parser: " + message );
- }
-
- public void setSource(String source) {
- this.source = source;
- }
- public DescrFactory getFactory() {
- return factory;
- }
-
- public String getSource() {
- return this.source;
- }
-
- public PackageDescr getPackageDescr() {
- return packageDescr;
- }
-
- private int offset(int line) {
- return line + lineOffset;
- }
-
- /**
- * This will set the offset to record when reparsing. Normally is zero of course
- */
- public void setLineOffset(int i) {
- this.lineOffset = i;
- }
-
- private String getString(Token token) {
- String orig = token.getText();
- return orig.substring( 1, orig.length() -1 );
- }
-
- public void reportError(RecognitionException ex) {
- // if we've already reported an error and have not matched a token
- // yet successfully, don't report any errors.
- if ( errorRecovery ) {
- return;
- }
- errorRecovery = true;
-
- ex.line = offset(ex.line); //add the offset if there is one
- errors.add( ex );
- }
-
- /** return the raw RecognitionException errors */
- public List getErrors() {
- return errors;
- }
-
- /** Return a list of pretty strings summarising the errors */
- public List getErrorMessages() {
- List messages = new ArrayList();
- for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
- messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
- }
- return messages;
- }
-
- /** return true if any parser errors were accumulated */
- public boolean hasErrors() {
- return ! errors.isEmpty();
- }
-
- /** This will take a RecognitionException, and create a sensible error message out of it */
- public String createErrorMessage(RecognitionException e)
- {
- StringBuffer message = new StringBuffer();
- message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
- if ( e instanceof MismatchedTokenException ) {
- MismatchedTokenException mte = (MismatchedTokenException)e;
- message.append("mismatched token: "+
- e.token+
- "; expecting type "+
- tokenNames[mte.expecting]);
- }
- else if ( e instanceof MismatchedTreeNodeException ) {
- MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
- message.append("mismatched tree node: "+
- //mtne.foundNode+ FIXME
- "; expecting type "+
- tokenNames[mtne.expecting]);
- }
- else if ( e instanceof NoViableAltException ) {
- NoViableAltException nvae = (NoViableAltException)e;
- message.append( "Unexpected token '" + e.token.getText() + "'" );
- /*
- message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
- " state "+nvae.stateNumber+
- " (decision="+nvae.decisionNumber+
- ") no viable alt; token="+
- e.token);
- */
- }
- else if ( e instanceof EarlyExitException ) {
- EarlyExitException eee = (EarlyExitException)e;
- message.append("required (...)+ loop (decision="+
- eee.decisionNumber+
- ") did not match anything; token="+
- e.token);
- }
- else if ( e instanceof MismatchedSetException ) {
- MismatchedSetException mse = (MismatchedSetException)e;
- message.append("mismatched token '"+
- e.token+
- "' expecting set "+mse.expecting);
- }
- else if ( e instanceof MismatchedNotSetException ) {
- MismatchedNotSetException mse = (MismatchedNotSetException)e;
- message.append("mismatched token '"+
- e.token+
- "' expecting set "+mse.expecting);
- }
- else if ( e instanceof FailedPredicateException ) {
- FailedPredicateException fpe = (FailedPredicateException)e;
- message.append("rule "+fpe.ruleName+" failed predicate: {"+
- fpe.predicateText+"}?");
- } else if (e instanceof GeneralParseException) {
- message.append(" " + e.getMessage());
- }
- return message.toString();
- }
-
- void checkTrailingSemicolon(String text, int line) {
- if (text.trim().endsWith( ";" ) ) {
- this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
- }
- }
-
-}
-
- at lexer::header {
- package org.drools.clp;
-}
-
-/*
-opt_semicolon
- : ';'?
- ;
-
-
-compilation_unit
- :
- ( statement )+
- ;
-*/
-/*
-statement
- :
- //later we add the other possible statements here
- ( //do something with the returned rule here )
- ;
-*/
-/* prolog
- @init {
- String packageName = "";
- }
- : ( n=package_statement { packageName = n; } )?
- {
- this.packageDescr = factory.createPackage( packageName );
- }
- ;
-
-statement
- :
- ( import_statement
- | function_import_statement
- | global
- | function
- | t=template {this.packageDescr.addFactTemplate( t ); }
- | r=rule { if( r != null ) this.packageDescr.addRule( r ); }
- | q=query { if( q != null ) this.packageDescr.addRule( q ); }
- )
- ;
-
-package_statement returns [String packageName]
- @init{
- packageName = null;
- }
- :
- PACKAGE n=dotted_name[null] opt_semicolon
- {
- packageName = n;
- }
- ;
-*/
-
-eval_script[Shell shell]
- : ( i=importDescr{ shell.importDescrHandler( i ); }
- | r=defrule { shell.ruleDescrHandler( r ); }
- //e=execution_block { parserHandler.lispFormHandler( e ); }
- | fc=lisp_list[shell, new LispForm(shell) ] { shell.lispFormHandler(fc); }
- )*
- ;
-
-importDescr returns[ImportDescr importDescr]
- : LEFT_PAREN 'import' importName=NAME { importDescr = new ImportDescr( importName.getText() ); }RIGHT_PAREN
- ;
-/*
-
-execution_list returns[ExecutionEngine engine]
- @init {
- engine = new BlockExecutionEngine();
- BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
- }
-
- :
- (fc=lisp_list[context, new LispForm(context) ] { context.addFunction( (FunctionCaller) fc ); })
- ;
-*/
-
-deffunction returns[Deffunction function]
- @init {
- BuildContext context = null;
- }
- : loc=LEFT_PAREN
- DEFFUNCTION
- ruleName=NAME {
- function = new Deffunction( ruleName.getText() );
- functionRegistry.addFunction( function );
- context = new ExecutionBuildContext( function, functionRegistry );
- }
- loc=LEFT_PAREN
- (v=VAR {
- context.addVariable( function.addParameter( v.getText() ) );
- })*
- RIGHT_PAREN
- (fc=lisp_list[context, new LispForm(context) ] { context.addFunction( (FunctionCaller) fc ); })*
- RIGHT_PAREN
- ;
-
-/*
-deffunction_params[BuildContext context]
- : loc=LEFT_PAREN
- (v=VAR {
- // this creates a parameter on the underlying function
- context.createLocalVariable( v.getText() );
- })*
- RIGHT_PAREN
- ;
-*/
-defrule returns [RuleDescr rule]
- @init {
- rule = null;
- AndDescr lhs = null;
- PatternDescr colum = null;
- AttributeDescr module = null;
- Set declarations = null;
- }
- : loc=LEFT_PAREN
-
- DEFRULE ruleName=NAME
- {
- debug( "start rule: " + ruleName.getText() );
- String ruleStr = ruleName.getText();
-
- if ( ruleStr.indexOf("::") >= 0 ) {
- String mod = ruleStr.substring(0, ruleStr.indexOf("::"));
- ruleStr = ruleStr.substring(ruleStr.indexOf("::")+2);
- module = new AttributeDescr( "agenda-group", mod );
- module.setLocation( offset(ruleName.getLine()), ruleName.getCharPositionInLine() );
- module.setStartCharacter( ((CommonToken)ruleName).getStartIndex() );
- module.setEndCharacter( ((CommonToken)ruleName).getStopIndex() );
- }
-
- rule = new RuleDescr( ruleStr, null );
- if( module != null ) {
- rule.addAttribute( module );
- }
-
- rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
- rule.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-
- // not sure how you define where a LHS starts in clips, so just putting it here for now
- lhs = new AndDescr();
- rule.setLhs( lhs );
- lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
- lhs.setStartCharacter( ((CommonToken)loc).getStartIndex() );
-
- rule.addAttribute( new AttributeDescr( "dialect", "clips") );
-
- declarations = new HashSet();
- }
- documentation=STRING {
- // do nothing here for now
- }
- ruleAttribute[rule]
-
- ce[lhs, declarations]*
-
- '=>'
-
- engine=execution_block { rule.setConsequence( engine ); }
-
- RIGHT_PAREN
- ;
-
-
-ruleAttribute[RuleDescr rule]
- :
- ( LEFT_PAREN 'declare'
- ( LEFT_PAREN d=salience { rule.addAttribute( d ); } RIGHT_PAREN )?
- RIGHT_PAREN )?
- ;
-
-salience returns [AttributeDescr d ]
- @init {
- d = null;
- }
- :
- loc=SALIENCE i=INT
- {
- d = new AttributeDescr( "salience", i.getText() );
- d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
- d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
- d.setEndCharacter( ((CommonToken)i).getStopIndex() );
- }
- ;
-
-
-ce[ConditionalElementDescr in_ce, Set declarations]
- : ( and_ce[in_ce, declarations]
- | or_ce[in_ce, declarations]
- | not_ce[in_ce, declarations]
- | exists_ce[in_ce, declarations]
- | eval_ce[in_ce, declarations]
- | normal_pattern[in_ce, declarations]
- | bound_pattern[in_ce, declarations]
- )
- ;
-
-execution_block returns[ExecutionEngine engine]
- @init {
- engine = new BlockExecutionEngine();
- BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
- }
-
- :
- (fc=lisp_list[context, new LispForm(context) ] { context.addFunction( (FunctionCaller) fc ); })*
- ;
-
-and_ce[ConditionalElementDescr in_ce, Set declarations]
- @init {
- AndDescr andDescr= null;
- }
- : LEFT_PAREN
- AND {
- andDescr = new AndDescr();
- in_ce.addDescr( andDescr );
- }
- ce[andDescr, declarations]+
- RIGHT_PAREN
- ;
-
-or_ce[ConditionalElementDescr in_ce, Set declarations]
- @init {
- OrDescr orDescr= null;
- }
- : LEFT_PAREN
- OR {
- orDescr = new OrDescr();
- in_ce.addDescr( orDescr );
- }
- ce[orDescr, declarations]+
- RIGHT_PAREN
- ;
-
-not_ce[ConditionalElementDescr in_ce, Set declarations]
- @init {
- NotDescr notDescr= null;
- }
- : LEFT_PAREN
- NOT {
- notDescr = new NotDescr();
- in_ce.addDescr( notDescr );
- }
- ce[notDescr, declarations]
- RIGHT_PAREN
- ;
-
-exists_ce[ConditionalElementDescr in_ce, Set declarations]
- @init {
- ExistsDescr existsDescr= null;
- }
- : LEFT_PAREN
- EXISTS {
- existsDescr = new ExistsDescr();
- in_ce.addDescr( existsDescr );
- }
- ce[existsDescr, declarations]
- RIGHT_PAREN
- ;
-
-eval_ce[ConditionalElementDescr in_ce, Set declarations]
- @init {
- EvalDescr evalDescr= null;
- ExecutionEngine engine = new CLPEval();
- BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
- }
- : LEFT_PAREN
- TEST {
- evalDescr = new EvalDescr();
- in_ce.addDescr( evalDescr );
- }
- fc=lisp_list[context, new LispForm(context)] {
- engine.addFunction( (FunctionCaller) fc );
- evalDescr.setContent( engine );
- }
- RIGHT_PAREN
- ;
-
-normal_pattern[ConditionalElementDescr in_ce, Set declarations]
- @init {
- PatternDescr pattern = null;
- ConditionalElementDescr top = null;
- }
- : LEFT_PAREN
- name=NAME {
- pattern = new PatternDescr(name.getText());
- in_ce.addDescr( pattern );
- top = pattern.getConstraint();
-
- }
- field_constriant[top, declarations]*
- RIGHT_PAREN
- ;
-
-
-
-bound_pattern[ConditionalElementDescr in_ce, Set declarations]
- @init {
- PatternDescr pattern = null;
- String identifier = null;
- ConditionalElementDescr top = null;
- }
- : var=VAR {
- identifier = var.getText();
- }
- ASSIGN_OP LEFT_PAREN name=NAME
- {
- pattern = new PatternDescr(name.getText());
- pattern.setIdentifier( identifier );
- in_ce.addDescr( pattern );
- top = pattern.getConstraint();
- }
- field_constriant[top, declarations]*
- RIGHT_PAREN
- ;
-
-field_constriant[ConditionalElementDescr base, Set declarations]
- @init {
- List list = new ArrayList();
- FieldBindingDescr fbd = null;
- FieldConstraintDescr fc = null;
- RestrictionConnectiveDescr top = null;
- String op = "==";
- }
- :
- LEFT_PAREN f=NAME
- {
- 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]
- RIGHT_PAREN
- ;
-/*
-connected_constraint[RestrictionConnectiveDescr rc, ConditionalElementDescr base]
- :
- restriction[rc, base]
- (
- AMPERSAND { rc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND)); }
- connected_constraint[rc, base]
- |
- PIPE {rc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR)); }
- connected_constraint[rc, base]
- )?
- ;
-*/
-
-
-or_restr_connective[ RestrictionConnectiveDescr rcBase, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ]
- options {
- backtrack=true;
- }
- @init {
- RestrictionConnectiveDescr or = new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR);
- }
- :
- and_restr_connective[or, ceBase, fcBase, declarations]
- (
- options {backtrack=true;}
- : PIPE
- {
- location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
- }
- and_restr_connective[or, ceBase, fcBase, declarations]
- )*
- ;
- finally {
- if( or.getRestrictions().size() == 1 ) {
- $rcBase.addOrMerge( (RestrictionDescr) or.getRestrictions().get( 0 ) );
- } else if ( or.getRestrictions().size() > 1 ) {
- $rcBase.addRestriction( or );
- }
- }
-
-and_restr_connective[ RestrictionConnectiveDescr rcBase, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ]
- @init {
- RestrictionConnectiveDescr and = new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND);
- }
- :
- restriction[and, ceBase, fcBase, declarations]
- ( AMPERSAND restriction[and, ceBase, fcBase, declarations] )*
- /*
- ( options {backtrack=true;}
- : t=AMPERSAND
- {
- location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
- }
- restriction[and, ceBase]
- )*
- */
- ;
- finally {
- if( and.getRestrictions().size() == 1) {
- $rcBase.addOrMerge( (RestrictionDescr) and.getRestrictions().get( 0 ) );
- } else if ( and.getRestrictions().size() > 1 ) {
- $rcBase.addRestriction( and );
- }
- }
-
-restriction[RestrictionConnectiveDescr rc, ConditionalElementDescr base, FieldConstraintDescr fcBase, Set declarations ]
- @init {
- String op = "==";
- }
- : (TILDE{op = "!=";})?
- ( predicate_constraint[rc, op, base]
- | return_value_restriction[op, rc]
- | variable_restriction[op, rc, base, fcBase, declarations]
- | lc=literal_restriction {
- rc.addRestriction( new LiteralRestrictionDescr(op, lc) );
- op = "==";
- }
- )
- ;
-
-predicate_constraint[RestrictionConnectiveDescr rc, String op, ConditionalElementDescr base]
- @init {
- ExecutionEngine engine = new CLPPredicate();
- BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
- }
- : COLON
- fc=lisp_list[context, new LispForm(context)] {
- engine.addFunction( (FunctionCaller) fc );
- $rc.addRestriction( new PredicateDescr( engine ) );
- }
-
- ;
-
-
-return_value_restriction[String op, RestrictionConnectiveDescr rc]
- @init {
- ExecutionEngine engine = new CLPReturnValue();
- BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
- }
- : EQUALS
- func=lisp_list[context, new LispForm(context)] {
- engine.addFunction( (FunctionCaller) func );
- rc.addRestriction( new ReturnValueRestrictionDescr (op, engine ) );
- }
- ;
-
-//will add a declaration field binding, if this is the first time the name is used
-variable_restriction[String op, RestrictionConnectiveDescr rc, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ]
- : VAR {
- if ( declarations.contains( $VAR.text ) ) {
- rc.addRestriction( new VariableRestrictionDescr(op, $VAR.text) );
- } else {
- FieldBindingDescr fbd = new FieldBindingDescr();
- fbd.setIdentifier( $VAR.text );
- fbd.setFieldName( fcBase.getFieldName() );
- ceBase.insertBeforeLast( FieldConstraintDescr.class, fbd );
- declarations.add( $VAR.text );
- }
- }
- ;
-
-
-literal_restriction returns [String text]
- @init {
- text = null;
- }
- :
- t=literal {
- text = t;
- }
- ;
-
-
-eval_sExpressions returns[List<SExpression> list]
- @init {
- list = new ArrayList<SExpression>();
- }
- :
- (a=lisp_list2 { list.add( a ); })*
-// { sExpressions = ( SExpression[] ) list.toArray( new SExpression[ list.size () ] ); }
- ;
-
-lisp_list2 returns[SExpression sExpression]
- @init {
- List list = new ArrayList();
- sExpression = null;
- }
- : LEFT_PAREN
- t=NAME { list.add( new SymbolLispAtom2( t.getText() ) ); }
- ( a=lisp_atom2 { list.add( a ); }
- | a=lisp_list2 { list.add( a ); }
- )+
- RIGHT_PAREN
- { sExpression = new LispForm2( ( SExpression[] ) list.toArray( new SExpression[ list.size () ] ) ); }
- ;
-
-lisp_atom2 returns[SExpression sExpression]
- @init {
- sExpression = null;
- }
- :
- /*(
- t=FLOAT { sExpression = new LispAtom2( t.getText() ); }
- | t=INT { sExpression = new LispAtom2( t.getText() ); }
- | t=BOOL { sExpression = new LispAtom2( t.getText() ); }
- | t=NULL { sExpression = new LispAtom2( null ); }
- | t=STRING { sExpression = new LispAtom2( getString( t ) ); }
- | t=NAME { sExpression = new LispAtom2( t.getText() ); }
-
- )*/
-
- (
- t=VAR { sExpression = new VariableLispAtom2( t.getText() ); }
- | t=STRING { sExpression = new StringLispAtom2( getString( t ) ); }
- | t=FLOAT { sExpression = new FloatLispAtom2( t.getText() ); }
- | t=INT { sExpression = new IntLispAtom2( t.getText() ); }
- | t=BOOL { sExpression = new BoolLispAtom2( t.getText() ); }
- | t=NULL { sExpression = new NullLispAtom2( null ); }
- | t=NAME { sExpression = new SymbolLispAtom2( t.getText() ); }
-
- )
- ;
-
-lisp_list[BuildContext context, LispList list] returns[ValueHandler valueHandler]
- : LEFT_PAREN
- ( a=lisp_atom[context] { list.add( a ); }
- | a=lisp_list[context, list.createList()] { list.add( a ); }
- )*
- RIGHT_PAREN
- { valueHandler = list.getValueHandler(); }
- ;
-
-lisp_atom[BuildContext context] returns[ValueHandler value]
- @init {
- value = null;
- }
- :
- ( t=VAR { value = context.getVariableValueHandler(t.getText() ); }
- | t=STRING { value = new ObjectValueHandler( getString( t ) ); }
- | t=NAME { value = new ObjectValueHandler( t.getText() ); }
- | t=FLOAT { value = new DoubleValueHandler( t.getText() ); }
- | t=INT { value = new LongValueHandler( t.getText() ); }
- | t=BOOL { value = new BooleanValueHandler( t.getText() ); }
- | t=NULL { value = ObjectValueHandler.NULL; }
- )
- ;
-
-literal returns [String text]
- @init {
- text = null;
- }
- : ( t=STRING { text = getString( t ); }
- | t=NAME { text = t.getText(); }
- | t=INT { text = t.getText(); }
- | t=FLOAT { text = t.getText(); }
- | t=BOOL { text = t.getText(); }
- | t=NULL { text = null; }
- )
- ;
-
-WS : ( ' '
- | '\t'
- | '\f'
- | EOL
- )
- { $channel=HIDDEN; }
- ;
-
-DEFRULE : 'defrule';
-DEFFUNCTION : 'deffunction';
-OR : 'or';
-AND : 'and';
-NOT : 'not';
-EXISTS : 'exists';
-TEST : 'test';
-
-NULL : 'null';
-
-DECLARE : 'declare';
-
-SALIENCE : 'salience';
-
-//MODIFY : 'modify';
-
-fragment
-EOL :
- ( ( '\r\n' )=> '\r\n' // Evil DOS
- | '\r' // Macintosh
- | '\n' // Unix (the right way)
- )
- ;
-
-INT
- : ('-')?('0'..'9')+
- ;
-
-FLOAT
- : ('-')?('0'..'9')+ '.' ('0'..'9')+
- ;
-
-STRING
- : ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
- | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
- ;
-
-fragment
-HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
-
-fragment
-EscapeSequence
- : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
- | UnicodeEscape
- | OctalEscape
- ;
-
-fragment
-OctalEscape
- : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
- | '\\' ('0'..'7') ('0'..'7')
- | '\\' ('0'..'7')
- ;
-
-fragment
-UnicodeEscape
- : '\\' 'u' HexDigit HexDigit HexDigit HexDigit
- ;
-
-BOOL
- : ('true'|'false')
- ;
-
-VAR : '?'~DELIM+
- ;
-
-SH_STYLE_SINGLE_LINE_COMMENT
- : '#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n' */
- { $channel=HIDDEN; }
- ;
-
-
-C_STYLE_SINGLE_LINE_COMMENT
- : '//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n'
- { $channel=HIDDEN; }
- ;
-
-
-LEFT_PAREN
- : '('
- ;
-
-RIGHT_PAREN
- : ')'
- ;
-
-LEFT_SQUARE
- : '['
- ;
-
-RIGHT_SQUARE
- : ']'
- ;
-
-LEFT_CURLY
- : '{'
- ;
-
-RIGHT_CURLY
- : '}'
- ;
-
-TILDE : '~'
- ;
-
-AMPERSAND
- : '&'
- ;
-
-PIPE
- : '|'
- ;
-
-ASSIGN_OP
- : '<-'
- ;
-
-COLON : ':';
-
-EQUALS : '=';
-
-MULTI_LINE_COMMENT
- : '/*' (options{greedy=false;} : .)* '*/'
- { $channel=HIDDEN; }
- ;
-
-NAME : SYMBOL ;
-
-fragment
-SYMBOL : CHAR* ;
-
-fragment
-START_DELIM : ' '|'\t'|'\n'|'\r'|'"'|'('|')'|';'|'&'|'|'|'~'|'?';
-
-fragment
-DELIM : ' '|'\t'|'\n'|'\r'|'"'|'('|')'|';'|'&'|'|'|'~'|'<';
-
-fragment
-CHAR : ('a'..'z'|'A'..'Z'|'0'..'9'|'!'|'$'|'%'|'^'|'*'|'_'|'-'|'+'|'='|'\\'|'/'|'@'|'#'|':'|'>'|','|'.'|'['|']'|'{'|'}');
-
-
-/*
-fragment
-SYMBOL
- : ((~(' '|'\t'|'\n'|'\r'|'"'|'('|')'|';'|'&'|'|'|'~'|'?'|'$'))|('$' ~('?'|' '|'\t'|'\n'|'\r'|'"'|'('|')'|';'|'&'|'|'|'~'|'<')))
- (~(' '|'\t'|'\n'|'\r'|'"'|'('|')'|';'|'&'|'|'|'~'|'<'|'?'))*
- ;
-*/
-
-
-
-
Copied: labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/CLPMVEL.g (from rev 18196, labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/clp/CLPMVEL.g)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/CLPMVEL.g (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/CLPMVEL.g 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,849 @@
+grammar CLPMVEL;
+
+ at parser::header {
+ package org.drools.clp;
+
+ import org.drools.clp.*;
+ import org.drools.clp.mvel.*;
+
+ import java.util.List;
+ import java.util.ArrayList;
+ import java.util.Iterator;
+ import java.util.HashMap;
+ import java.util.Set;
+ import java.util.HashSet;
+ import java.util.StringTokenizer;
+ import org.drools.lang.descr.*;
+ import org.drools.lang.Location;
+}
+
+ at parser::members {
+ private PackageDescr packageDescr;
+ private List errors = new ArrayList();
+ private String source = "unknown";
+ private int lineOffset = 0;
+ private DescrFactory factory = new DescrFactory();
+ private MVELBuildContext context;
+ private boolean parserDebug = false;
+ private Location location = new Location( Location.LOCATION_UNKNOWN );
+
+ public void setParserDebug(boolean parserDebug) {
+ this.parserDebug = parserDebug;
+ }
+
+ public void debug(String message) {
+ if ( parserDebug )
+ System.err.println( "drl parser: " + message );
+ }
+
+ public void setSource(String source) {
+ this.source = source;
+ }
+ public DescrFactory getFactory() {
+ return factory;
+ }
+
+ public String getSource() {
+ return this.source;
+ }
+
+ public PackageDescr getPackageDescr() {
+ return packageDescr;
+ }
+
+ private int offset(int line) {
+ return line + lineOffset;
+ }
+
+ /**
+ * This will set the offset to record when reparsing. Normally is zero of course
+ */
+ public void setLineOffset(int i) {
+ this.lineOffset = i;
+ }
+
+ private String getString(Token token) {
+ String orig = token.getText();
+ return orig.substring( 1, orig.length() -1 );
+ }
+
+ public void reportError(RecognitionException ex) {
+ // if we've already reported an error and have not matched a token
+ // yet successfully, don't report any errors.
+ if ( errorRecovery ) {
+ return;
+ }
+ errorRecovery = true;
+
+ ex.line = offset(ex.line); //add the offset if there is one
+ errors.add( ex );
+ }
+
+ /** return the raw RecognitionException errors */
+ public List getErrors() {
+ return errors;
+ }
+
+ /** Return a list of pretty strings summarising the errors */
+ public List getErrorMessages() {
+ List messages = new ArrayList();
+ for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
+ messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
+ }
+ return messages;
+ }
+
+ /** return true if any parser errors were accumulated */
+ public boolean hasErrors() {
+ return ! errors.isEmpty();
+ }
+
+ /** This will take a RecognitionException, and create a sensible error message out of it */
+ public String createErrorMessage(RecognitionException e)
+ {
+ StringBuffer message = new StringBuffer();
+ message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
+ if ( e instanceof MismatchedTokenException ) {
+ MismatchedTokenException mte = (MismatchedTokenException)e;
+ message.append("mismatched token: "+
+ e.token+
+ "; expecting type "+
+ tokenNames[mte.expecting]);
+ }
+ else if ( e instanceof MismatchedTreeNodeException ) {
+ MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
+ message.append("mismatched tree node: "+
+ //mtne.foundNode+ FIXME
+ "; expecting type "+
+ tokenNames[mtne.expecting]);
+ }
+ else if ( e instanceof NoViableAltException ) {
+ NoViableAltException nvae = (NoViableAltException)e;
+ message.append( "Unexpected token '" + e.token.getText() + "'" );
+ /*
+ message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
+ " state "+nvae.stateNumber+
+ " (decision="+nvae.decisionNumber+
+ ") no viable alt; token="+
+ e.token);
+ */
+ }
+ else if ( e instanceof EarlyExitException ) {
+ EarlyExitException eee = (EarlyExitException)e;
+ message.append("required (...)+ loop (decision="+
+ eee.decisionNumber+
+ ") did not match anything; token="+
+ e.token);
+ }
+ else if ( e instanceof MismatchedSetException ) {
+ MismatchedSetException mse = (MismatchedSetException)e;
+ message.append("mismatched token '"+
+ e.token+
+ "' expecting set "+mse.expecting);
+ }
+ else if ( e instanceof MismatchedNotSetException ) {
+ MismatchedNotSetException mse = (MismatchedNotSetException)e;
+ message.append("mismatched token '"+
+ e.token+
+ "' expecting set "+mse.expecting);
+ }
+ else if ( e instanceof FailedPredicateException ) {
+ FailedPredicateException fpe = (FailedPredicateException)e;
+ message.append("rule "+fpe.ruleName+" failed predicate: {"+
+ fpe.predicateText+"}?");
+ } else if (e instanceof GeneralParseException) {
+ message.append(" " + e.getMessage());
+ }
+ return message.toString();
+ }
+
+ void checkTrailingSemicolon(String text, int line) {
+ if (text.trim().endsWith( ";" ) ) {
+ this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
+ }
+ }
+
+}
+
+ at lexer::header {
+ package org.drools.clp;
+}
+
+/*
+opt_semicolon
+ : ';'?
+ ;
+
+
+compilation_unit
+ :
+ ( statement )+
+ ;
+*/
+/*
+statement
+ :
+ //later we add the other possible statements here
+ ( //do something with the returned rule here )
+ ;
+*/
+/* prolog
+ @init {
+ String packageName = "";
+ }
+ : ( n=package_statement { packageName = n; } )?
+ {
+ this.packageDescr = factory.createPackage( packageName );
+ }
+ ;
+
+statement
+ :
+ ( import_statement
+ | function_import_statement
+ | global
+ | function
+ | t=template {this.packageDescr.addFactTemplate( t ); }
+ | r=rule { if( r != null ) this.packageDescr.addRule( r ); }
+ | q=query { if( q != null ) this.packageDescr.addRule( q ); }
+ )
+ ;
+
+package_statement returns [String packageName]
+ @init{
+ packageName = null;
+ }
+ :
+ PACKAGE n=dotted_name[null] opt_semicolon
+ {
+ packageName = n;
+ }
+ ;
+*/
+
+eval[ParserHandler handler, MVELBuildContext context]
+ :
+ { this.context = context; }
+ ( i=importDescr{ handler.importHandler( i ); }
+ | f=deffunction { handler.functionHandler( f ); }
+ | r=defrule { handler.ruleHandler( r ); }
+ | form=lisp_form { handler.lispFormHandler( form ); }
+ )
+ ;
+
+ /*
+eval_sExpressions[MVELClipsContext context] returns[List<SExpression> list]
+ @init {
+ list = new ArrayList<SExpression>();
+ }
+ :
+ ( a=lisp_list { list.add( a ); }
+ | a=deffunction { FunctionHandlers.dump(a, null, context); }
+ )*
+// { sExpressions = ( SExpression[] ) list.toArray( new SExpression[ list.size () ] ); }
+ ;
+ */
+
+importDescr returns[ImportDescr importDescr]
+ : LEFT_PAREN 'import' importName=NAME { importDescr = new ImportDescr( importName.getText() ); } RIGHT_PAREN
+ ;
+/*
+
+execution_list returns[ExecutionEngine engine]
+ @init {
+ engine = new BlockExecutionEngine();
+ BuildContext context = new ExecutionBuildContext( engine, functionRegistry );
+ }
+
+ :
+ (fc=lisp_list[context, new LispForm(context) ] { context.addFunction( (FunctionCaller) fc ); })
+ ;
+*/
+
+/*
+deffunction returns[Deffunction function]
+ @init {
+ BuildContext context = null;
+ }
+ : loc=LEFT_PAREN
+ DEFFUNCTION
+ ruleName=NAME {
+ function = new Deffunction( ruleName.getText() );
+ functionRegistry.addFunction( function );
+ context = new ExecutionBuildContext( function, functionRegistry );
+ }
+ loc=LEFT_PAREN
+ (v=VAR {
+ context.addVariable( function.addParameter( v.getText() ) );
+ })*
+ RIGHT_PAREN
+ (fc=lisp_list[context, new LispForm(context) ] { context.addFunction( (FunctionCaller) fc ); })*
+ RIGHT_PAREN
+ ;
+*/
+
+/*
+deffunction_params[BuildContext context]
+ : loc=LEFT_PAREN
+ (v=VAR {
+ // this creates a parameter on the underlying function
+ context.createLocalVariable( v.getText() );
+ })*
+ RIGHT_PAREN
+ ;
+*/
+
+deffunction returns[FunctionDescr functionDescr]
+ @init {
+ List content = null;
+ functionDescr = null;
+ }
+ : LEFT_PAREN
+ t=DEFFUNCTION //{ list.add( new SymbolLispAtom( t.getText() ) ); } //deffunction
+ name=lisp_atom //name
+ params=lisp_form // params
+ (form=lisp_form { if ( content == null ) content = new ArrayList(); content.add( form ); } )+
+ RIGHT_PAREN
+ { functionDescr = FunctionHandlers.createFunctionDescr( name, params, content ); }
+ //{ sExpression = new LispForm( ( SExpression[] ) list.toArray( new SExpression[ list.size () ] ) ); }
+ ;
+
+defrule returns [RuleDescr rule]
+ @init {
+ rule = null;
+ AndDescr lhs = null;
+ PatternDescr colum = null;
+ AttributeDescr module = null;
+ Set declarations = null;
+ }
+ : loc=LEFT_PAREN
+
+ DEFRULE ruleName=NAME
+ {
+ debug( "start rule: " + ruleName.getText() );
+ String ruleStr = ruleName.getText();
+
+ if ( ruleStr.indexOf("::") >= 0 ) {
+ String mod = ruleStr.substring(0, ruleStr.indexOf("::"));
+ ruleStr = ruleStr.substring(ruleStr.indexOf("::")+2);
+ module = new AttributeDescr( "agenda-group", mod );
+ module.setLocation( offset(ruleName.getLine()), ruleName.getCharPositionInLine() );
+ module.setStartCharacter( ((CommonToken)ruleName).getStartIndex() );
+ module.setEndCharacter( ((CommonToken)ruleName).getStopIndex() );
+ }
+
+ rule = new RuleDescr( ruleStr, null );
+ if( module != null ) {
+ rule.addAttribute( module );
+ }
+
+ rule.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+ rule.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+
+ // not sure how you define where a LHS starts in clips, so just putting it here for now
+ lhs = new AndDescr();
+ rule.setLhs( lhs );
+ lhs.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+ lhs.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+
+ rule.addAttribute( new AttributeDescr( "dialect", "clips") );
+
+ declarations = new HashSet();
+ }
+ documentation=STRING {
+ // do nothing here for now
+ }
+ ruleAttribute[rule]
+
+ ce[lhs, declarations]*
+
+ '=>'
+
+ t=lisp_form { rule.setConsequence( t ); }
+
+ RIGHT_PAREN
+ ;
+
+
+ruleAttribute[RuleDescr rule]
+ :
+ ( LEFT_PAREN 'declare'
+ ( LEFT_PAREN d=salience { rule.addAttribute( d ); } RIGHT_PAREN )?
+ RIGHT_PAREN )?
+ ;
+
+salience returns [AttributeDescr d ]
+ @init {
+ d = null;
+ }
+ :
+ loc=SALIENCE i=INT
+ {
+ d = new AttributeDescr( "salience", i.getText() );
+ d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
+ d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
+ d.setEndCharacter( ((CommonToken)i).getStopIndex() );
+ }
+ ;
+
+
+ce[ConditionalElementDescr in_ce, Set declarations]
+ : ( and_ce[in_ce, declarations]
+ | or_ce[in_ce, declarations]
+ | not_ce[in_ce, declarations]
+ | exists_ce[in_ce, declarations]
+ | eval_ce[in_ce, declarations]
+ | normal_pattern[in_ce, declarations]
+ | bound_pattern[in_ce, declarations]
+ )
+ ;
+
+and_ce[ConditionalElementDescr in_ce, Set declarations]
+ @init {
+ AndDescr andDescr= null;
+ }
+ : LEFT_PAREN
+ AND {
+ andDescr = new AndDescr();
+ in_ce.addDescr( andDescr );
+ }
+ ce[andDescr, declarations]+
+ RIGHT_PAREN
+ ;
+
+or_ce[ConditionalElementDescr in_ce, Set declarations]
+ @init {
+ OrDescr orDescr= null;
+ }
+ : LEFT_PAREN
+ OR {
+ orDescr = new OrDescr();
+ in_ce.addDescr( orDescr );
+ }
+ ce[orDescr, declarations]+
+ RIGHT_PAREN
+ ;
+
+not_ce[ConditionalElementDescr in_ce, Set declarations]
+ @init {
+ NotDescr notDescr= null;
+ }
+ : LEFT_PAREN
+ NOT {
+ notDescr = new NotDescr();
+ in_ce.addDescr( notDescr );
+ }
+ ce[notDescr, declarations]
+ RIGHT_PAREN
+ ;
+
+exists_ce[ConditionalElementDescr in_ce, Set declarations]
+ @init {
+ ExistsDescr existsDescr= null;
+ }
+ : LEFT_PAREN
+ EXISTS {
+ existsDescr = new ExistsDescr();
+ in_ce.addDescr( existsDescr );
+ }
+ ce[existsDescr, declarations]
+ RIGHT_PAREN
+ ;
+
+eval_ce[ConditionalElementDescr in_ce, Set declarations]
+ : LEFT_PAREN
+ TEST
+ t=lisp_form { EvalDescr evalDescr = new EvalDescr(); evalDescr.setContent( t ); in_ce.addDescr( evalDescr ); }
+ RIGHT_PAREN
+ ;
+
+normal_pattern[ConditionalElementDescr in_ce, Set declarations]
+ @init {
+ PatternDescr pattern = null;
+ ConditionalElementDescr top = null;
+ }
+ : LEFT_PAREN
+ name=NAME {
+ pattern = new PatternDescr(name.getText());
+ in_ce.addDescr( pattern );
+ top = pattern.getConstraint();
+
+ }
+ field_constriant[top, declarations]*
+ RIGHT_PAREN
+ ;
+
+
+
+bound_pattern[ConditionalElementDescr in_ce, Set declarations]
+ @init {
+ PatternDescr pattern = null;
+ String identifier = null;
+ ConditionalElementDescr top = null;
+ }
+ : var=VAR {
+ identifier = var.getText();
+ }
+ ASSIGN_OP LEFT_PAREN name=NAME
+ {
+ pattern = new PatternDescr(name.getText());
+ pattern.setIdentifier( identifier );
+ in_ce.addDescr( pattern );
+ top = pattern.getConstraint();
+ }
+ field_constriant[top, declarations]*
+ RIGHT_PAREN
+ ;
+
+field_constriant[ConditionalElementDescr base, Set declarations]
+ @init {
+ List list = new ArrayList();
+ FieldBindingDescr fbd = null;
+ FieldConstraintDescr fc = null;
+ RestrictionConnectiveDescr top = null;
+ String op = "==";
+ }
+ :
+ LEFT_PAREN f=NAME
+ {
+ 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]
+ RIGHT_PAREN
+ ;
+/*
+connected_constraint[RestrictionConnectiveDescr rc, ConditionalElementDescr base]
+ :
+ restriction[rc, base]
+ (
+ AMPERSAND { rc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND)); }
+ connected_constraint[rc, base]
+ |
+ PIPE {rc.addRestriction(new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR)); }
+ connected_constraint[rc, base]
+ )?
+ ;
+*/
+
+
+or_restr_connective[ RestrictionConnectiveDescr rcBase, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ]
+ options {
+ backtrack=true;
+ }
+ @init {
+ RestrictionConnectiveDescr or = new RestrictionConnectiveDescr(RestrictionConnectiveDescr.OR);
+ }
+ :
+ and_restr_connective[or, ceBase, fcBase, declarations]
+ (
+ options {backtrack=true;}
+ : PIPE
+ {
+ location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+ }
+ and_restr_connective[or, ceBase, fcBase, declarations]
+ )*
+ ;
+ finally {
+ if( or.getRestrictions().size() == 1 ) {
+ $rcBase.addOrMerge( (RestrictionDescr) or.getRestrictions().get( 0 ) );
+ } else if ( or.getRestrictions().size() > 1 ) {
+ $rcBase.addRestriction( or );
+ }
+ }
+
+and_restr_connective[ RestrictionConnectiveDescr rcBase, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ]
+ @init {
+ RestrictionConnectiveDescr and = new RestrictionConnectiveDescr(RestrictionConnectiveDescr.AND);
+ }
+ :
+ restriction[and, ceBase, fcBase, declarations]
+ ( AMPERSAND restriction[and, ceBase, fcBase, declarations] )*
+ /*
+ ( options {backtrack=true;}
+ : t=AMPERSAND
+ {
+ location.setType(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+ }
+ restriction[and, ceBase]
+ )*
+ */
+ ;
+ finally {
+ if( and.getRestrictions().size() == 1) {
+ $rcBase.addOrMerge( (RestrictionDescr) and.getRestrictions().get( 0 ) );
+ } else if ( and.getRestrictions().size() > 1 ) {
+ $rcBase.addRestriction( and );
+ }
+ }
+
+restriction[RestrictionConnectiveDescr rc, ConditionalElementDescr base, FieldConstraintDescr fcBase, Set declarations ]
+ @init {
+ String op = "==";
+ }
+ : (TILDE{op = "!=";})?
+ ( predicate_constraint[rc, op, base]
+ | return_value_restriction[op, rc]
+ | variable_restriction[op, rc, base, fcBase, declarations]
+ | lc=literal_restriction {
+ rc.addRestriction( new LiteralRestrictionDescr(op, lc) );
+ op = "==";
+ }
+ )
+ ;
+
+predicate_constraint[RestrictionConnectiveDescr rc, String op, ConditionalElementDescr base]
+ : COLON
+ t=lisp_form { $rc.addRestriction( new PredicateDescr( t ) ); }
+
+ ;
+
+
+return_value_restriction[String op, RestrictionConnectiveDescr rc]
+ : EQUALS
+ t=lisp_form {rc.addRestriction( new ReturnValueRestrictionDescr (op, t ) ); }
+ ;
+
+//will add a declaration field binding, if this is the first time the name is used
+variable_restriction[String op, RestrictionConnectiveDescr rc, ConditionalElementDescr ceBase, FieldConstraintDescr fcBase, Set declarations ]
+ : VAR {
+ if ( declarations.contains( $VAR.text ) ) {
+ rc.addRestriction( new VariableRestrictionDescr(op, $VAR.text) );
+ } else {
+ FieldBindingDescr fbd = new FieldBindingDescr();
+ fbd.setIdentifier( $VAR.text );
+ fbd.setFieldName( fcBase.getFieldName() );
+ ceBase.insertBeforeLast( FieldConstraintDescr.class, fbd );
+ declarations.add( $VAR.text );
+ }
+ }
+ ;
+
+
+literal_restriction returns [String text]
+ @init {
+ text = null;
+ }
+ :
+ t=literal {
+ text = t;
+ }
+ ;
+
+/*
+eval_sExpressions[MVELClipsContext context] returns[List<SExpression> list]
+ @init {
+ list = new ArrayList<SExpression>();
+ }
+ :
+ ( a=lisp_list { list.add( a ); }
+ | a=deffunction { FunctionHandlers.dump(a, null, context); }
+ )*
+// { sExpressions = ( SExpression[] ) list.toArray( new SExpression[ list.size () ] ); }
+ ;
+*/
+lisp_form returns[LispForm lispForm]
+ @init {
+ List list = new ArrayList();
+ lispForm = null;
+ }
+ : LEFT_PAREN
+
+ (
+ t=NAME { list.add( new SymbolLispAtom( t.getText() ) ); }
+ |
+ t=VAR { list.add( new VariableLispAtom( t.getText(), context ) ); }
+ )
+ ( a=lisp_atom { list.add( a ); }
+ | l=lisp_form { list.add( l ); }
+ )*
+ RIGHT_PAREN
+ { lispForm = new LispForm( ( SExpression[] ) list.toArray( new SExpression[ list.size () ] ) ); }
+ ;
+
+lisp_atom returns[SExpression sExpression]
+ @init {
+ sExpression = null;
+ }
+ :
+ (
+ t=VAR { sExpression = new VariableLispAtom( t.getText(), context ); }
+ | t=STRING { sExpression = new StringLispAtom( getString( t ) ); }
+ | t=FLOAT { sExpression = new FloatLispAtom( t.getText() ); }
+ | t=INT { sExpression = new IntLispAtom( t.getText() ); }
+ | t=BOOL { sExpression = new BoolLispAtom( t.getText() ); }
+ | t=NULL { sExpression = new NullLispAtom( null ); }
+ | t=NAME { sExpression = new SymbolLispAtom( "\"" +t.getText() + "\""); }
+
+ )
+ ;
+
+literal returns [String text]
+ @init {
+ text = null;
+ }
+ : ( t=STRING { text = getString( t ); }
+ | t=NAME { text = t.getText(); }
+ | t=INT { text = t.getText(); }
+ | t=FLOAT { text = t.getText(); }
+ | t=BOOL { text = t.getText(); }
+ | t=NULL { text = null; }
+ )
+ ;
+
+WS : ( ' '
+ | '\t'
+ | '\f'
+ | EOL
+ )
+ { $channel=HIDDEN; }
+ ;
+
+DEFRULE : 'defrule';
+DEFFUNCTION : 'deffunction';
+OR : 'or';
+AND : 'and';
+NOT : 'not';
+EXISTS : 'exists';
+TEST : 'test';
+
+NULL : 'null';
+
+DECLARE : 'declare';
+
+SALIENCE : 'salience';
+
+//MODIFY : 'modify';
+
+fragment
+EOL :
+ ( ( '\r\n' )=> '\r\n' // Evil DOS
+ | '\r' // Macintosh
+ | '\n' // Unix (the right way)
+ )
+ ;
+
+INT
+ : ('-')?('0'..'9')+
+ ;
+
+FLOAT
+ : ('-')?('0'..'9')+ '.' ('0'..'9')+
+ ;
+
+STRING
+ : ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
+ | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
+ ;
+
+fragment
+HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
+
+fragment
+EscapeSequence
+ : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
+ | UnicodeEscape
+ | OctalEscape
+ ;
+
+fragment
+OctalEscape
+ : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+ | '\\' ('0'..'7') ('0'..'7')
+ | '\\' ('0'..'7')
+ ;
+
+fragment
+UnicodeEscape
+ : '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+ ;
+
+BOOL
+ : ('true'|'false')
+ ;
+
+VAR : '?' SYMBOL_CHAR+
+ ;
+
+SH_STYLE_SINGLE_LINE_COMMENT
+ : '#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n' */
+ { $channel=HIDDEN; }
+ ;
+
+
+C_STYLE_SINGLE_LINE_COMMENT
+ : '//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n'
+ { $channel=HIDDEN; }
+ ;
+
+
+LEFT_PAREN
+ : '('
+ ;
+
+RIGHT_PAREN
+ : ')'
+ ;
+
+LEFT_SQUARE
+ : '['
+ ;
+
+RIGHT_SQUARE
+ : ']'
+ ;
+
+LEFT_CURLY
+ : '{'
+ ;
+
+RIGHT_CURLY
+ : '}'
+ ;
+
+TILDE : '~'
+ ;
+
+AMPERSAND
+ : '&'
+ ;
+
+PIPE
+ : '|'
+ ;
+
+ASSIGN_OP
+ : '<-'
+ ;
+
+COLON : ':';
+
+EQUALS : '=';
+
+MULTI_LINE_COMMENT
+ : '/*' (options{greedy=false;} : .)* '*/'
+ { $channel=HIDDEN; }
+ ;
+
+NAME : SYMBOL ;
+
+fragment
+SYMBOL : FIRST_SYMBOL_CHAR SYMBOL_CHAR* ;
+
+// allowed <
+// not allowed ?
+fragment
+FIRST_SYMBOL_CHAR : ('a'..'z'|'A'..'Z'|'0'..'9'|'!'|'$'|'%'|'^'|'*'|'_'|'-'|'+'|'='|'\\'|'/'|'@'|'#'|':'|'>'|'<'|','|'.'|'['|']'|'{'|'}');
+
+// allowed ?
+// not allowed <
+fragment
+SYMBOL_CHAR : ('a'..'z'|'A'..'Z'|'0'..'9'|'!'|'$'|'%'|'^'|'*'|'_'|'-'|'+'|'='|'\\'|'/'|'@'|'#'|':'|'>'|','|'.'|'['|']'|'{'|'}'|'?');
+
+
+
Deleted: labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/functions.conf
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/clp/functions.conf 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/functions.conf 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,28 +0,0 @@
-#working with vars
-org.drools.clp.functions.BindFunction
-org.drools.clp.functions.ModifyFunction
-org.drools.clp.functions.CreateListFunction
-
-#flow control
-org.drools.clp.functions.IfFunction
-org.drools.clp.functions.BreakFunction
-org.drools.clp.functions.SwitchFunction
-org.drools.clp.functions.SwitchCaseFunction
-org.drools.clp.functions.SwitchDefaultFunction
-org.drools.clp.functions.WhileFunction
-org.drools.clp.functions.ForeachFunction
-org.drools.clp.functions.PrognFunction
-
-#math comparators
-org.drools.clp.functions.LessThanFunction
-org.drools.clp.functions.GreaterThanOrEqualFunction
-org.drools.clp.functions.EqFunction
-
-#math operators
-org.drools.clp.functions.PlusFunction
-org.drools.clp.functions.MinusFunction
-org.drools.clp.functions.DivideFunction
-org.drools.clp.functions.MultiplyFunction
-
-#io
-org.drools.clp.functions.PrintoutFunction
Copied: labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/functions.conf (from rev 18196, labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/clp/functions.conf)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/functions.conf (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/main/resources/org/drools/cips/functions.conf 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,28 @@
+#working with vars
+org.drools.clp.functions.BindFunction
+org.drools.clp.functions.ModifyFunction
+org.drools.clp.functions.CreateListFunction
+
+#flow control
+org.drools.clp.functions.IfFunction
+org.drools.clp.functions.BreakFunction
+org.drools.clp.functions.SwitchFunction
+org.drools.clp.functions.SwitchCaseFunction
+org.drools.clp.functions.SwitchDefaultFunction
+org.drools.clp.functions.WhileFunction
+org.drools.clp.functions.ForeachFunction
+org.drools.clp.functions.PrognFunction
+
+#math comparators
+org.drools.clp.functions.LessThanFunction
+org.drools.clp.functions.GreaterThanOrEqualFunction
+org.drools.clp.functions.EqFunction
+
+#math operators
+org.drools.clp.functions.PlusFunction
+org.drools.clp.functions.MinusFunction
+org.drools.clp.functions.DivideFunction
+org.drools.clp.functions.MultiplyFunction
+
+#io
+org.drools.clp.functions.PrintoutFunction
Copied: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/AddFunctionTest.java (from rev 18083, labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/AddFunctionTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/AddFunctionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/AddFunctionTest.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,111 @@
+package org.drools.clips;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.base.ClassObjectType;
+import org.drools.clips.functions.PlusFunction;
+import org.drools.clips.valuehandlers.CLPLocalDeclarationVariable;
+import org.drools.clips.valuehandlers.CLPPreviousDeclarationVariable;
+import org.drools.clips.valuehandlers.FunctionCaller;
+import org.drools.clips.valuehandlers.IndexedLocalVariableValue;
+import org.drools.clips.valuehandlers.ObjectValueHandler;
+import org.drools.clips.valuehandlers.TempTokenVariable;
+import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.ReteTuple;
+import org.drools.rule.Pattern;
+import org.drools.rule.Declaration;
+import org.drools.spi.PatternExtractor;
+import org.drools.spi.ObjectType;
+
+import junit.framework.TestCase;
+
+public class AddFunctionTest extends TestCase {
+ public void testAdd() {
+ ValueHandler val1 = new ObjectValueHandler( new BigDecimal( 10 ) );
+ ValueHandler val2 = new ObjectValueHandler( new BigDecimal( 10 ) );
+
+ ValueHandler[] params = new ValueHandler[]{val1, val2};
+ PlusFunction add = new PlusFunction();
+
+ assertEquals( new BigDecimal( 20 ),
+ add.execute( params,
+ null ).getObject( null ) );
+ }
+
+ public void testNestedAdd() {
+ ValueHandler val1 = new ObjectValueHandler( new BigDecimal( 10 ) );
+ ValueHandler val2 = new ObjectValueHandler( new BigDecimal( 10 ) );
+ ValueHandler val3 = new ObjectValueHandler( new BigDecimal( 10 ) );
+
+ FunctionCaller functionValue = new FunctionCaller( new PlusFunction() );
+ functionValue.addParameter( val1 );
+ functionValue.addParameter( val2 );
+
+ ValueHandler[] params = new ValueHandler[]{val3, functionValue};
+
+ PlusFunction add = new PlusFunction();
+
+ assertEquals( new BigDecimal( 30 ),
+ add.execute( params,
+ null ).getObject( null ) );
+ }
+
+ public void testNestedAddWithVars() {
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ InternalWorkingMemory workingMemory = (InternalWorkingMemory) ruleBase.newStatefulSession();
+
+ InternalFactHandle factHandle = (InternalFactHandle) workingMemory.insert( new BigDecimal( 10 ) );
+ ReteTuple tuple = new ReteTuple( factHandle );
+
+ ObjectType objectType = new ClassObjectType( BigDecimal.class );
+ Pattern pattern0 = new Pattern( 0,
+ objectType );
+ Pattern pattern1 = new Pattern( 1,
+ objectType );
+ PatternExtractor extractor = new PatternExtractor( objectType );
+
+ Map variables = new HashMap();
+ variables.put( "pd",
+ new CLPPreviousDeclarationVariable( new Declaration( "pd",
+ extractor,
+ pattern0 ), workingMemory ) );
+ variables.put( "ld",
+ new CLPLocalDeclarationVariable( new Declaration( "ld",
+ extractor,
+ pattern1
+ ), workingMemory ) );
+
+ ValueHandler val1 = new TempTokenVariable( "pd" );
+ ValueHandler val2 = new IndexedLocalVariableValue( "lv",
+ 0 );
+ ValueHandler val3 = new TempTokenVariable( "ld" );
+
+ ExecutionContext context = new ExecutionContextImpl( workingMemory,
+ tuple,
+ new BigDecimal( 10 ),
+ 1 );
+ context.setLocalVariable( 0,
+ new ObjectValueHandler( new BigDecimal( 10 ) ) );
+
+ FunctionCaller functionValue = new FunctionCaller( new PlusFunction() );
+ functionValue.addParameter( val1 );
+ functionValue.addParameter( val2 );
+
+ PlusFunction add = new PlusFunction();
+
+ FunctionCaller f = new FunctionCaller( add );
+ f.addParameter( val3 );
+ f.addParameter( functionValue );
+
+ f.replaceTempTokens( variables );
+
+ assertEquals( new BigDecimal( 30 ),
+ f.getBigDecimalValue( context ) );
+
+ }
+}
Copied: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/BlockExecutionTest.java (from rev 18181, labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/BlockExecutionTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/BlockExecutionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/BlockExecutionTest.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,60 @@
+package org.drools.clips;
+
+import java.math.BigDecimal;
+
+import junit.framework.TestCase;
+
+import org.drools.Person;
+import org.drools.clips.functions.BindFunction;
+import org.drools.clips.functions.ModifyFunction;
+import org.drools.clips.functions.PlusFunction;
+import org.drools.clips.valuehandlers.FunctionCaller;
+import org.drools.clips.valuehandlers.ListValueHandler;
+import org.drools.clips.valuehandlers.LongValueHandler;
+import org.drools.clips.valuehandlers.ObjectValueHandler;
+
+public class BlockExecutionTest extends TestCase {
+
+ XFunctionRegistry registry;
+
+ public void setUp() {
+ this.registry = new XFunctionRegistry( BuiltinFunctions.getInstance() );
+ }
+
+ public void testAddWithModify() {
+ BlockExecutionEngine engine = new BlockExecutionEngine();
+ BuildContext build = new ExecutionBuildContext(engine, this.registry );
+
+ FunctionCaller addCaller = new FunctionCaller( new PlusFunction() );
+ addCaller.addParameter( new ObjectValueHandler( new BigDecimal( 20) ) );
+ addCaller.addParameter( new LongValueHandler( "11" ) );
+
+ FunctionCaller bindCaller = new FunctionCaller( new BindFunction() );
+ bindCaller.addParameter( build.createLocalVariable( "?x" ) );
+ bindCaller.addParameter( addCaller );
+
+ engine.addFunction( bindCaller );
+
+
+ FunctionCaller modifyCaller = new FunctionCaller( new ModifyFunction() );
+ build.createLocalVariable( "?p" );
+ modifyCaller.addParameter( build.getVariableValueHandler( "?p" ) );
+
+ ListValueHandler list = new ListValueHandler();
+ list.add( new ObjectValueHandler( "age") );
+ list.add( build.getVariableValueHandler( "?x" ) );
+ modifyCaller.addParameter( list );
+
+ ExecutionContext context = new ExecutionContextImpl(null, null, 2);
+ Person p = new Person("mark");
+ context.setLocalVariable( 1, new ObjectValueHandler( p ) );
+
+ engine.addFunction( modifyCaller );
+
+ engine.execute( context );
+
+ assertEquals( 31, p.getAge() );
+
+
+ }
+}
Copied: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/CompiledFunctionsTest.java (from rev 18181, labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/CompiledFunctionsTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/CompiledFunctionsTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/CompiledFunctionsTest.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,344 @@
+package org.drools.clips;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.io.Reader;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.antlr.runtime.ANTLRStringStream;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.Lexer;
+import org.antlr.runtime.TokenStream;
+import org.drools.Person;
+import org.drools.clips.valuehandlers.IndexedLocalVariableValue;
+import org.drools.clips.valuehandlers.ListValueHandler;
+import org.drools.clips.valuehandlers.LongValueHandler;
+import org.drools.clips.valuehandlers.ObjectValueHandler;
+
+public class CompiledFunctionsTest extends TestCase {
+ private CLPParser parser;
+
+ public void testPrintout() throws Exception {
+ BlockExecutionEngine engine = (BlockExecutionEngine) parse( "(printout d xx (eq 1 1) ?c (create$ (+ 1 1) x y) zzz)" ).execution_block();
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 1 );
+
+ Map vars = new HashMap();
+ vars.put( "?c",
+ new ObjectValueHandler( "brie" ) );
+ engine.replaceTempTokens( vars );
+
+ ByteArrayOutputStream bais = new ByteArrayOutputStream();
+ context.addPrintoutRouter( "d", new PrintStream(bais) );
+
+ engine.execute( context );
+
+ assertEquals( "xxtruebrie2xyzzz", new String( bais.toByteArray() ) );
+ }
+
+ public void testBindAndModify() throws Exception {
+ BlockExecutionEngine engine = (BlockExecutionEngine) parse( "(bind ?x (+ 20 11) ) (modify ?p (age ?x) )" ).execution_block();
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 2 );
+
+ Map vars = new HashMap();
+ Person p = new Person( "mark" );
+ vars.put( "?p",
+ new ObjectValueHandler( p ) );
+ engine.replaceTempTokens( vars );
+
+ engine.execute( context );
+
+ assertEquals( 31,
+ p.getAge() );
+ }
+
+ public void testSimpleCreate$() throws Exception {
+ BlockExecutionEngine engine = (BlockExecutionEngine) parse( "(bind ?x (create$ 1 2 3) )" ).execution_block();
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 1 );
+ engine.execute( context );
+
+ ListValueHandler list = (ListValueHandler) context.getLocalVariable( 0 );
+
+ assertEquals( 3,
+ list.size() );
+
+ assertEquals( 1,
+ list.getList()[0].getIntValue( context ) );
+ assertEquals( 2,
+ list.getList()[1].getIntValue( context ) );
+ assertEquals( 3,
+ list.getList()[2].getIntValue( context ) );
+ }
+
+ public void testNestedCreate$() throws Exception {
+ BlockExecutionEngine engine = (BlockExecutionEngine) parse( "(bind ?x (create$ 1 2 (+ 1 2) ) ) (bind ?y (create$ (+ 1 0) ?x (create$ a b ?x (+ 1 1) ) 3) )" ).execution_block();
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 2 );
+ engine.execute( context );
+
+ // check ?x
+ ListValueHandler list = (ListValueHandler) context.getLocalVariable( 0 );
+ assertEquals( 3,
+ list.size() );
+ assertEquals( 1,
+ list.getList()[0].getIntValue( context ) );
+ assertEquals( 2,
+ list.getList()[1].getIntValue( context ) );
+ assertEquals( new BigDecimal( 3 ),
+ list.getList()[2].getBigDecimalValue( context ) );
+
+ // check ?y
+ list = (ListValueHandler) context.getLocalVariable( 1 );
+ assertEquals( 11,
+ list.size() );
+
+ assertEquals( new BigDecimal( 1 ),
+ list.getList()[0].getBigDecimalValue( context ) );
+ assertEquals( 1,
+ list.getList()[1].getIntValue( context ) );
+ assertEquals( 2,
+ list.getList()[2].getIntValue( context ) );
+ assertEquals( new BigDecimal( 3 ),
+ list.getList()[3].getBigDecimalValue( context ) );
+ assertEquals( "a",
+ list.getList()[4].getStringValue( context ) );
+ assertEquals( "b",
+ list.getList()[5].getStringValue( context ) );
+ assertEquals( 1,
+ list.getList()[6].getIntValue( context ) );
+ assertEquals( 2,
+ list.getList()[7].getIntValue( context ) );
+ assertEquals( new BigDecimal( 3 ),
+ list.getList()[8].getBigDecimalValue( context ) );
+ assertEquals( new BigDecimal( 2 ),
+ list.getList()[9].getBigDecimalValue( context ) );
+ assertEquals( 3,
+ list.getList()[10].getIntValue( context ) );
+ }
+
+ public void testIf() throws Exception {
+ BlockExecutionEngine engine = (BlockExecutionEngine) parse( "(if (< ?x ?y ) then (modify ?p (age 15) ) (printout d 15) else (modify ?p (age 5)) (printout d 5) )" ).execution_block();
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 2 );
+
+ Person p = new Person( "mark" );
+ Map vars = new HashMap();
+
+ vars.put( "?x",
+ new LongValueHandler( 10 ) );
+ vars.put( "?y",
+ new IndexedLocalVariableValue( "?y",
+ 0 ) );
+ vars.put( "?p",
+ new ObjectValueHandler( p ) );
+ engine.replaceTempTokens( vars );
+
+ context.setLocalVariable( 0,
+ new LongValueHandler( 20 ) );
+ ByteArrayOutputStream bais = new ByteArrayOutputStream();
+ context.addPrintoutRouter( "d", new PrintStream(bais) );
+ engine.execute( context );
+ assertEquals( 15,
+ p.getAge() );
+ assertEquals( "15", new String( bais.toByteArray() ) );
+
+
+ context.setLocalVariable( 0,
+ new LongValueHandler( 7 ) );
+ bais = new ByteArrayOutputStream();
+ context.addPrintoutRouter( "d", new PrintStream(bais) );
+ engine.execute( context );
+ assertEquals( 5,
+ p.getAge() );
+ assertEquals( "5", new String( bais.toByteArray() ) );
+ }
+
+ public void testWhile() throws Exception {
+ BlockExecutionEngine engine = (BlockExecutionEngine) parse( "(while (< ?x ?y) do (bind ?x (+ ?x 1)) (printout d ?x \" \") )" ).execution_block();
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 2 );
+
+ Map vars = new HashMap();
+
+ vars.put( "?x",
+ new IndexedLocalVariableValue( "?x",
+ 0 ) );
+ vars.put( "?y",
+ new IndexedLocalVariableValue( "?y",
+ 1 ) );
+ engine.replaceTempTokens( vars );
+
+ context.setLocalVariable( 0,
+ new LongValueHandler( 0 ) );
+ context.setLocalVariable( 1,
+ new LongValueHandler( 10 ) );
+
+ ByteArrayOutputStream bais = new ByteArrayOutputStream();
+ context.addPrintoutRouter( "d", new PrintStream(bais) );
+
+ engine.execute( context );
+ assertEquals( new BigDecimal( 10 ),
+ context.getLocalVariable( 0 ).getBigDecimalValue( context ) );
+
+ assertEquals( "1 2 3 4 5 6 7 8 9 10 ", new String( bais.toByteArray() ) );
+ }
+
+ public void testForeach() throws Exception {
+ BlockExecutionEngine engine = (BlockExecutionEngine) parse( "(bind ?x 0) (foreach ?e (create$ 1 2 3) (bind ?x (+ ?x ?e) ) (printout d ?x \" \") )" ).execution_block();
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 2 );
+
+ ByteArrayOutputStream bais = new ByteArrayOutputStream();
+ context.addPrintoutRouter( "d", new PrintStream(bais) );
+
+ engine.execute( context );
+ assertEquals( new BigDecimal( 6 ),
+ context.getLocalVariable( 0 ).getBigDecimalValue( context ) );
+
+ assertEquals( "1 3 6 ", new String( bais.toByteArray() ) );
+ }
+
+ public void testSwitch() throws Exception {
+ BlockExecutionEngine engine = (BlockExecutionEngine) parse( "(bind ?cheese ?var) (switch ?cheese (case stilton then (bind ?x ?cheese ) (break) ) (case cheddar then (bind ?x ?cheese ) (break) ) (default (bind ?x \"default\" ) ) )" ).execution_block();
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 3 );
+
+ Map vars = new HashMap();
+
+ vars.put( "?var",
+ new IndexedLocalVariableValue( "?var",
+ 2 ) );
+ engine.replaceTempTokens( vars );
+
+ // try it with stilton
+ context.setLocalVariable( 2,
+ new ObjectValueHandler( "stilton" ) );
+ engine.execute( context );
+ assertEquals( "stilton" ,
+ context.getLocalVariable( 1 ).getObject( context ) );
+
+ // try it with cheddar
+ context.setLocalVariable( 2,
+ new ObjectValueHandler( "cheddar" ) );
+ engine.execute( context );
+ assertEquals( "cheddar" ,
+ context.getLocalVariable( 1 ).getObject( context ) );
+
+ // try it with a brie, which has no matching case
+ context.setLocalVariable( 2,
+ new ObjectValueHandler( "brie" ) );
+ engine.execute( context );
+ assertEquals( "default" ,
+ context.getLocalVariable( 1 ).getObject( context ) );
+ }
+
+ public void testProgn() throws Exception {
+ BlockExecutionEngine engine = (BlockExecutionEngine) parse( "(bind ?n 2) (while (progn (bind ?n (* ?n ?n)) (< ?n 1000)) do (printout d ?n) )" ).execution_block();
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 2 );
+
+ ByteArrayOutputStream bais = new ByteArrayOutputStream();
+ context.addPrintoutRouter( "d", new PrintStream(bais) );
+
+ engine.execute( context );
+
+ assertEquals( "416256", new String( bais.toByteArray() ) );
+ }
+
+ public void testDefTemplate() throws Exception {
+ Deffunction engine = (Deffunction) parse( "(deffunction factorial (?n) (if (>= ?n 1) then (* ?n (factorial (- ?n 1))) else 1)) " ).deffunction();
+
+ ExecutionContext context = new ExecutionContextImpl( null,
+ null,
+ 1 );
+
+ ByteArrayOutputStream bais = new ByteArrayOutputStream();
+ context.addPrintoutRouter( "d", new PrintStream(bais) );
+
+ assertEquals( 720,engine.execute( new ValueHandler[] { new LongValueHandler( 6 ) }, context ).getBigDecimalValue( context ).longValue() );
+ }
+
+ private CLPParser parse(final String text) throws Exception {
+ this.parser = newParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
+ return this.parser;
+ }
+
+ private CLPParser parse(final String source,
+ final String text) throws Exception {
+ this.parser = newParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
+ this.parser.setSource( source );
+ return this.parser;
+ }
+
+ private Reader getReader(final String name) throws Exception {
+ final InputStream in = getClass().getResourceAsStream( name );
+
+ return new InputStreamReader( in );
+ }
+
+ private CLPParser parseResource(final String name) throws Exception {
+ Reader reader = getReader( name );
+
+ final StringBuffer text = new StringBuffer();
+
+ final char[] buf = new char[1024];
+ int len = 0;
+
+ while ( (len = reader.read( buf )) >= 0 ) {
+ text.append( buf,
+ 0,
+ len );
+ }
+
+ return parse( name,
+ text.toString() );
+ }
+
+ private CharStream newCharStream(final String text) {
+ return new ANTLRStringStream( text );
+ }
+
+ private CLPLexer newLexer(final CharStream charStream) {
+ return new CLPLexer( charStream );
+ }
+
+ private TokenStream newTokenStream(final Lexer lexer) {
+ return new CommonTokenStream( lexer );
+ }
+
+ private CLPParser newParser(final TokenStream tokenStream) {
+ final CLPParser p = new CLPParser( tokenStream );
+ p.setFunctionRegistry( new XFunctionRegistry( BuiltinFunctions.getInstance() ) );
+ //p.setParserDebug( true );
+ return p;
+ }
+
+ private void assertEqualsIgnoreWhitespace(final String expected,
+ final String actual) {
+ final String cleanExpected = expected.replaceAll( "\\s+",
+ "" );
+ final String cleanActual = actual.replaceAll( "\\s+",
+ "" );
+
+ assertEquals( cleanExpected,
+ cleanActual );
+ }
+}
Copied: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/DeffunctionTest.java (from rev 18083, labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/DeffunctionTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/DeffunctionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/DeffunctionTest.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,36 @@
+package org.drools.clips;
+
+import java.math.BigDecimal;
+
+import org.drools.clips.Function;
+import org.drools.clips.functions.PlusFunction;
+import org.drools.clips.valuehandlers.FunctionCaller;
+import org.drools.clips.valuehandlers.IndexedLocalVariableValue;
+import org.drools.clips.valuehandlers.LongValueHandler;
+
+import junit.framework.TestCase;
+
+public class DeffunctionTest extends TestCase {
+ public void testSimpleDeffunction() {
+ Deffunction function = new Deffunction("x");
+
+ ValueHandler a = function.addParameter( "a" );
+ ValueHandler b =function.addParameter( "b" );
+
+ Function add = new PlusFunction();
+ FunctionCaller caller = new FunctionCaller(add);
+ caller.addParameter( a );
+ caller.addParameter( b );
+
+ function.addFunction( caller );
+
+ ExecutionContext context = new ExecutionContextImpl(null, null, 2);
+ ValueHandler q = new IndexedLocalVariableValue("q", 0);
+ q.setValue( context, new LongValueHandler( 10 ) );
+
+ ValueHandler w = new IndexedLocalVariableValue("w", 1);
+ w.setValue( context, new LongValueHandler( 7 ) );
+
+ assertEquals( new BigDecimal( 17 ), function.execute( new ValueHandler[] { q, w }, context ).getBigDecimalValue( context ) );
+ }
+}
Copied: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/FunctionFactoryTest.java (from rev 18181, labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/FunctionFactoryTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/FunctionFactoryTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/FunctionFactoryTest.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,14 @@
+package org.drools.clips;
+
+import junit.framework.TestCase;
+
+public class FunctionFactoryTest extends TestCase {
+ public void testInit() {
+ XFunctionRegistry factory = new XFunctionRegistry( BuiltinFunctions.getInstance() );
+
+ // make sure some core functions are there
+ assertSame( "+", factory.getFunction( "+" ).getName() );
+ assertSame( "bind" , factory.getFunction( "bind" ).getName() );
+ assertSame( "modify" , factory.getFunction( "modify" ).getName() );
+ }
+}
Copied: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/LhsClpParserTest.java (from rev 18181, labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/LhsClpParserTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/LhsClpParserTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/LhsClpParserTest.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,438 @@
+package org.drools.clips;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.antlr.runtime.ANTLRStringStream;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.Lexer;
+import org.antlr.runtime.TokenStream;
+import org.drools.clips.valuehandlers.DoubleValueHandler;
+import org.drools.clips.valuehandlers.FunctionCaller;
+import org.drools.clips.valuehandlers.LongValueHandler;
+import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.AttributeDescr;
+import org.drools.lang.descr.EvalDescr;
+import org.drools.lang.descr.ExistsDescr;
+import org.drools.lang.descr.FieldBindingDescr;
+import org.drools.lang.descr.FieldConstraintDescr;
+import org.drools.lang.descr.LiteralRestrictionDescr;
+import org.drools.lang.descr.NotDescr;
+import org.drools.lang.descr.OrDescr;
+import org.drools.lang.descr.PatternDescr;
+import org.drools.lang.descr.PredicateDescr;
+import org.drools.lang.descr.RestrictionConnectiveDescr;
+import org.drools.lang.descr.ReturnValueRestrictionDescr;
+import org.drools.lang.descr.RuleDescr;
+
+public class LhsClpParserTest extends TestCase {
+
+ private CLPParser parser;
+
+ XFunctionRegistry registry;
+
+ public void setUp() {
+ this.registry = new XFunctionRegistry( BuiltinFunctions.getInstance() );
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ this.parser = null;
+ }
+
+ public void testParseFunction() throws Exception {
+ BuildContext context = new ExecutionBuildContext( new CLPPredicate(), this.registry );
+ FunctionCaller fc = ( FunctionCaller ) parse( "(< 1 2)" ).lisp_list( context, new LispForm2(context) );
+
+ assertEquals( "<", fc.getName() );
+ assertEquals( new LongValueHandler( 1 ), fc.getParameters()[0] );
+ assertEquals( new LongValueHandler( 2 ), fc.getParameters()[1] );
+ }
+
+ public void testPatternsRule() throws Exception {
+ // the first pattern bellowshould generate a descriptor tree like that:
+ // Pattern[person]
+ // |
+ // AND
+ // / \
+ // FB FC[person name]
+ // |
+ // OR
+ // +----------|------------+
+ // LR LR AND
+ // / \
+ // RVR PC
+
+ // MARK: is it valid to add a predicate restriction as part of a field constraint? I mean, shouldn't
+ // the predicate be out of the (name ...) scope?
+ RuleDescr rule = parse( "(defrule xxx ?b <- (person (name \"yyy\"&?bf|~\"zzz\"|~=(+ 2 3)&:(< 1 2)) ) ?c <- (hobby (type ?bf2&~iii) (rating fivestar) ) => )" ).defrule();
+
+ assertEquals( "xxx",
+ rule.getName() );
+
+ AndDescr lhs = rule.getLhs();
+ List lhsList = lhs.getDescrs();
+ assertEquals( 2,
+ lhsList.size() );
+
+ // Parse the first pattern
+ PatternDescr personPattern = (PatternDescr) lhsList.get( 0 );
+ assertEquals( "?b",
+ personPattern.getIdentifier() );
+ assertEquals( "person",
+ personPattern.getObjectType() );
+
+ List colList = personPattern.getDescrs();
+ assertEquals( 2,
+ colList.size() );
+
+ // first, we have a field binding
+ FieldBindingDescr fbd = (FieldBindingDescr) colList.get( 0 );
+ assertEquals( "?bf",
+ fbd.getIdentifier() );
+ assertEquals( "name",
+ fbd.getFieldName() );
+
+ // then, we have a field constraint
+ FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) colList.get( 1 );
+ assertEquals( "name",
+ fieldConstraintDescr.getFieldName() );
+ RestrictionConnectiveDescr root = (RestrictionConnectiveDescr) fieldConstraintDescr.getRestriction();
+ assertEquals( 1,
+ root.getRestrictions().size() );
+ RestrictionConnectiveDescr or = (RestrictionConnectiveDescr) root.getRestrictions().get( 0 );
+ assertEquals( RestrictionConnectiveDescr.OR,
+ or.getConnective() );
+
+ List restrictionList = or.getRestrictions();
+
+ assertEquals( 3,
+ restrictionList.size() );
+
+ // first we have a literal restriction
+ LiteralRestrictionDescr litDescr = (LiteralRestrictionDescr) restrictionList.get( 0 );
+ assertEquals( "==",
+ litDescr.getEvaluator() );
+ assertEquals( "yyy",
+ litDescr.getText() );
+
+ // second, we have another literal restriction
+ litDescr = (LiteralRestrictionDescr) restrictionList.get( 1 );
+ assertEquals( "!=",
+ litDescr.getEvaluator() );
+ assertEquals( "zzz",
+ litDescr.getText() );
+
+ // third, we have an AND restriction connective
+ RestrictionConnectiveDescr and = (RestrictionConnectiveDescr) restrictionList.get( 2 );
+ assertEquals( RestrictionConnectiveDescr.AND,
+ and.getConnective() );
+ assertEquals( 2,
+ and.getRestrictions().size() );
+
+ ReturnValueRestrictionDescr retDescr = (ReturnValueRestrictionDescr) and.getRestrictions().get( 0 );
+ assertEquals( "!=",
+ retDescr.getEvaluator() );
+ CLPReturnValue clprv = ( CLPReturnValue ) retDescr.getContent();
+ FunctionCaller fc = clprv.getFunctions()[0];
+ assertEquals( "+", fc.getName() );
+ assertEquals( new LongValueHandler( 2 ), fc.getParameters()[0] );
+ assertEquals( new LongValueHandler( 3 ), fc.getParameters()[1] );
+
+ // ----------------
+ // this is how it would be compatible to our core engine
+ PredicateDescr predicateDescr = (PredicateDescr) and.getRestrictions().get( 1 );
+ CLPPredicate clpp = ( CLPPredicate ) predicateDescr.getContent();
+ fc = clpp.getFunctions()[0];
+ assertEquals( "<", fc.getName() );
+ assertEquals( new LongValueHandler( 1 ), fc.getParameters()[0] );
+ assertEquals( new LongValueHandler( 2 ), fc.getParameters()[1] );
+
+ // -----------------
+ // Parse the second column
+ PatternDescr hobbyPattern = (PatternDescr) lhsList.get( 1 );
+ assertEquals( "?c",
+ hobbyPattern.getIdentifier() );
+ assertEquals( "hobby",
+ hobbyPattern.getObjectType() );
+
+ colList = hobbyPattern.getDescrs();
+ assertEquals( 3,
+ colList.size() );
+
+ fbd = (FieldBindingDescr) colList.get( 0 );
+ assertEquals( "?bf2",
+ fbd.getIdentifier() );
+ assertEquals( "type",
+ fbd.getFieldName() );
+
+ fieldConstraintDescr = (FieldConstraintDescr) colList.get( 1 );
+ restrictionList = fieldConstraintDescr.getRestrictions();
+
+ assertEquals( "type",
+ fieldConstraintDescr.getFieldName() );
+
+ assertEquals( RestrictionConnectiveDescr.AND,
+ fieldConstraintDescr.getRestriction().getConnective() );
+
+ litDescr = (LiteralRestrictionDescr) restrictionList.get( 0 );
+ assertEquals( "!=",
+ litDescr.getEvaluator() );
+ assertEquals( "iii",
+ litDescr.getText() );
+
+ fieldConstraintDescr = (FieldConstraintDescr) colList.get( 2 );
+ restrictionList = fieldConstraintDescr.getRestrictions();
+
+ assertEquals( "rating",
+ fieldConstraintDescr.getFieldName() );
+
+ litDescr = (LiteralRestrictionDescr) restrictionList.get( 0 );
+ assertEquals( "==",
+ litDescr.getEvaluator() );
+ assertEquals( "fivestar",
+ litDescr.getText() );
+ }
+
+ public void testNestedCERule() throws Exception {
+ RuleDescr rule = parse( "(defrule xxx ?b <- (person (name yyy)) (or (and (hobby1 (type qqq1)) (hobby2 (type ~qqq2))) (food (veg ~shroom) ) ) => )" ).defrule();
+
+ assertEquals( "xxx",
+ rule.getName() );
+
+ AndDescr lhs = rule.getLhs();
+ List lhsList = lhs.getDescrs();
+ assertEquals( 2,
+ lhsList.size() );
+
+ // Parse the first column
+ PatternDescr col = (PatternDescr) lhsList.get( 0 );
+ assertEquals( "?b",
+ col.getIdentifier() );
+ assertEquals( "person",
+ col.getObjectType() );
+ FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) col.getDescrs().get( 0 );
+ assertEquals( "name",
+ fieldConstraintDescr.getFieldName() ); //
+ LiteralRestrictionDescr litDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 0 );
+ assertEquals( "==",
+ litDescr.getEvaluator() );
+ assertEquals( "yyy",
+ litDescr.getText() );
+
+ OrDescr orDescr = (OrDescr) lhsList.get( 1 );
+ assertEquals( 2,
+ orDescr.getDescrs().size() );
+
+ AndDescr andDescr = (AndDescr) orDescr.getDescrs().get( 0 );
+ col = (PatternDescr) andDescr.getDescrs().get( 0 );
+ assertEquals( "hobby1",
+ col.getObjectType() );
+ fieldConstraintDescr = (FieldConstraintDescr) col.getDescrs().get( 0 );
+ assertEquals( "type",
+ fieldConstraintDescr.getFieldName() ); //
+ litDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 0 );
+ assertEquals( "==",
+ litDescr.getEvaluator() );
+ assertEquals( "qqq1",
+ litDescr.getText() );
+
+ col = (PatternDescr) andDescr.getDescrs().get( 1 );
+ assertEquals( "hobby2",
+ col.getObjectType() );
+ fieldConstraintDescr = (FieldConstraintDescr) col.getDescrs().get( 0 );
+ assertEquals( "type",
+ fieldConstraintDescr.getFieldName() ); //
+ litDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 0 );
+ assertEquals( "!=",
+ litDescr.getEvaluator() );
+ assertEquals( "qqq2",
+ litDescr.getText() );
+
+ col = (PatternDescr) orDescr.getDescrs().get( 1 );
+ assertEquals( "food",
+ col.getObjectType() );
+ fieldConstraintDescr = (FieldConstraintDescr) col.getDescrs().get( 0 );
+ assertEquals( "veg",
+ fieldConstraintDescr.getFieldName() ); //
+ litDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 0 );
+ assertEquals( "!=",
+ litDescr.getEvaluator() );
+ assertEquals( "shroom",
+ litDescr.getText() );
+ }
+
+ public void testNotExistsRule() throws Exception {
+ RuleDescr rule = parse( "(defrule xxx (or (hobby1 (type qqq1)) (not (and (exists (person (name ppp))) (person (name yyy))))) => )" ).defrule();
+
+ assertEquals( "xxx",
+ rule.getName() );
+
+ AndDescr lhs = rule.getLhs();
+ List lhsList = lhs.getDescrs();
+ assertEquals( 1,
+ lhsList.size() );
+
+ OrDescr orDescr = (OrDescr) lhsList.get( 0 );
+ assertEquals( 2,
+ orDescr.getDescrs().size() );
+
+ PatternDescr col = (PatternDescr) orDescr.getDescrs().get( 0 );
+ assertEquals( "hobby1",
+ col.getObjectType() );
+ FieldConstraintDescr fieldConstraintDescr = (FieldConstraintDescr) col.getDescrs().get( 0 );
+ assertEquals( "type",
+ fieldConstraintDescr.getFieldName() ); //
+ LiteralRestrictionDescr litDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 0 );
+ assertEquals( "==",
+ litDescr.getEvaluator() );
+ assertEquals( "qqq1",
+ litDescr.getText() );
+
+ NotDescr notDescr = (NotDescr) orDescr.getDescrs().get( 1 );
+ assertEquals( 1,
+ notDescr.getDescrs().size() );
+
+ AndDescr andDescr = (AndDescr) notDescr.getDescrs().get( 0 );
+ assertEquals( 2, andDescr.getDescrs().size() );
+ ExistsDescr existsDescr = (ExistsDescr) andDescr.getDescrs().get( 0 );
+ col = (PatternDescr) existsDescr.getDescrs().get( 0 );
+ assertEquals( "person",
+ col.getObjectType() );
+ fieldConstraintDescr = (FieldConstraintDescr) col.getDescrs().get( 0 );
+ assertEquals( "name",
+ fieldConstraintDescr.getFieldName() ); //
+ litDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 0 );
+ assertEquals( "==",
+ litDescr.getEvaluator() );
+ assertEquals( "ppp",
+ litDescr.getText() );
+
+ col = (PatternDescr) andDescr.getDescrs().get( 1 );
+ assertEquals( "person",
+ col.getObjectType() );
+ fieldConstraintDescr = (FieldConstraintDescr) col.getDescrs().get( 0 );
+ assertEquals( "name",
+ fieldConstraintDescr.getFieldName() ); //
+ litDescr = (LiteralRestrictionDescr) fieldConstraintDescr.getRestrictions().get( 0 );
+ assertEquals( "==",
+ litDescr.getEvaluator() );
+ assertEquals( "yyy",
+ litDescr.getText() );
+ }
+
+ public void testTestRule() throws Exception {
+ RuleDescr rule = parse( "(defrule xxx (test (< 9.0 1.3) ) => )" ).defrule();
+
+ assertEquals( "xxx",
+ rule.getName() );
+
+ AndDescr lhs = rule.getLhs();
+ List lhsList = lhs.getDescrs();
+ assertEquals( 1,
+ lhsList.size() );
+
+ EvalDescr evalDescr = (EvalDescr) lhsList.get( 0 );
+
+ CLPEval clpe = ( CLPEval ) evalDescr.getContent();
+ FunctionCaller f = clpe.getFunctions()[0];
+ assertEquals( "<", f.getName() );
+ assertEquals( new DoubleValueHandler( 9.0 ), f.getParameters()[0] );
+ assertEquals( new DoubleValueHandler( 1.3 ), f.getParameters()[1] );
+ }
+
+ public void testRuleHeader() throws Exception {
+ RuleDescr rule = parse( "(defrule MAIN::name \"docs\"(declare (salience -100) ) => )" ).defrule();
+
+ List attributes = rule.getAttributes();
+ AttributeDescr module = ( AttributeDescr ) attributes.get( 0 );
+ assertEquals( "agenda-group", module.getName() );
+ assertEquals( "MAIN", module.getValue() );
+
+ assertEquals("name", rule.getName() );
+
+ AttributeDescr dialect = ( AttributeDescr ) attributes.get( 1 );
+ assertEquals( "dialect", dialect.getName() );
+ assertEquals( "clips", dialect.getValue() );
+
+ AttributeDescr salience = ( AttributeDescr ) attributes.get( 2 );
+ assertEquals( "salience", salience.getName() );
+ assertEquals( "-100", salience.getValue() );
+
+
+ }
+
+ private CLPParser parse(final String text) throws Exception {
+ this.parser = newParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
+ return this.parser;
+ }
+
+ private CLPParser parse(final String source,
+ final String text) throws Exception {
+ this.parser = newParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
+ this.parser.setSource( source );
+ return this.parser;
+ }
+
+ private Reader getReader(final String name) throws Exception {
+ final InputStream in = getClass().getResourceAsStream( name );
+
+ return new InputStreamReader( in );
+ }
+
+ private CLPParser parseResource(final String name) throws Exception {
+
+ // System.err.println( getClass().getResource( name ) );
+ Reader reader = getReader( name );
+
+ final StringBuffer text = new StringBuffer();
+
+ final char[] buf = new char[1024];
+ int len = 0;
+
+ while ( (len = reader.read( buf )) >= 0 ) {
+ text.append( buf,
+ 0,
+ len );
+ }
+
+ return parse( name,
+ text.toString() );
+ }
+
+ private CharStream newCharStream(final String text) {
+ return new ANTLRStringStream( text );
+ }
+
+ private CLPLexer newLexer(final CharStream charStream) {
+ return new CLPLexer( charStream );
+ }
+
+ private TokenStream newTokenStream(final Lexer lexer) {
+ return new CommonTokenStream( lexer );
+ }
+
+ private CLPParser newParser(final TokenStream tokenStream) {
+ final CLPParser p = new CLPParser( tokenStream );
+ p.setFunctionRegistry( new XFunctionRegistry( BuiltinFunctions.getInstance() ) );
+ //p.setParserDebug( true );
+ return p;
+ }
+
+ private void assertEqualsIgnoreWhitespace(final String expected,
+ final String actual) {
+ final String cleanExpected = expected.replaceAll( "\\s+",
+ "" );
+ final String cleanActual = actual.replaceAll( "\\s+",
+ "" );
+
+ assertEquals( cleanExpected,
+ cleanActual );
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ModifyFunctionTest.java (from rev 18083, labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/ModifyFunctionTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ModifyFunctionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ModifyFunctionTest.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,32 @@
+package org.drools.clips;
+
+import org.drools.Person;
+import org.drools.clips.Function;
+import org.drools.clips.functions.ModifyFunction;
+import org.drools.clips.valuehandlers.IndexedLocalVariableValue;
+import org.drools.clips.valuehandlers.ListValueHandler;
+import org.drools.clips.valuehandlers.ObjectValueHandler;
+
+import junit.framework.TestCase;
+
+public class ModifyFunctionTest extends TestCase {
+ public void testSimpleModifyFunction() {
+ Function function = new ModifyFunction();
+
+ Person p = new Person("mark");
+ ExecutionContext context = new ExecutionContextImpl(null, null, 1);
+ //context.setLocalVariable( 0, p );
+
+ IndexedLocalVariableValue var = new IndexedLocalVariableValue("p", 0);
+ var.setValue( context, new ObjectValueHandler( p ) );
+
+ ListValueHandler list = new ListValueHandler();
+ list.add( new ObjectValueHandler( "name") );
+ list.add( new ObjectValueHandler( "bob") );
+
+
+ function.execute( new ValueHandler[] { var, list }, context );
+
+ assertEquals( "bob", p.getName() );
+ }
+}
Copied: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java (from rev 18087, labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/ShellTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,70 @@
+package org.drools.clips;
+
+import junit.framework.TestCase;
+
+import org.drools.Person;
+import org.drools.RuleBase;
+import org.drools.WorkingMemory;
+import org.drools.clips.OldShell;
+import org.drools.rule.Package;
+import org.drools.rule.Rule;
+
+public class ShellTest extends TestCase {
+ public void test1() {
+ OldShell shell = new OldShell();
+
+ shell.evalString( "(import org.drools.Person)" );
+
+ shell.evalString( "(defrule yyy => (printout t yy \" \" (eq 1 1) ) ) )" );
+ Package pkg = shell.getWorkingMemory().getRuleBase().getPackage( "MAIN" );
+
+ Rule rule = pkg.getRule( "yyy" );
+ assertEquals( "yyy", rule.getName() );
+
+ shell.evalString( "(defrule xxx (Person (name ?name&bob) (age 30) ) (Person (name ?name) (age 35)) => (printout t xx \" \" (eq 1 1) ) )" );
+
+
+ rule = pkg.getRule( "xxx" );
+ assertEquals( "xxx", rule.getName() );
+
+
+
+ assertEquals( 2, pkg.getRules().length );
+
+ assertTrue( pkg.getImports().containsKey( "org.drools.Person" ) );
+
+ WorkingMemory wm = shell.getWorkingMemory();
+ wm.insert( new Person("bob", "cheddar", 30) );
+ wm.insert( new Person("bob", "stilton", 35) );
+ wm.fireAllRules();
+ }
+
+ public void test2() {
+ OldShell shell = new OldShell();
+
+ shell.evalString( "(import org.drools.Person)" );
+
+ shell.evalString( "(defrule yyy => (printout t yy \" \" (eq 1 1) \"\n\" ) ) )" );
+ Package pkg = shell.getWorkingMemory().getRuleBase().getPackage( "MAIN" );
+
+ Rule rule = pkg.getRule( "yyy" );
+ assertEquals( "yyy", rule.getName() );
+
+ shell.evalString( "(defrule xxx (Person (name ?name&bob) (age 30) ) (Person (name ?name) (age 35)) => (printout t ?name \" \" (eq 1 1) \"\n\" ) )" );
+
+
+ rule = pkg.getRule( "xxx" );
+ assertEquals( "xxx", rule.getName() );
+
+
+
+ assertEquals( 2, pkg.getRules().length );
+
+ assertTrue( pkg.getImports().containsKey( "org.drools.Person" ) );
+
+ WorkingMemory wm = shell.getWorkingMemory();
+ wm.insert( new Person("bob", "cheddar", 30) );
+ wm.insert( new Person("bob", "stilton", 35) );
+ wm.fireAllRules();
+ }
+}
Copied: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel (from rev 18083, labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel)
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/Appendable.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/Appendable.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/Appendable.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,7 +0,0 @@
-package org.drools.clp.mvel;
-
-public interface Appendable {
-
- public abstract void append(String string);
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/BaseInfixFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/BaseInfixFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/BaseInfixFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,20 +0,0 @@
-package org.drools.clp.mvel;
-
-public abstract class BaseInfixFunction implements Function {
- public abstract String getMappedSymbol();
-
- public void dump(LispForm2 lispForm, Appendable appendable) {
- SExpression[] sExpressions = lispForm.getSExpressions();
-
- appendable.append("(");
- for ( int i = 1, length = sExpressions.length; i < length; i++) {
-
- FunctionHandlers.getInstance().dump( sExpressions[i], appendable );
-
- if ( i != length -1 ) {
- appendable.append( getMappedSymbol() );
- }
- }
- appendable.append(")");
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/BoolLispAtom2.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/BoolLispAtom2.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/BoolLispAtom2.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,12 +0,0 @@
-/**
- *
- */
-package org.drools.clp.mvel;
-
-public class BoolLispAtom2 extends LispAtom2 {
-
- public BoolLispAtom2(String value) {
- super(value);
- }
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/CreateListFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/CreateListFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/CreateListFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,25 +0,0 @@
-package org.drools.clp.mvel;
-
-public class CreateListFunction implements Function {
- private static final String name = "create$";
-
- public String getName() {
- return name;
- }
-
- public void dump(LispForm2 lispForm, Appendable appendable) {
- SExpression[] sExpressions = lispForm.getSExpressions();
-
- appendable.append("[");
-
- for ( int i = 1, length = sExpressions.length; i < length; i++) {
-
- FunctionHandlers.getInstance().dump( sExpressions[i], appendable );
-
- if ( i != length -1 ) {
- appendable.append( "," );
- }
- }
- appendable.append("]");
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/EqFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/EqFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/EqFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,14 +0,0 @@
-package org.drools.clp.mvel;
-
-public class EqFunction extends BaseInfixFunction {
- private static final String name = "eq";
- private static final String mappedSymbol = "==";
-
- public String getName() {
- return name;
- }
-
- public String getMappedSymbol() {
- return mappedSymbol;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/EqOrLessThanFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/EqOrLessThanFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/EqOrLessThanFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,14 +0,0 @@
-package org.drools.clp.mvel;
-
-public class EqOrLessThanFunction extends BaseInfixFunction {
- private static final String name = "<=";
- private static final String mappedSymbol = "<=";
-
- public String getName() {
- return name;
- }
-
- public String getMappedSymbol() {
- return mappedSymbol;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/EqOrMoreThanFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/EqOrMoreThanFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/EqOrMoreThanFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,14 +0,0 @@
-package org.drools.clp.mvel;
-
-public class EqOrMoreThanFunction extends BaseInfixFunction {
- private static final String name = ">=";
- private static final String mappedSymbol = ">=";
-
- public String getName() {
- return name;
- }
-
- public String getMappedSymbol() {
- return mappedSymbol;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/FloatLispAtom2.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/FloatLispAtom2.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/FloatLispAtom2.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,12 +0,0 @@
-/**
- *
- */
-package org.drools.clp.mvel;
-
-public class FloatLispAtom2 extends LispAtom2 {
-
- public FloatLispAtom2(String value) {
- super(value);
- }
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/Function.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/Function.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/Function.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,9 +0,0 @@
-package org.drools.clp.mvel;
-
-public interface Function {
-
- public abstract String getName();
-
- public abstract void dump(LispForm2 lispForm, Appendable appendable);
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/FunctionHandlers.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/FunctionHandlers.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/FunctionHandlers.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,39 +0,0 @@
-package org.drools.clp.mvel;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class FunctionHandlers {
- public static final FunctionHandlers INSTANCE = new FunctionHandlers();
-
- public static FunctionHandlers getInstance() {
- return INSTANCE;
- }
-
- private Map<String, Function> map = new HashMap<String, Function>();
-
- private FunctionHandlers() {
-
- }
-
- public Function getFunction(String name) {
- return this.map.get( name );
- }
-
- public void registerFunction(Function function) {
- this.map.put( function.getName(), function );
- }
-
- public void dump(SExpression sExpression, Appendable appendable) {
- if ( sExpression instanceof LispAtom2 ) {
- appendable.append( ( ( LispAtom2 ) sExpression).getValue() );
- } else {
- LispForm2 form = (LispForm2) sExpression;
- Function function = FunctionHandlers.getInstance().getFunction( ( (LispAtom2) form.getSExpressions()[0]).getValue() );
- function.dump(form, appendable );
-
- }
- }
-
-
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/IfFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/IfFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/IfFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,28 +0,0 @@
-package org.drools.clp.mvel;
-
-public class IfFunction implements Function {
- private static final String name = "if";
-
- public String getName() {
- return name;
- }
-
- public void dump(LispForm2 lispForm, Appendable appendable) {
- SExpression[] sExpressions = lispForm.getSExpressions();
-
- appendable.append( "if " );
-
- FunctionHandlers.getInstance().dump( sExpressions[1], appendable );
-
- appendable.append( "{" );
- FunctionHandlers.getInstance().dump( sExpressions[3], appendable );
- appendable.append( "}" );
-
- if ( sExpressions.length > 4 ) {
- appendable.append( "else {" );
- FunctionHandlers.getInstance().dump( sExpressions[5], appendable );
- appendable.append( "}" );
- }
-
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/IntLispAtom2.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/IntLispAtom2.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/IntLispAtom2.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,12 +0,0 @@
-/**
- *
- */
-package org.drools.clp.mvel;
-
-public class IntLispAtom2 extends LispAtom2 {
-
- public IntLispAtom2(String value) {
- super(value);
- }
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/LessThanFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/LessThanFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/LessThanFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,14 +0,0 @@
-package org.drools.clp.mvel;
-
-public class LessThanFunction extends BaseInfixFunction {
- private static final String name = "<";
- private static final String mappedSymbol = "<";
-
- public String getName() {
- return name;
- }
-
- public String getMappedSymbol() {
- return mappedSymbol;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/LispAtom2.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/LispAtom2.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/LispAtom2.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,25 +0,0 @@
-/**
- *
- */
-package org.drools.clp.mvel;
-
-public class LispAtom2 implements SExpression {
- private String value;
-
- public LispAtom2(String value) {
- super();
- this.value = value;
- }
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- public String toString() {
- return value;
- }
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/LispForm2.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/LispForm2.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/LispForm2.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,43 +0,0 @@
-/**
- *
- */
-package org.drools.clp.mvel;
-
-public class LispForm2 implements SExpression {
- private SExpression[] sExpressions;
-
- public LispForm2(SExpression[] sExpressions) {
- this.sExpressions = sExpressions;
- }
-
- public SExpression[] getSExpressions() {
- return sExpressions;
- }
-
- public void setSExpressions(SExpression[] sExpressions) {
- this.sExpressions = sExpressions;
- }
-
-// public String toString() {
-// StringBuilder builder = new StringBuilder();
-//
-// builder.append("(");
-// for ( int i = 0, length = sExpressions.length; i < length; i++) {
-// builder.append(" " + sExpressions[i] + " ");
-// }
-// builder.append(")");
-// return builder.toString();
-// }
-
- public String toString() {
- StringBuilder builder = new StringBuilder();
-
- builder.append("(");
- for ( SExpression sExpression : sExpressions) {
- builder.append(" " + sExpression + " ");
- }
- builder.append(")");
- return builder.toString();
- }
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/ModifyFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/ModifyFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/ModifyFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,29 +0,0 @@
-package org.drools.clp.mvel;
-
-public class ModifyFunction implements Function {
- private static final String name = "modify";
-
- public String getName() {
- return name;
- }
-
- public void dump(LispForm2 lispForm, Appendable appendable) {
- SExpression[] sExpressions = lispForm.getSExpressions();
-
- appendable.append("modify (" + ( (LispAtom2) lispForm.getSExpressions()[1]).getValue() + ") {");
-
- for ( int i = 2, length = sExpressions.length; i < length; i++) {
- LispForm2 setter = (LispForm2) sExpressions[i];
- appendable.append( ( ( LispAtom2 ) setter.getSExpressions()[0]).getValue() );
-
- appendable.append( " = " );
-
- FunctionHandlers.getInstance().dump( setter.getSExpressions()[1], appendable);
-
- if ( i != length -1 ) {
- appendable.append( "," );
- }
- }
- appendable.append("};");
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/MoreThanFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/MoreThanFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/MoreThanFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,14 +0,0 @@
-package org.drools.clp.mvel;
-
-public class MoreThanFunction extends BaseInfixFunction {
- private static final String name = ">";
- private static final String mappedSymbol = ">";
-
- public String getName() {
- return name;
- }
-
- public String getMappedSymbol() {
- return mappedSymbol;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/MultiplyFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/MultiplyFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/MultiplyFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,14 +0,0 @@
-package org.drools.clp.mvel;
-
-public class MultiplyFunction extends BaseInfixFunction {
- private static final String name = "*";
- private static final String mappedSymbol = "*";
-
- public String getName() {
- return name;
- }
-
- public String getMappedSymbol() {
- return mappedSymbol;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/NullLispAtom2.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/NullLispAtom2.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/NullLispAtom2.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,12 +0,0 @@
-/**
- *
- */
-package org.drools.clp.mvel;
-
-public class NullLispAtom2 extends LispAtom2 {
-
- public NullLispAtom2(String value) {
- super(value);
- }
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/PlusFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/PlusFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/PlusFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,14 +0,0 @@
-package org.drools.clp.mvel;
-
-public class PlusFunction extends BaseInfixFunction {
- private static final String name = "+";
- private static final String mappedSymbol = "+";
-
- public String getName() {
- return name;
- }
-
- public String getMappedSymbol() {
- return mappedSymbol;
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/PrintoutFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/PrintoutFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/PrintoutFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,24 +0,0 @@
-package org.drools.clp.mvel;
-
-public class PrintoutFunction implements Function {
- private static final String name = "printout";
-
- private static final int route = 1;
-
- public String getName() {
- return name;
- }
-
- public void dump(LispForm2 lispForm, Appendable appendable) {
- SExpression[] sExpressions = lispForm.getSExpressions();
- appendable.append( "((PrintStream) routers.get(" + ( ( LispAtom2 ) lispForm.getSExpressions()[route]).getValue()+ ")).print(" );
- for ( int i = 2, length = sExpressions.length; i < length; i++) {
- FunctionHandlers.getInstance().dump( sExpressions[i], appendable );
-
- if ( i != length -1 ) {
- appendable.append( "+" );
- }
- }
- appendable.append( ");" );
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/PrognFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/PrognFunction.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/PrognFunction.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,50 +0,0 @@
-package org.drools.clp.mvel;
-
-public class PrognFunction implements Function {
- private static final String name = "progn";
-
- public String getName() {
- return name;
- }
-
- public void dump(LispForm2 lispForm, Appendable appendable) {
- Function createList = FunctionHandlers.getInstance().getFunction( "create$" );
-
- SExpression[] sExpressions = lispForm.getSExpressions();
-
- LispForm2 listSpec = (LispForm2) sExpressions[1];
-
- String var = ( ( LispAtom2 ) listSpec.getSExpressions()[0] ).getValue();
-
- appendable.append( "foreach( " + var + " : " );
-
- createList.dump( (LispForm2) listSpec.getSExpressions()[1], appendable );
-
- appendable.append( " ) {" );
-
- FunctionHandlers.getInstance().dump( sExpressions[2], appendable );
- //Function function = FunctionHandlers.getInstance().getFunction( ( (LispAtom2) form.getSExpressions()[0]).getValue() );
-
- appendable.append( "}" );
-
-// SExpression[] sExpressions = lispForm.getSExpressions();
-// appendable.append( "((PrintStream) routers.get(" + ( ( LispAtom2 ) lispForm.getSExpressions()[1]).getValue()+ ")).print(" );
-// for ( int i = 2, length = sExpressions.length; i < length; i++) {
-// SExpression sExpression = sExpressions[i];
-// if ( sExpression instanceof LispAtom2 ) {
-// appendable.append( ( ( LispAtom2 ) sExpression).getValue() );
-// } else {
-// LispForm2 form = (LispForm2) sExpression;
-// Function function = FunctionHandlers.getInstance().getFunction( ( (LispAtom2) form.getSExpressions()[0]).getValue() );
-// function.dump(form, appendable);
-//
-// }
-//
-// if ( i != length -1 ) {
-// appendable.append( "+" );
-// }
-// }
-// appendable.append( ");" );
-
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/SExpression.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/SExpression.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/SExpression.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,8 +0,0 @@
-/**
- *
- */
-package org.drools.clp.mvel;
-
-public interface SExpression {
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/StringBuilderAppendable.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/StringBuilderAppendable.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/StringBuilderAppendable.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,14 +0,0 @@
-package org.drools.clp.mvel;
-
-public class StringBuilderAppendable implements Appendable {
- public StringBuilder builder = new StringBuilder();
-
-
- public void append(String string) {
- this.builder.append( string );
- }
-
- public String toString() {
- return builder.toString();
- }
-}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/StringLispAtom2.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/StringLispAtom2.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/StringLispAtom2.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,13 +0,0 @@
-/**
- *
- */
-package org.drools.clp.mvel;
-
-public class StringLispAtom2 extends LispAtom2 {
-
- public StringLispAtom2(String value) {
- super("\"" + value + "\"");
- }
-
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/SymbolLispAtom2.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/SymbolLispAtom2.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/SymbolLispAtom2.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,12 +0,0 @@
-/**
- *
- */
-package org.drools.clp.mvel;
-
-public class SymbolLispAtom2 extends LispAtom2 {
-
- public SymbolLispAtom2(String value) {
- super(value);
- }
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/TestMVEL.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/TestMVEL.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/TestMVEL.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,133 +0,0 @@
-package org.drools.clp.mvel;
-
-import java.io.Reader;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.antlr.runtime.ANTLRReaderStream;
-import org.antlr.runtime.ANTLRStringStream;
-import org.antlr.runtime.CharStream;
-import org.antlr.runtime.CommonTokenStream;
-import org.antlr.runtime.Lexer;
-import org.antlr.runtime.TokenStream;
-import org.drools.clp.CLPMVELLexer;
-import org.drools.clp.CLPMVELParser;
-
-public class TestMVEL extends TestCase {
- public void setUp() {
- FunctionHandlers handlers = FunctionHandlers.getInstance();
- handlers.registerFunction( new PlusFunction() );
- handlers.registerFunction( new MultiplyFunction() );
- handlers.registerFunction( new ModifyFunction() );
- handlers.registerFunction( new CreateListFunction() );
- handlers.registerFunction( new PrintoutFunction() );
- handlers.registerFunction( new PrognFunction() );
- handlers.registerFunction( new IfFunction() );
- handlers.registerFunction( new LessThanFunction() );
- handlers.registerFunction( new MoreThanFunction() );
- handlers.registerFunction( new EqFunction() );
- }
-
- public void test1() {
- String expr = "(* (+ 4 4 ) 2) (create$ 10 20 (+ 10 10) a) (modify ?p (name mark) (age (+ 16 16) ) ) (printout t a b c (+ 4 4) )";
-
- SExpression[] lisplists = evalString( expr );
-
- StringBuilderAppendable appendable = new StringBuilderAppendable();
-
- for ( SExpression sExpression : lisplists ) {
- FunctionHandlers.getInstance().dump( sExpression, appendable );
- }
-
- System.out.println( appendable );
- }
-
- public void testProgn() {
- String expr = "(progn (?x (create$ 10 20 30) ) (printout t ?x) ) )";
-
- SExpression[] lisplists = evalString( expr );
-
- StringBuilderAppendable appendable = new StringBuilderAppendable();
-
- for ( SExpression sExpression : lisplists ) {
- FunctionHandlers.getInstance().dump( sExpression, appendable );
- }
-
- System.out.println( appendable );
- }
-
- public void testIf() {
- String expr = "(if (< 1 3) then (printout t x) )";
-
- SExpression[] lisplists = evalString( expr );
-
- StringBuilderAppendable appendable = new StringBuilderAppendable();
-
- for ( SExpression sExpression : lisplists ) {
- FunctionHandlers.getInstance().dump( sExpression, appendable );
- }
-
- System.out.println( appendable );
- }
-
- public void testIfElse() {
- String expr = "(if (eq 1 3) then (printout t x) else (printout t y) )";
-
- SExpression[] lisplists = evalString( expr );
-
- StringBuilderAppendable appendable = new StringBuilderAppendable();
-
- for ( SExpression sExpression : lisplists ) {
- FunctionHandlers.getInstance().dump( sExpression, appendable );
- }
-
- System.out.println( appendable );
- }
-
-
-
- public void test3() {
- String function = "(deffunction max (?a ?b) (return ?b) )";
- String expr = "(max (3 5) )";
-
- }
-
- public SExpression[] evalReader(Reader reader) {
- try {
- CLPMVELParser parser = new CLPMVELParser( new CommonTokenStream( new CLPMVELLexer( new ANTLRReaderStream( reader ) ) ) );
- return evalParser( parser );
- } catch ( Exception e ) {
- throw new RuntimeException( "Unable to parser Reader",
- e );
- }
- }
-
- public SExpression[] evalString(String text) {
- CLPMVELParser parser = new CLPMVELParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
- return evalParser( parser );
- }
-
- private SExpression[] evalParser(CLPMVELParser parser) {
- try {
- List list = parser.eval_sExpressions();
- return (SExpression[]) list.toArray( new SExpression[list.size()] );
- } catch ( Exception e ) {
- throw new RuntimeException( e );
- }
-
- //parser.setF
- }
-
- private CharStream newCharStream(final String text) {
- return new ANTLRStringStream( text );
- }
-
- private CLPMVELLexer newLexer(final CharStream charStream) {
- return new CLPMVELLexer( charStream );
- }
-
- private TokenStream newTokenStream(final Lexer lexer) {
- return new CommonTokenStream( lexer );
- }
-}
Copied: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/TestMVEL.java (from rev 18196, labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/TestMVEL.java)
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/TestMVEL.java (rev 0)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/TestMVEL.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -0,0 +1,337 @@
+package org.drools.clips.mvel;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.io.Reader;
+import java.io.Serializable;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import junit.framework.TestCase;
+
+import org.antlr.runtime.ANTLRReaderStream;
+import org.antlr.runtime.CommonTokenStream;
+import org.drools.clips.Appendable;
+import org.drools.clips.CLPMVELLexer;
+import org.drools.clips.CLPMVELParser;
+import org.drools.clips.CreateListFunction;
+import org.drools.clips.EqFunction;
+import org.drools.clips.FunctionContext;
+import org.drools.clips.FunctionHandlers;
+import org.drools.clips.LispForm;
+import org.drools.clips.MVELBuildContext;
+import org.drools.clips.ParserHandler;
+import org.drools.clips.PrintRouterContext;
+import org.drools.clips.StringBuilderAppendable;
+import org.drools.clips.VariableContext;
+import org.drools.clips.functions.IfFunction;
+import org.drools.clips.functions.LessThanFunction;
+import org.drools.clips.functions.ModifyFunction;
+import org.drools.clips.functions.MoreThanFunction;
+import org.drools.clips.functions.MultiplyFunction;
+import org.drools.clips.functions.PlusFunction;
+import org.drools.clips.functions.PrintoutFunction;
+import org.drools.clips.functions.PrognFunction;
+import org.drools.clips.functions.ReturnFunction;
+import org.drools.clips.functions.SwitchFunction;
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.ImportDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.mvel.MVEL;
+import org.mvel.ast.Function;
+import org.mvel.compiler.CompiledExpression;
+import org.mvel.compiler.ExpressionCompiler;
+import org.mvel.util.CompilerTools;
+
+public class TestMVEL extends TestCase {
+ private ByteArrayOutputStream baos;
+
+ Shell shell = new Shell();
+
+ public void setUp() {
+ FunctionHandlers handlers = FunctionHandlers.getInstance();
+ handlers.registerFunction( new PlusFunction() );
+ handlers.registerFunction( new MultiplyFunction() );
+ handlers.registerFunction( new ModifyFunction() );
+ handlers.registerFunction( new CreateListFunction() );
+ handlers.registerFunction( new PrintoutFunction() );
+ handlers.registerFunction( new PrognFunction() );
+ handlers.registerFunction( new IfFunction() );
+ handlers.registerFunction( new LessThanFunction() );
+ handlers.registerFunction( new MoreThanFunction() );
+ handlers.registerFunction( new EqFunction() );
+ handlers.registerFunction( new SwitchFunction() );
+ //handlers.registerFunction( new DeffunctionFunction() );
+ handlers.registerFunction( new ReturnFunction() );
+
+ this.baos = new ByteArrayOutputStream();
+ shell.addRouter( "t",
+ new PrintStream( baos ) );
+ }
+
+ // public void test1() {
+ // String expr = "(* (+ 4 4 ) 2) (create$ 10 20 (+ 10 10) a) (modify ?p (name mark) (location \"london\")(age (+ 16 16) ) ) (printout t a b c (+ 4 4) )";
+ //
+ // SExpression[] lisplists = evalString( expr );
+ //
+ // StringBuilderAppendable appendable = new StringBuilderAppendable();
+ // MVELClipsContext context = new MVELClipsContext();
+ // for ( SExpression sExpression : lisplists ) {
+ // FunctionHandlers.dump( sExpression, appendable, context );
+ // }
+ //
+ // System.out.println( appendable );
+ // }
+
+ public void testProgn() {
+ String expr = "(progn (?x (create$ 10 20 30) ) (printout t ?x) ) )";
+
+ this.shell.eval( expr );
+
+ assertEquals( "102030",
+ new String( baos.toByteArray() ) );
+ }
+
+ public void testIf() {
+ String expr = "(if (< 1 3) then (printout t hello) (printout t hello) )";
+
+ this.shell.eval( expr );
+
+ assertEquals( "hellohello",
+ new String( baos.toByteArray() ) );
+ }
+
+ public void testIfElse() {
+ String expr = "(if (eq 1 3) then (printout t hello) (printout t 1) else (printout t hello) (printout t 2))";
+
+ this.shell.eval( expr );
+
+ assertEquals( "hello2",
+ new String( baos.toByteArray() ) );
+ }
+
+ public void testSwitch() throws IOException {
+ String expr = "(switch (?x) (case a then (printout t hello)(printout t 1)) (case b then (printout t hello)(printout t 2)) (default (printout t hello)(printout t 3)) )";
+
+ // check case a
+ this.shell.addVariable( "?x",
+ "a" );
+ this.shell.eval( expr );
+ assertEquals( "hello1",
+ new String( baos.toByteArray() ) );
+
+ // check default
+ this.shell.addVariable( "?x",
+ "M" );
+ this.shell.eval( expr );
+ assertEquals( "hello1hello3",
+ new String( baos.toByteArray() ) );
+
+ // check case b
+ this.shell.addVariable( "?x",
+ "b" );
+ this.shell.eval( expr );
+ assertEquals( "hello1hello3hello2",
+ new String( baos.toByteArray() ) );
+ }
+
+ public void testDeffunction() {
+ String function = "(deffunction max (?a ?b) (if (> ?a ?b) then (return ?a) else (return ?b) ) )";
+ this.shell.eval( function );
+
+ String expr = "(if (eq (max 3 5) 5) then (printout t hello) )";
+ this.shell.eval( expr );
+ assertEquals( "hello",
+ new String( baos.toByteArray() ) );
+
+ expr = "(if (eq (max ?a ?b) 5) then (printout t hello) )";
+ this.shell.addVariable( "?a",
+ "3" );
+ this.shell.addVariable( "?b",
+ "5" );
+ this.shell.eval( expr );
+ assertEquals( "hellohello",
+ new String( baos.toByteArray() ) );
+ }
+
+ public static class Shell
+ implements
+ ParserHandler,
+ VariableContext,
+ FunctionContext,
+ PrintRouterContext,
+ MVELBuildContext {
+ private Map<String, Object> vars;
+ private Map<String, String> varNameMap;
+
+ public Shell() {
+ this.vars = new HashMap<String, Object>();
+ this.varNameMap = new HashMap<String, String>();
+ }
+
+ public void functionHandler(FunctionDescr ruleDescr) {
+ Appendable builder = new StringBuilderAppendable();
+
+ // strip lead/trailing quotes
+ String name = ruleDescr.getName().trim();
+ if ( name.charAt( 0 ) == '"' ) {
+ name = name.substring( 1 );
+ }
+
+ if ( name.charAt( name.length() - 1 ) == '"' ) {
+ name = name.substring( 0,
+ name.length() - 1 );
+ }
+ builder.append( "function " + name + "(" );
+
+ for ( int i = 0, length = ruleDescr.getParameterNames().size(); i < length; i++ ) {
+ builder.append( ruleDescr.getParameterNames().get( i ) );
+ if ( i < length - 1 ) {
+ builder.append( ", " );
+ }
+ }
+
+ builder.append( ") {\n" );
+ List list = (List) ruleDescr.getContent();
+ for ( Iterator it = list.iterator(); it.hasNext(); ) {
+ FunctionHandlers.dump( (LispForm) it.next(),
+ builder,
+ this );
+ }
+ builder.append( "}" );
+
+ 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 );
+ }
+
+ }
+
+ public void importHandler(ImportDescr descr) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void lispFormHandler(LispForm lispForm) {
+ StringBuilderAppendable appendable = new StringBuilderAppendable();
+ FunctionHandlers.dump( lispForm,
+ appendable,
+ this );
+ MVEL.eval( appendable.toString(),
+ this.vars );
+
+ }
+
+ public void ruleHandler(RuleDescr ruleDescr) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void eval(String string) {
+ eval( new StringReader( string ) );
+ }
+
+ public void eval(Reader reader) {
+ CLPMVELParser parser;
+ try {
+ parser = new CLPMVELParser( new CommonTokenStream( new CLPMVELLexer( new ANTLRReaderStream( reader ) ) ) );
+ parser.eval( this,
+ this );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+
+ public void addFunction(Function function) {
+ this.vars.put( function.getAbsoluteName(),
+ function );
+ }
+
+ public boolean removeFunction(String functionName) {
+ return (this.vars.remove( functionName ) != null);
+ }
+
+ public Map<String, Function> getFunctions() {
+ Map<String, Function> map = new HashMap<String, Function>();
+ for ( Iterator it = this.vars.entrySet().iterator(); it.hasNext(); ) {
+ Entry entry = (Entry) it.next();
+ if ( entry.getValue() instanceof Function ) {
+ map.put( (String) entry.getKey(),
+ (Function) entry.getValue() );
+ }
+ }
+ return map;
+ }
+
+ public void addRouter(String name,
+ PrintStream out) {
+
+ Map routers = (Map) this.vars.get( "printrouters" );
+ if ( routers == null ) {
+ routers = new HashMap();
+ this.vars.put( "printrouters",
+ routers );
+ }
+ routers.put( name,
+ out );
+
+ }
+
+ public boolean removeRouter(String name) {
+ return (this.vars.remove( name ) != null);
+ }
+
+ public Map<String, PrintStream> getRouters() {
+ Map<String, PrintStream> map = new HashMap<String, PrintStream>();
+ for ( Iterator it = this.vars.entrySet().iterator(); it.hasNext(); ) {
+ Entry entry = (Entry) it.next();
+ if ( entry.getValue() instanceof Function ) {
+ map.put( (String) entry.getKey(),
+ (PrintStream) entry.getValue() );
+ }
+ }
+ return map;
+ }
+
+ public void addVariable(String name,
+ Object value) {
+ String temp = this.varNameMap.get( name );
+ if ( temp == null ) {
+ temp = makeValid( name );
+ if ( !temp.equals( name ) ) {
+ this.varNameMap.put( name,
+ temp );
+ }
+ }
+ this.vars.put( temp,
+ value );
+ }
+
+ public void removeVariable(String name) {
+ String temp = this.varNameMap.get( name );
+ if ( temp != null ) {
+ name = temp;
+ }
+ this.vars.remove( name );
+ }
+
+ public Map<String, String> getVariableNameMap() {
+ return this.varNameMap;
+ }
+
+ public String makeValid(String var) {
+ var = var.replaceAll( "\\?",
+ "_Q_" );
+ return var;
+ }
+
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/VariableLispAtom2.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clp/mvel/VariableLispAtom2.java 2008-01-24 19:43:07 UTC (rev 18083)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/mvel/VariableLispAtom2.java 2008-01-29 21:02:48 UTC (rev 18198)
@@ -1,12 +0,0 @@
-/**
- *
- */
-package org.drools.clp.mvel;
-
-public class VariableLispAtom2 extends LispAtom2 {
-
- public VariableLispAtom2(String value) {
- super(value);
- }
-
-}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-clips/src/test/resources/org/drools/clips (from rev 18083, labs/jbossrules/trunk/drools-clips/src/test/resources/org/drools/clp)
More information about the jboss-svn-commits
mailing list