[fdo-commits] r842 - in branches/3.2.x/Fdo: UnitTest Unmanaged/Src/Fdo/Parse

svn_fdo at osgeo.org svn_fdo at osgeo.org
Thu Mar 22 15:11:44 EDT 2007


Author: romicadascalescu
Date: 2007-03-22 15:11:42 -0400 (Thu, 22 Mar 2007)
New Revision: 842

Modified:
   branches/3.2.x/Fdo/UnitTest/ExpressionParseTest.cpp
   branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/Parse.cpp
   branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.cpp
   branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y
   branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpressionWin.cpp
   branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.cpp
   branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y
   branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilterWin.cpp
Log:
Track #49: Fixed Calling FdoExpression::Parse with a wrong expression cause a crash

Modified: branches/3.2.x/Fdo/UnitTest/ExpressionParseTest.cpp
===================================================================
--- branches/3.2.x/Fdo/UnitTest/ExpressionParseTest.cpp	2007-03-20 15:51:23 UTC (rev 841)
+++ branches/3.2.x/Fdo/UnitTest/ExpressionParseTest.cpp	2007-03-22 19:11:42 UTC (rev 842)
@@ -185,6 +185,20 @@
         L"sqrt(144)+12-32/12");
 
     ParseExpression(L"( Width*Height ) AS Area");
+    
+    FdoPtr<FdoExpression> exprTest = (FdoExpression*)FdoExpression::Parse(L"Lower(layer) AS testFld");
+    if (dynamic_cast<FdoComputedIdentifier*>(exprTest.p) == NULL)
+        UnitTestUtil::FailOnException( FdoException::Create(L"Parsing \"Lower(layer) AS testFld\" failed!") );
+    try
+    {
+        exprTest = (FdoExpression*)FdoExpression::Parse(L"Lower(layer) * - AS testFld");
+        UnitTestUtil::FailOnException( FdoException::Create(L"Parsing \"Lower(layer) * - AS testFld\" should fail!"));
+    }
+    catch(FdoException* ex)
+    {
+        printf("Expected exception: %ls\n", ex->GetExceptionMessage());
+        ex->Release();
+    }
 }
 
 void ExpressionParseTest::testFGFT()

Modified: branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/Parse.cpp
===================================================================
--- branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/Parse.cpp	2007-03-20 15:51:23 UTC (rev 841)
+++ branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/Parse.cpp	2007-03-22 19:11:42 UTC (rev 842)
@@ -79,35 +79,42 @@
 FdoIDisposable* FdoParse::AddNode(FdoIDisposable* pNode)
 {
 	if (pNode != NULL)
+    {
+        // The parse is not releasing any object (only creates them).
+        // So, don't 'addref' the object because is already done at the creation time
 		m_nodes->Add(pNode);
+        pNode->Release();
+    }
 	return pNode;
 }
 
 FdoIDisposable* FdoParse::AddNodeToDelete(FdoIDisposable* pNode)
 {
 	if (pNode != NULL)
+    {
+        // The parse is not releasing any object (only creates them).
+        // So, don't 'addref' the object because is already done at the creation time
 		m_nodesToDelete->Add(pNode);
+        pNode->Release();
+    }
 	return pNode;
 }
 
 void FdoParse::AddCompIdentifier(FdoComputedIdentifier* pNode)
 {
+    // We need to addref the object because the object is added also to m_nodes
     if (pNode != NULL)
-    {
-        if( m_ComputedIdentifiers != NULL )
-            m_ComputedIdentifiers->Add( pNode );
-    }
+        m_ComputedIdentifiers->Add( pNode );
 }
 
 FdoComputedIdentifier* FdoParse::FindComputedIdentifier( FdoString* name )
 {
+    // don't addref the object found because the parser is not releasing any object
     for(int i=0; i<m_ComputedIdentifiers->GetCount(); i++ )
     {
-        FdoComputedIdentifier *id = (FdoComputedIdentifier*)m_ComputedIdentifiers->GetItem(i);
+        FdoPtr<FdoComputedIdentifier> id = (FdoComputedIdentifier*)m_ComputedIdentifiers->GetItem(i);
         if( wcscmp( id->GetName(), name ) == 0 )
-            return id;
-        else
-            id->Release();
+            return id.p;
     }
     return NULL;
 }
@@ -134,17 +141,9 @@
 #endif
 }
 
-// release all the allocated nodes and then Clean
 void FdoParse::Abort(void)
 {
-	// go through collection and release nodes
-	for (FdoInt32 i=0; i<m_nodes->GetCount(); i++)
-	{
-		FdoIDisposable* pItem = m_nodes->GetItem(i);
-		pItem->Release();
-		pItem->Release();
-	}
-	m_nodes->Clear();
+    // do nothing... the objects will be released by Clean
 }
 
 // clean up deleted always list
@@ -329,6 +328,8 @@
         exception->Release();
 		throw exceptionOuter;
 	}
+    // addref resulted object to keep it, otherwise Clean will delete it
+    FDO_SAFE_ADDREF(m_root);
 	Clean();
 	return (FdoExpression*) m_root;
 }
@@ -361,6 +362,8 @@
         exception->Release();
 		throw exceptionOuter;
 	}
+    // addref resulted object to keep it, otherwise Clean will delete it
+    FDO_SAFE_ADDREF(m_root);
 	Clean();
 	return (FdoFilter*) m_root;
 }

Modified: branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.cpp
===================================================================
--- branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.cpp	2007-03-20 15:51:23 UTC (rev 841)
+++ branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.cpp	2007-03-22 19:11:42 UTC (rev 842)
@@ -13,12 +13,13 @@
 #define FDO_EXPRESSION_YYRECOVERING() (pParse->fdo_expression_yyerrflag!=0)
 class FdoParse; static int fdo_expression_yygrowstack(FdoParse *pParse);
 #define FDO_EXPRESSION_YYPREFIX "fdo_expression_yy"
-#line 36 "Src/Fdo/Parse/yyExpression.y"
+#line 35 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 
+
 #include "Parse.h"
 #pragma warning(disable:4102)	/* unreferenced labels in fdo_expression_yyExpression.cpp*/
 
-#line 43 "Src/Fdo/Parse/yyExpression.y"
+#line 43 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 #if 0
 {
 	FdoIDisposable*	m_node;		/* expression or filter parse tree node*/
@@ -29,7 +30,7 @@
 	FdoString*		m_string;	/* string*/
 	_FdoDateTime	m_datetime;	/* date time*/
 #endif
-#line 33 "yyExpression.cpp"
+#line 34 "yyExpression.cpp"
 #define FDO_EXPRESSION_YYERRCODE 256
 #define FdoToken_NULL 257
 #define FdoToken_TRUE 258
@@ -88,56 +89,57 @@
     0,    0,    3,    3,    3,    3,    3,    3,    3,    1,
     1,    1,    1,    2,    2,    2,    2,    2,    2,    2,
     2,    2,   15,   15,   14,   16,   17,   13,   18,    5,
-    8,    4,    4,    4,    6,    7,    9,    9,   10,   10,
-   11,   11,   12,
+    8,    8,    4,    4,    4,    6,    7,    9,    9,   10,
+   10,   11,   11,   12,
 };
 const short fdo_expression_yylen[] = {                                         2,
     1,    1,    3,    1,    1,    1,    1,    1,    1,    3,
     3,    3,    3,    1,    1,    1,    1,    1,    1,    1,
     1,    1,    1,    1,    1,    1,    1,    1,    1,    4,
-    5,    0,    1,    3,    4,    1,    1,    1,    1,    1,
-    1,    2,    2,
+    5,    3,    0,    1,    3,    4,    1,    1,    1,    1,
+    1,    1,    2,    2,
 };
 const short fdo_expression_yydefred[] = {                                      0,
-    2,   22,   23,   24,    0,   36,   41,   25,   26,   27,
-   28,   29,   20,   21,    0,    0,    0,    0,    5,   40,
-    0,    6,   39,    0,    9,    8,   37,   38,    4,   16,
-   19,   14,   17,   18,   15,    0,   43,   42,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,   12,   13,
-    0,    0,   35,    0,   30,    0,   31,    0,
+    2,   22,   23,   24,    0,   37,   42,   25,   26,   27,
+   28,   29,   20,   21,    0,    0,    0,    0,    5,   41,
+    0,    6,   40,    0,    9,    8,   38,   39,    4,   16,
+   19,   14,   17,   18,   15,    0,    0,   43,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,   32,    0,    0,   36,    0,   30,    0,   31,    0,
 };
 const short fdo_expression_yydgoto[] = {                                      18,
-   19,   20,   21,   52,   22,   23,   24,   25,   26,   27,
+   19,   20,   21,   54,   22,   23,   24,   25,   26,   27,
    28,   29,   30,   31,   32,   33,   34,   35,
 };
 const short fdo_expression_yysindex[] = {                                    -40,
-    0,    0,    0,    0,  -32,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,  -26, -262,  -26,    0,    0,    0,
- -277,    0,    0,  -15,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0, -259,    0,    0,  -21,  -26,
-  -26,  -26,  -26,  -26,   -9, -275, -282, -282,    0,    0,
- -277,  -38,    0, -249,    0,  -26,    0, -277,
+    0,    0,    0,    0,  -30,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,  -26, -268,  -26,    0,    0,    0,
+ -267,    0,    0,  -19,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0, -262, -271,    0,  -21,  -26,
+  -26,  -26,  -26, -244,  -26,   -1, -265, -292, -292, -271,
+ -271,    0, -267,  -33,    0, -244,    0,  -26,    0, -267,
 };
 const short fdo_expression_yyrindex[] = {                                      0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-   35,    0,    0,    1,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,  -34,    0,    5,    9,   11,    0,    0,
-  -22,    0,    0,    0,    0,    0,    0,  -20,
+   44,    0,    0,    1,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    5,    0,    0,    0,
+    0,    0,    0,    0,  -29,    0,    9,   22,   24,   13,
+   18,    0,   -8,    0,    0,    0,    0,    0,    0,   -6,
 };
 const short fdo_expression_yygindex[] = {                                      0,
-    0,    0,  -13,    0,    0,    0,  -18,    0,    0,    0,
+    0,    0,  -11,    0,    0,    0,  -37,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,
 };
-#define FDO_EXPRESSION_YYTABLESIZE 304
+#define FDO_EXPRESSION_YYTABLESIZE 317
 const short fdo_expression_yytable[] = {                                      17,
-    7,   37,   55,   39,    3,   56,   32,   36,   10,   32,
-   11,   42,   43,   17,   40,   41,   42,   43,   33,   46,
-   34,   33,   38,   34,   44,   45,   47,   48,   49,   50,
-   51,   53,   54,    6,    1,   57,    0,    0,    0,    0,
-    0,    7,   58,    0,    7,    3,    0,    0,    3,   10,
-    0,   11,   10,    0,   11,    0,    0,    0,    0,    0,
+    7,   42,   43,   37,   44,   39,   52,   57,    3,   36,
+   58,   33,   12,   17,   33,   44,   38,   13,   59,   47,
+   45,   10,   46,   11,   40,   41,   42,   43,   48,   49,
+   50,   51,   34,   53,   35,   34,   44,   35,    6,   55,
+   44,    7,   56,    1,    7,   44,   60,    0,   44,    3,
+    0,    0,    3,   12,    0,    0,   12,    0,   13,    0,
+    0,   13,   10,    0,   11,   10,    0,   11,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -152,7 +154,6 @@
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    1,    2,    3,    4,    0,
     0,    0,    5,    0,    0,    0,    0,    0,    0,    0,
     2,    3,    4,    0,    0,    0,    5,    0,    0,    0,
@@ -160,17 +161,19 @@
    14,    0,    0,    0,    0,   15,    6,    7,    8,    9,
    10,   11,   12,   13,   14,    0,   16,    0,    0,   15,
    40,   41,   42,   43,    0,    0,    0,    0,    0,    0,
-   16,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    7,    7,    7,    7,    3,    3,    3,    3,
-   10,   10,   11,   11,
+   16,    0,    0,    0,    0,    0,   44,    0,    0,    0,
+    0,    0,    7,    7,    7,    7,   44,   44,   44,   44,
+    3,    3,    3,    3,   12,   12,   12,   12,    7,   13,
+   13,   13,   13,   10,   10,   11,   11,
 };
 const short fdo_expression_yycheck[] = {                                      40,
-    0,   15,   41,   17,    0,   44,   41,   40,    0,   44,
-    0,  294,  295,   40,  292,  293,  294,  295,   41,   41,
-   41,   44,  285,   44,   40,  285,   40,   41,   42,   43,
-   44,   41,  308,  283,    0,   54,   -1,   -1,   -1,   -1,
-   -1,   41,   56,   -1,   44,   41,   -1,   -1,   44,   41,
-   -1,   41,   44,   -1,   44,   -1,   -1,   -1,   -1,   -1,
+    0,  294,  295,   15,    0,   17,   44,   41,    0,   40,
+   44,   41,    0,   40,   44,  308,  285,    0,   56,   41,
+   40,    0,  285,    0,  292,  293,  294,  295,   40,   41,
+   42,   43,   41,   45,   41,   44,  308,   44,  283,   41,
+  308,   41,  308,    0,   44,   41,   58,   -1,   44,   41,
+   -1,   -1,   44,   41,   -1,   -1,   44,   -1,   41,   -1,
+   -1,   44,   41,   -1,   41,   44,   -1,   44,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -185,7 +188,6 @@
    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,  256,  257,  258,  259,   -1,
    -1,   -1,  263,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   257,  258,  259,   -1,   -1,   -1,  263,   -1,   -1,   -1,
@@ -193,9 +195,10 @@
   291,   -1,   -1,   -1,   -1,  296,  283,  284,  285,  286,
   287,  288,  289,  290,  291,   -1,  307,   -1,   -1,  296,
   292,  293,  294,  295,   -1,   -1,   -1,   -1,   -1,   -1,
-  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  307,   -1,   -1,   -1,   -1,   -1,  308,   -1,   -1,   -1,
    -1,   -1,  292,  293,  294,  295,  292,  293,  294,  295,
-  292,  293,  292,  293,
+  292,  293,  294,  295,  292,  293,  294,  295,  308,  292,
+  293,  294,  295,  292,  293,  292,  293,
 };
 #define FDO_EXPRESSION_YYFINAL 18
 #ifndef FDO_EXPRESSION_YYDEBUG
@@ -259,6 +262,7 @@
 "datetime : FdoToken_DATETIME",
 "Function : Identifier '(' ExpressionCollection ')'",
 "ComputedIdentifier : '(' Expression ')' FdoToken_AS Identifier",
+"ComputedIdentifier : Expression FdoToken_AS Identifier",
 "ExpressionCollection :",
 "ExpressionCollection : Expression",
 "ExpressionCollection : ExpressionCollection ',' Expression",
@@ -288,7 +292,8 @@
 #endif
 #endif
 #define FDO_EXPRESSION_YYINITSTACKSIZE 200
-#line 218 "Src/Fdo/Parse/yyExpression.y"
+#line 217 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+
 ///////////////////////////////////////////////////////////////////////
 
 #include <stdio.h>
@@ -346,7 +351,7 @@
 	printf( "***  current token is %d (%s)  ***\n", pParse->fdo_expression_yychar, token_name );
 #endif
 }
-#line 362 "yyExpression.cpp"
+#line 367 "yyExpression.cpp"
 /* allocate initial stack or double stack size, up to FDO_EXPRESSION_YYMAXDEPTH */
 static int fdo_expression_yygrowstack(FdoParse *pParse)
 {
@@ -542,178 +547,182 @@
     switch (fdo_expression_yyn)
     {
 case 1:
-#line 108 "Src/Fdo/Parse/yyExpression.y"
+#line 108 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->SetRoot(Node_Copy(L"Expression", pParse->fdo_expression_yyvsp[0].m_node));	FDO_EXPRESSION_YYACCEPT;}
 break;
 case 2:
-#line 109 "Src/Fdo/Parse/yyExpression.y"
+#line 109 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {Node_Trace(L"ERROR!");	pParse->SetRoot((FdoIDisposable*)NULL);	FDO_EXPRESSION_YYABORT;}
 break;
 case 3:
-#line 113 "Src/Fdo/Parse/yyExpression.y"
+#line 113 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"(Expression)", pParse->fdo_expression_yyvsp[-1].m_node);}
 break;
 case 4:
-#line 114 "Src/Fdo/Parse/yyExpression.y"
+#line 114 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"UnaryExpression", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 5:
-#line 115 "Src/Fdo/Parse/yyExpression.y"
+#line 115 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"BinaryExpression", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 6:
-#line 116 "Src/Fdo/Parse/yyExpression.y"
+#line 116 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"Function", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 7:
-#line 117 "Src/Fdo/Parse/yyExpression.y"
+#line 117 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"Identifier", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 8:
-#line 118 "Src/Fdo/Parse/yyExpression.y"
+#line 118 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"ValueExpression", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 9:
-#line 119 "Src/Fdo/Parse/yyExpression.y"
+#line 119 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"ComputedIdentifier", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 10:
-#line 123 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Add, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+#line 123 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Add, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));}
 break;
 case 11:
-#line 124 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Subtract, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+#line 124 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Subtract, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));}
 break;
 case 12:
-#line 125 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Multiply, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+#line 125 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Multiply, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));}
 break;
 case 13:
-#line 126 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Divide, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+#line 126 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Divide, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));}
 break;
 case 14:
-#line 131 "Src/Fdo/Parse/yyExpression.y"
+#line 131 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"boolean", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 15:
-#line 133 "Src/Fdo/Parse/yyExpression.y"
+#line 133 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"datetime", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 16:
-#line 136 "Src/Fdo/Parse/yyExpression.y"
+#line 136 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"double", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 17:
-#line 138 "Src/Fdo/Parse/yyExpression.y"
+#line 138 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"integer", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 18:
-#line 140 "Src/Fdo/Parse/yyExpression.y"
+#line 140 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"int64", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 19:
-#line 142 "Src/Fdo/Parse/yyExpression.y"
+#line 142 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"string", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 20:
-#line 144 "Src/Fdo/Parse/yyExpression.y"
+#line 144 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"TODO:BLOB", NULL);}
 break;
 case 21:
-#line 146 "Src/Fdo/Parse/yyExpression.y"
+#line 146 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Copy(L"TODO:CLOB", NULL);}
 break;
 case 22:
-#line 148 "Src/Fdo/Parse/yyExpression.y"
+#line 148 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Add(L"NULL", FdoDataValue::Create(FdoDataType_Boolean));}
 break;
 case 23:
-#line 152 "Src/Fdo/Parse/yyExpression.y"
+#line 152 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Add(L"TRUE", FdoBooleanValue::Create(true));}
 break;
 case 24:
-#line 153 "Src/Fdo/Parse/yyExpression.y"
+#line 153 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Add(L"FALSE", FdoBooleanValue::Create(false));}
 break;
 case 25:
-#line 156 "Src/Fdo/Parse/yyExpression.y"
+#line 156 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Add(L"STRING", FdoDataValue::Create(pParse->fdo_expression_yyvsp[0].m_string));}
 break;
 case 26:
-#line 159 "Src/Fdo/Parse/yyExpression.y"
+#line 159 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Add(L"INTEGER", FdoInt32Value::Create(pParse->fdo_expression_yyvsp[0].m_integer));}
 break;
 case 27:
-#line 162 "Src/Fdo/Parse/yyExpression.y"
+#line 162 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Add(L"INT64", FdoInt64Value::Create(pParse->fdo_expression_yyvsp[0].m_int64));}
 break;
 case 28:
-#line 165 "Src/Fdo/Parse/yyExpression.y"
+#line 165 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Add(L"DOUBLE", FdoDoubleValue::Create(pParse->fdo_expression_yyvsp[0].m_double));}
 break;
 case 29:
-#line 168 "Src/Fdo/Parse/yyExpression.y"
+#line 168 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
 {pParse->fdo_expression_yyval.m_node=Node_Add(L"DateTime", FdoDataValue::Create(pParse->fdo_expression_yyvsp[0].m_datetime));}
 break;
 case 30:
-#line 173 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)pParse->fdo_expression_yyvsp[-3].m_node)->GetName(), (FdoExpressionCollection*)pParse->fdo_expression_yyvsp[-1].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-3].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-1].m_node);}
+#line 173 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)pParse->fdo_expression_yyvsp[-3].m_node)->GetName(), (FdoExpressionCollection*)pParse->fdo_expression_yyvsp[-1].m_node));}
 break;
 case 31:
-#line 178 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Add(L"ComputedIdentifier", FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_expression_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_expression_yyvsp[-3].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-3].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+#line 177 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Add(L"ComputedIdentifier", FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_expression_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_expression_yyvsp[-3].m_node));}
 break;
 case 32:
-#line 181 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create());}
+#line 178 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Add(L"ComputedIdentifier", FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_expression_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node));}
 break;
 case 33:
-#line 182 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)pParse->fdo_expression_yyval.m_node)->Add((FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node); Node_Trace(L"Expression Arg 1,");FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node); }
+#line 181 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create());}
 break;
 case 34:
-#line 183 "Src/Fdo/Parse/yyExpression.y"
-{((FdoExpressionCollection*)pParse->fdo_expression_yyval.m_node)->Add((FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node); Node_Trace(L"Expression Arg N,");FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node); }
+#line 182 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)pParse->fdo_expression_yyval.m_node)->Add((FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node); Node_Trace(L"Expression Arg 1,");}
 break;
 case 35:
-#line 188 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Add(L"GeomFromText('FGFT')", pParse->FgftToGeometryValue(pParse->fdo_expression_yyvsp[-1].m_string));}
+#line 183 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{((FdoExpressionCollection*)pParse->fdo_expression_yyval.m_node)->Add((FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node); Node_Trace(L"Expression Arg N,");}
 break;
 case 36:
-#line 193 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node = Node_Add(L"IDENTIFIER", FdoIdentifier::Create(pParse->fdo_expression_yyvsp[0].m_string));}
+#line 188 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Add(L"GeomFromText('FGFT')", pParse->FgftToGeometryValue(pParse->fdo_expression_yyvsp[-1].m_string));}
 break;
 case 37:
-#line 197 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Copy(L"LiteralValue", pParse->fdo_expression_yyvsp[0].m_node);}
+#line 193 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node = Node_Add(L"IDENTIFIER", FdoIdentifier::Create(pParse->fdo_expression_yyvsp[0].m_string));}
 break;
 case 38:
-#line 198 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Copy(L"Parameter", pParse->fdo_expression_yyvsp[0].m_node);}
+#line 197 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Copy(L"LiteralValue", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 39:
-#line 202 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Copy(L"GeometryValue", pParse->fdo_expression_yyvsp[0].m_node);}
+#line 198 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Copy(L"Parameter", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 40:
-#line 203 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node=Node_Copy(L"DataValue", pParse->fdo_expression_yyvsp[0].m_node);}
+#line 202 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Copy(L"GeometryValue", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 41:
-#line 208 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node = Node_Add(L"PARAMETER", FdoParameter::Create(pParse->fdo_expression_yyvsp[0].m_string));}
+#line 203 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node=Node_Copy(L"DataValue", pParse->fdo_expression_yyvsp[0].m_node);}
 break;
 case 42:
-#line 210 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node = Node_Add(L":Parameter", FdoParameter::Create(pParse->fdo_expression_yyvsp[0].m_string));}
+#line 208 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node = Node_Add(L"PARAMETER", FdoParameter::Create(pParse->fdo_expression_yyvsp[0].m_string));}
 break;
 case 43:
-#line 214 "Src/Fdo/Parse/yyExpression.y"
-{pParse->fdo_expression_yyval.m_node = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+#line 210 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node = Node_Add(L":Parameter", FdoParameter::Create(pParse->fdo_expression_yyvsp[0].m_string));}
 break;
-#line 729 "yyExpression.cpp"
+case 44:
+#line 214 "Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y"
+{pParse->fdo_expression_yyval.m_node = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));}
+break;
+#line 738 "yyExpression.cpp"
     }
     pParse->fdo_expression_yyssp -= fdo_expression_yym;
     fdo_expression_yystate = *pParse->fdo_expression_yyssp;

Modified: branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y
===================================================================
--- branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y	2007-03-20 15:51:23 UTC (rev 841)
+++ branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpression.y	2007-03-22 19:11:42 UTC (rev 842)
@@ -120,10 +120,10 @@
 	;
 	
 BinaryExpression :
-	Expression FdoToken_Add Expression			{$$=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Add, (FdoExpression*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
-	| Expression FdoToken_Subtract Expression	{$$=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Subtract, (FdoExpression*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
-	| Expression FdoToken_Multiply Expression	{$$=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Multiply, (FdoExpression*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
-	| Expression FdoToken_Divide Expression		{$$=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Divide, (FdoExpression*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
+	Expression FdoToken_Add Expression			{$$=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Add, (FdoExpression*)$3));}
+	| Expression FdoToken_Subtract Expression	{$$=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Subtract, (FdoExpression*)$3));}
+	| Expression FdoToken_Multiply Expression	{$$=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Multiply, (FdoExpression*)$3));}
+	| Expression FdoToken_Divide Expression		{$$=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Divide, (FdoExpression*)$3));}
 	;
 	  
 DataValue :
@@ -170,17 +170,17 @@
 	
 Function :
 	Identifier '(' ExpressionCollection ')'
-					{$$=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)$1)->GetName(), (FdoExpressionCollection*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
+					{$$=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)$1)->GetName(), (FdoExpressionCollection*)$3));}
 	;
 
 ComputedIdentifier :
-    '(' Expression ')' FdoToken_AS Identifier
-                    {$$=Node_Add(L"ComputedIdentifier", FdoComputedIdentifier::Create(((FdoIdentifier*)$5)->GetName(), (FdoExpression*)$2));FDO_SAFE_RELEASE($2); FDO_SAFE_RELEASE($5);}
-     ;            
+    '(' Expression ')' FdoToken_AS Identifier	{$$=Node_Add(L"ComputedIdentifier", FdoComputedIdentifier::Create(((FdoIdentifier*)$5)->GetName(), (FdoExpression*)$2));}
+    | Expression FdoToken_AS Identifier	{$$=Node_Add(L"ComputedIdentifier", FdoComputedIdentifier::Create(((FdoIdentifier*)$3)->GetName(), (FdoExpression*)$1));}
+     ;
 
 ExpressionCollection :							{$$=pParse->AddNodeToDelete(FdoExpressionCollection::Create());}
-	| Expression								{$$=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)$$)->Add((FdoExpression*)$1); Node_Trace(L"Expression Arg 1,");FDO_SAFE_RELEASE($1); }
-	| ExpressionCollection ',' Expression		{((FdoExpressionCollection*)$$)->Add((FdoExpression*)$3); Node_Trace(L"Expression Arg N,");FDO_SAFE_RELEASE($3); }
+	| Expression								{$$=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)$$)->Add((FdoExpression*)$1); Node_Trace(L"Expression Arg 1,");}
+	| ExpressionCollection ',' Expression		{((FdoExpressionCollection*)$$)->Add((FdoExpression*)$3); Node_Trace(L"Expression Arg N,");}
 	;
 
 GeometryValue :
@@ -211,7 +211,7 @@
 	;
 	
 UnaryExpression :
-	FdoToken_Negate Expression	{$$ = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)$2));FDO_SAFE_RELEASE($2);}
+	FdoToken_Negate Expression	{$$ = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)$2));}
 	;
 
 %%

Modified: branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpressionWin.cpp
===================================================================
--- branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpressionWin.cpp	2007-03-20 15:51:23 UTC (rev 841)
+++ branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyExpressionWin.cpp	2007-03-22 19:11:42 UTC (rev 842)
@@ -311,16 +311,16 @@
 /* FDO_EXPRESSION_YYFINAL -- State number of the termination state. */
 #define FDO_EXPRESSION_YYFINAL  40
 /* FDO_EXPRESSION_YYLAST -- Last index in FDO_EXPRESSION_YYTABLE.  */
-#define FDO_EXPRESSION_YYLAST   99
+#define FDO_EXPRESSION_YYLAST   81
 
 /* FDO_EXPRESSION_YYNTOKENS -- Number of terminals. */
 #define FDO_EXPRESSION_YYNTOKENS  59
 /* FDO_EXPRESSION_YYNNTS -- Number of nonterminals. */
 #define FDO_EXPRESSION_YYNNTS  20
 /* FDO_EXPRESSION_YYNRULES -- Number of rules. */
-#define FDO_EXPRESSION_YYNRULES  44
+#define FDO_EXPRESSION_YYNRULES  45
 /* FDO_EXPRESSION_YYNRULES -- Number of states. */
-#define FDO_EXPRESSION_YYNSTATES  60
+#define FDO_EXPRESSION_YYNSTATES  62
 
 /* FDO_EXPRESSION_YYTRANSLATE(FDO_EXPRESSION_YYLEX) -- Bison symbol number corresponding to FDO_EXPRESSION_YYLEX.  */
 #define FDO_EXPRESSION_YYUNDEFTOK  2
@@ -374,8 +374,8 @@
        0,     0,     3,     5,     7,    11,    13,    15,    17,    19,
       21,    23,    27,    31,    35,    39,    41,    43,    45,    47,
       49,    51,    53,    55,    57,    59,    61,    63,    65,    67,
-      69,    71,    76,    82,    83,    85,    89,    94,    96,    98,
-     100,   102,   104,   106,   109
+      69,    71,    76,    82,    86,    87,    89,    93,    98,   100,
+     102,   104,   106,   108,   110,   113
 };
 
 /* FDO_EXPRESSION_YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -389,10 +389,10 @@
       -1,    36,    -1,    37,    -1,     3,    -1,     4,    -1,     5,
       -1,    31,    -1,    32,    -1,    33,    -1,    34,    -1,    35,
       -1,    74,    56,    72,    57,    -1,    56,    61,    57,    54,
-      74,    -1,    -1,    61,    -1,    72,    58,    61,    -1,     9,
-      56,    31,    57,    -1,    29,    -1,    76,    -1,    77,    -1,
-      73,    -1,    63,    -1,    30,    -1,    53,    31,    -1,    42,
-      61,    -1
+      74,    -1,    61,    54,    74,    -1,    -1,    61,    -1,    72,
+      58,    61,    -1,     9,    56,    31,    57,    -1,    29,    -1,
+      76,    -1,    77,    -1,    73,    -1,    63,    -1,    30,    -1,
+      53,    31,    -1,    42,    61,    -1
 };
 
 /* FDO_EXPRESSION_YYRLINE[FDO_EXPRESSION_YYN] -- source line where rule number FDO_EXPRESSION_YYN was defined.  */
@@ -401,8 +401,8 @@
        0,   108,   108,   109,   113,   114,   115,   116,   117,   118,
      119,   123,   124,   125,   126,   130,   133,   135,   137,   139,
      141,   143,   145,   147,   152,   153,   156,   159,   162,   165,
-     168,   172,   177,   181,   182,   183,   187,   192,   197,   198,
-     202,   203,   207,   209,   214
+     168,   172,   177,   178,   181,   182,   183,   187,   192,   197,
+     198,   202,   203,   207,   209,   214
 };
 #endif
 
@@ -456,8 +456,8 @@
        0,    59,    60,    60,    61,    61,    61,    61,    61,    61,
       61,    62,    62,    62,    62,    63,    63,    63,    63,    63,
       63,    63,    63,    63,    64,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    72,    72,    73,    74,    75,    75,
-      76,    76,    77,    77,    78
+      69,    70,    71,    71,    72,    72,    72,    73,    74,    75,
+      75,    76,    76,    77,    77,    78
 };
 
 /* FDO_EXPRESSION_YYR2[FDO_EXPRESSION_YYN] -- Number of symbols composing right hand side of rule FDO_EXPRESSION_YYN.  */
@@ -466,8 +466,8 @@
        0,     2,     1,     1,     3,     1,     1,     1,     1,     1,
        1,     3,     3,     3,     3,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     4,     5,     0,     1,     3,     4,     1,     1,     1,
-       1,     1,     1,     2,     2
+       1,     4,     5,     3,     0,     1,     3,     4,     1,     1,
+       1,     1,     1,     1,     2,     2
 };
 
 /* FDO_EXPRESSION_YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -475,39 +475,41 @@
    means the default is an error.  */
 static const unsigned char fdo_expression_yydefact[] =
 {
-       0,     3,    23,    24,    25,     0,    37,    42,    26,    27,
+       0,     3,    23,    24,    25,     0,    38,    43,    26,    27,
       28,    29,    30,    21,    22,     0,     0,     0,     0,     2,
-       6,    41,    15,    20,    18,    19,    17,    16,     7,    10,
-      40,     8,     9,    38,    39,     5,     0,    44,    43,     0,
-       1,     0,     0,     0,     0,    33,     0,     4,    11,    12,
-      13,    14,    34,     0,    36,     0,    31,     0,    32,    35
+       6,    42,    15,    20,    18,    19,    17,    16,     7,    10,
+      41,     8,     9,    39,    40,     5,     0,    45,    44,     0,
+       1,     0,     0,     0,     0,     0,    34,     0,     4,    11,
+      12,    13,    14,    33,    35,     0,    37,     0,    31,     0,
+      32,    36
 };
 
 /* FDO_EXPRESSION_YYDEFGOTO[NTERM-NUM]. */
 static const fdo_expression_yysigned_char fdo_expression_yydefgoto[] =
 {
       -1,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    53,    30,    31,    32,    33,    34,    35
+      27,    28,    29,    55,    30,    31,    32,    33,    34,    35
 };
 
 /* FDO_EXPRESSION_YYPACT[STATE-NUM] -- Index in FDO_EXPRESSION_YYTABLE of the portion describing
    STATE-NUM.  */
-#define FDO_EXPRESSION_YYPACT_NINF -56
+#define FDO_EXPRESSION_YYPACT_NINF -52
 static const fdo_expression_yysigned_char fdo_expression_yypact[] =
 {
-      -1,   -56,   -56,   -56,   -56,   -55,   -56,   -56,   -56,   -56,
-     -56,   -56,   -56,   -56,   -56,    14,   -24,    14,    15,   -29,
-     -56,   -56,   -56,   -56,   -56,   -56,   -56,   -56,   -56,   -56,
-     -56,   -40,   -56,   -56,   -56,   -56,   -11,   -56,   -56,    22,
-     -56,    14,    14,    14,    14,    14,   -36,   -32,   -35,   -35,
-     -56,   -56,   -29,   -44,   -56,    -5,   -56,    14,   -56,   -29
+      -1,   -52,   -52,   -52,   -52,   -51,   -52,   -52,   -52,   -52,
+     -52,   -52,   -52,   -52,   -52,    14,   -15,    14,    21,   -29,
+     -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,   -52,
+     -52,   -32,   -52,   -52,   -52,   -52,    -9,   -28,   -52,    19,
+     -52,    14,    14,    14,    14,    -2,    14,   -19,   -14,   -34,
+     -34,   -28,   -28,   -52,   -29,   -43,   -52,    -2,   -52,    14,
+     -52,   -29
 };
 
 /* FDO_EXPRESSION_YYPGOTO[NTERM-NUM].  */
 static const fdo_expression_yysigned_char fdo_expression_yypgoto[] =
 {
-     -56,   -56,    42,   -56,   -56,   -56,   -56,   -56,   -56,   -56,
-     -56,   -56,   -56,   -56,   -56,   -30,   -56,   -56,   -56,   -56
+     -52,   -52,    22,   -52,   -52,   -52,   -52,   -52,   -52,   -52,
+     -52,   -52,   -52,   -52,   -52,   -44,   -52,   -52,   -52,   -52
 };
 
 /* FDO_EXPRESSION_YYTABLE[FDO_EXPRESSION_YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -517,30 +519,28 @@
 #define FDO_EXPRESSION_YYTABLE_NINF -1
 static const unsigned char fdo_expression_yytable[] =
 {
-       1,    36,     2,     3,     4,    43,    44,    38,     5,    41,
-      42,    43,    44,    56,    57,    40,    45,     2,     3,     4,
-      46,    54,    55,     5,     6,    58,     0,     0,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,     0,     0,     0,
-       0,    15,     0,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    16,     0,     0,    17,    15,    37,     0,    39,
-      41,    42,    43,    44,     0,     0,     0,    16,     0,     0,
-      17,     0,     0,     0,     0,     0,     0,     0,     0,    47,
-       0,     0,     0,    48,    49,    50,    51,    52,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    59
+       1,    53,     2,     3,     4,    36,    43,    44,     5,    41,
+      42,    43,    44,    60,    58,    59,    38,     2,     3,     4,
+      45,    40,    47,     5,    46,    45,    45,     6,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    37,    56,    39,
+      57,    15,     0,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    16,     0,     0,    17,    15,    41,    42,    43,
+      44,     0,     0,    49,    50,    51,    52,    16,    54,     0,
+      17,     0,     0,    45,     0,     0,    48,     0,     0,     0,
+       0,    61
 };
 
 static const fdo_expression_yysigned_char fdo_expression_yycheck[] =
 {
-       1,    56,     3,     4,     5,    40,    41,    31,     9,    38,
-      39,    40,    41,    57,    58,     0,    56,     3,     4,     5,
-      31,    57,    54,     9,    29,    55,    -1,    -1,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    -1,    -1,    -1,
-      -1,    42,    -1,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    53,    -1,    -1,    56,    42,    15,    -1,    17,
-      38,    39,    40,    41,    -1,    -1,    -1,    53,    -1,    -1,
-      56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,
-      -1,    -1,    -1,    41,    42,    43,    44,    45,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57
+       1,    45,     3,     4,     5,    56,    40,    41,     9,    38,
+      39,    40,    41,    57,    57,    58,    31,     3,     4,     5,
+      54,     0,    31,     9,    56,    54,    54,    29,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    15,    57,    17,
+      54,    42,    -1,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    53,    -1,    -1,    56,    42,    38,    39,    40,
+      41,    -1,    -1,    41,    42,    43,    44,    53,    46,    -1,
+      56,    -1,    -1,    54,    -1,    -1,    57,    -1,    -1,    -1,
+      -1,    59
 };
 
 /* FDO_EXPRESSION_YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -551,8 +551,9 @@
       33,    34,    35,    36,    37,    42,    53,    56,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
       73,    74,    75,    76,    77,    78,    56,    61,    31,    61,
-       0,    38,    39,    40,    41,    56,    31,    57,    61,    61,
-      61,    61,    61,    72,    57,    54,    57,    58,    74,    61
+       0,    38,    39,    40,    41,    54,    56,    31,    57,    61,
+      61,    61,    61,    74,    61,    72,    57,    54,    57,    58,
+      74,    61
 };
 
 #if ! defined (FDO_EXPRESSION_YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -1199,22 +1200,22 @@
 
   case 11:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Add, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+    {pParse->fdo_expression_yyval.m_node=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Add, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));}
     break;
 
   case 12:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Subtract, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+    {pParse->fdo_expression_yyval.m_node=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Subtract, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));}
     break;
 
   case 13:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Multiply, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+    {pParse->fdo_expression_yyval.m_node=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Multiply, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));}
     break;
 
   case 14:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Divide, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+    {pParse->fdo_expression_yyval.m_node=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node, FdoBinaryOperations_Divide, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));}
     break;
 
   case 15:
@@ -1299,75 +1300,80 @@
 
   case 31:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)pParse->fdo_expression_yyvsp[-3].m_node)->GetName(), (FdoExpressionCollection*)pParse->fdo_expression_yyvsp[-1].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-3].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-1].m_node);}
+    {pParse->fdo_expression_yyval.m_node=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)pParse->fdo_expression_yyvsp[-3].m_node)->GetName(), (FdoExpressionCollection*)pParse->fdo_expression_yyvsp[-1].m_node));}
     break;
 
   case 32:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Add(L"ComputedIdentifier", FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_expression_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_expression_yyvsp[-3].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[-3].m_node); FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+    {pParse->fdo_expression_yyval.m_node=Node_Add(L"ComputedIdentifier", FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_expression_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_expression_yyvsp[-3].m_node));}
     break;
 
   case 33:
 
-    {pParse->fdo_expression_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create());}
+    {pParse->fdo_expression_yyval.m_node=Node_Add(L"ComputedIdentifier", FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_expression_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_expression_yyvsp[-2].m_node));}
     break;
 
   case 34:
 
-    {pParse->fdo_expression_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)pParse->fdo_expression_yyval.m_node)->Add((FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node); Node_Trace(L"Expression Arg 1,");FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node); }
+    {pParse->fdo_expression_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create());}
     break;
 
   case 35:
 
-    {((FdoExpressionCollection*)pParse->fdo_expression_yyval.m_node)->Add((FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node); Node_Trace(L"Expression Arg N,");FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node); }
+    {pParse->fdo_expression_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)pParse->fdo_expression_yyval.m_node)->Add((FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node); Node_Trace(L"Expression Arg 1,");}
     break;
 
   case 36:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Add(L"GeomFromText('FGFT')", pParse->FgftToGeometryValue(pParse->fdo_expression_yyvsp[-1].m_string));}
+    {((FdoExpressionCollection*)pParse->fdo_expression_yyval.m_node)->Add((FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node); Node_Trace(L"Expression Arg N,");}
     break;
 
   case 37:
 
-    {pParse->fdo_expression_yyval.m_node = Node_Add(L"IDENTIFIER", FdoIdentifier::Create(pParse->fdo_expression_yyvsp[0].m_string));}
+    {pParse->fdo_expression_yyval.m_node=Node_Add(L"GeomFromText('FGFT')", pParse->FgftToGeometryValue(pParse->fdo_expression_yyvsp[-1].m_string));}
     break;
 
   case 38:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Copy(L"LiteralValue", pParse->fdo_expression_yyvsp[0].m_node);}
+    {pParse->fdo_expression_yyval.m_node = Node_Add(L"IDENTIFIER", FdoIdentifier::Create(pParse->fdo_expression_yyvsp[0].m_string));}
     break;
 
   case 39:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Copy(L"Parameter", pParse->fdo_expression_yyvsp[0].m_node);}
+    {pParse->fdo_expression_yyval.m_node=Node_Copy(L"LiteralValue", pParse->fdo_expression_yyvsp[0].m_node);}
     break;
 
   case 40:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Copy(L"GeometryValue", pParse->fdo_expression_yyvsp[0].m_node);}
+    {pParse->fdo_expression_yyval.m_node=Node_Copy(L"Parameter", pParse->fdo_expression_yyvsp[0].m_node);}
     break;
 
   case 41:
 
-    {pParse->fdo_expression_yyval.m_node=Node_Copy(L"DataValue", pParse->fdo_expression_yyvsp[0].m_node);}
+    {pParse->fdo_expression_yyval.m_node=Node_Copy(L"GeometryValue", pParse->fdo_expression_yyvsp[0].m_node);}
     break;
 
   case 42:
 
-    {pParse->fdo_expression_yyval.m_node = Node_Add(L"PARAMETER", FdoParameter::Create(pParse->fdo_expression_yyvsp[0].m_string));}
+    {pParse->fdo_expression_yyval.m_node=Node_Copy(L"DataValue", pParse->fdo_expression_yyvsp[0].m_node);}
     break;
 
   case 43:
 
-    {pParse->fdo_expression_yyval.m_node = Node_Add(L":Parameter", FdoParameter::Create(pParse->fdo_expression_yyvsp[0].m_string));}
+    {pParse->fdo_expression_yyval.m_node = Node_Add(L"PARAMETER", FdoParameter::Create(pParse->fdo_expression_yyvsp[0].m_string));}
     break;
 
   case 44:
 
-    {pParse->fdo_expression_yyval.m_node = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_expression_yyvsp[0].m_node);}
+    {pParse->fdo_expression_yyval.m_node = Node_Add(L":Parameter", FdoParameter::Create(pParse->fdo_expression_yyvsp[0].m_string));}
     break;
 
+  case 45:
 
+    {pParse->fdo_expression_yyval.m_node = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)pParse->fdo_expression_yyvsp[0].m_node));}
+    break;
+
+
     }
 
 /* Line 991 of yacc.c.  */

Modified: branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.cpp
===================================================================
--- branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.cpp	2007-03-20 15:51:23 UTC (rev 841)
+++ branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.cpp	2007-03-22 19:11:42 UTC (rev 842)
@@ -13,10 +13,11 @@
 #define FDO_FILTER_YYRECOVERING() (pParse->fdo_filter_yyerrflag!=0)
 class FdoParse;static int fdo_filter_yygrowstack(FdoParse *pParse);
 #define FDO_FILTER_YYPREFIX "fdo_filter_yy"
-#line 36 "Src/Fdo/Parse/yyFilter.y"
+#line 35 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+
 #include "Parse.h"
 #pragma warning(disable:4102)	/* unreferenced labels in fdo_filter_yyFilter.cpp*/
-#line 41 "Src/Fdo/Parse/yyFilter.y"
+#line 41 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 #if 0
 {
 	FdoIDisposable*	m_node;		/* expression or filter parse tree node*/
@@ -27,7 +28,7 @@
 	FdoString*		m_string;	/* string*/
 	_FdoDateTime	m_datetime;	/* date time*/
 #endif
-#line 31 "yyFilter.cpp"
+#line 32 "yyFilter.cpp"
 #define FDO_FILTER_YYERRCODE 256
 #define FdoToken_NULL 257
 #define FdoToken_TRUE 258
@@ -86,155 +87,155 @@
     0,    0,    0,    3,    3,    3,    3,    3,    3,    1,
     1,    1,    1,    2,    2,    2,    2,    2,    2,    2,
     2,    2,   30,   30,   29,   31,   32,   28,   33,    5,
-    4,    4,    4,    6,    7,   34,   34,   35,    8,    8,
-    9,    9,   10,   10,   11,   15,   15,   15,   18,   18,
-   16,   16,   20,   20,   17,   19,   21,   21,   21,   21,
-   22,   23,   12,   12,   13,   14,   25,   25,   25,   25,
-   25,   25,   25,   26,   26,   24,   24,   24,   24,   24,
-   24,   24,   24,   24,   24,   24,   27,   27,   27,
+    4,    4,    4,    6,    7,   34,   34,   35,   35,    8,
+    8,    9,    9,   10,   10,   11,   15,   15,   15,   18,
+   18,   16,   16,   20,   20,   17,   19,   21,   21,   21,
+   21,   22,   23,   12,   12,   13,   14,   25,   25,   25,
+   25,   25,   25,   25,   26,   26,   24,   24,   24,   24,
+   24,   24,   24,   24,   24,   24,   24,   27,   27,   27,
 };
 const short fdo_filter_yylen[] = {                                         2,
     1,    3,    1,    3,    1,    1,    1,    1,    1,    3,
     3,    3,    3,    1,    1,    1,    1,    1,    1,    1,
     1,    1,    1,    1,    1,    1,    1,    1,    1,    4,
-    0,    1,    3,    4,    1,    1,    3,    5,    1,    1,
-    1,    1,    1,    2,    2,    3,    1,    1,    1,    1,
-    1,    1,    1,    3,    5,    2,    1,    1,    1,    1,
-    3,    2,    3,    3,    3,    4,    1,    1,    1,    1,
+    0,    1,    3,    4,    1,    1,    3,    5,    3,    1,
+    1,    1,    1,    1,    2,    2,    3,    1,    1,    1,
+    1,    1,    1,    1,    3,    5,    2,    1,    1,    1,
+    1,    3,    2,    3,    3,    3,    4,    1,    1,    1,
     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 };
 const short fdo_filter_yydefred[] = {                                      0,
-    3,   22,   23,   24,    0,    0,   35,   43,   25,   26,
+    3,   22,   23,   24,    0,    0,   35,   44,   25,   26,
    27,   28,   29,   20,   21,    0,    0,    0,    0,    6,
-   42,    0,    7,   41,    0,    9,   39,   40,    5,   49,
-   58,   51,    0,   59,   57,   47,   60,   48,   52,   50,
+   43,    0,    7,   42,    0,    9,   40,   41,    5,   50,
+   59,   52,    0,   60,   58,   48,   61,   49,   53,   51,
    16,   19,   14,   17,   18,   15,    0,   36,    0,    0,
-   62,    0,   45,    0,   44,    0,    0,   73,    0,    0,
-    0,    0,   67,   68,   69,   70,   71,   72,    0,   56,
-    0,   74,   75,   76,   85,   77,   78,   86,   79,   81,
-   80,   82,   83,   84,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,   46,    0,    0,   12,   13,    0,
-    0,    0,    0,    0,    0,   63,    0,    0,   37,   34,
-    4,    0,   53,    0,    0,   30,   88,   89,   66,   87,
-   38,    0,   55,    0,   54,
+    0,   63,    0,   46,    0,   45,    0,    0,   74,    0,
+    0,    0,    0,   68,   69,   70,   71,   72,   73,    0,
+    0,   57,    0,   75,   76,   77,   86,   78,   79,   87,
+   80,   82,   81,   83,   84,   85,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,   47,    0,    0,   12,
+   13,   39,    0,    0,    0,    0,    0,    0,   64,    0,
+    0,   37,   34,    4,    0,   54,    0,    0,   30,   89,
+   90,   67,   88,   38,    0,   56,    0,   55,
 };
 const short fdo_filter_yydgoto[] = {                                      19,
-   20,   21,   22,  103,   23,   24,   54,   26,   27,   28,
-   29,   30,   31,   32,   57,   34,   35,   36,   37,  114,
-   38,   39,   40,   86,   69,   87,  119,   41,   42,   43,
+   20,   21,   51,  106,   23,   24,   55,   26,   27,   28,
+   29,   30,   31,   32,   58,   34,   35,   36,   37,  117,
+   38,   39,   40,   88,   71,   89,  122,   41,   42,   43,
    44,   45,   46,   47,   48,
 };
 const short fdo_filter_yysindex[] = {                                    -40,
-    0,    0,    0,    0,  -20,  103,    0,    0,    0,    0,
+    0,    0,    0,    0,  -38,  103,    0,    0,    0,    0,
     0,    0,    0,    0,    0,  157, -263,  103,    0,    0,
-    0, -147,    0,    0,  222,    0,    0,    0,    0,    0,
+    0, -148,    0,    0,  222,    0,    0,    0,    0,    0,
     0,    0, -249,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,  -16,    0, -251,  103,
-    0,  157,    0,    4,    0,   40,  -37,    0,  157,  157,
-  157,  157,    0,    0,    0,    0,    0,    0,  157,    0,
-   14,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,  157,  157,  157,  103,  103,  117,
-   15,  168,  -35, -267,    0, -243, -243,    0,    0, -282,
- -163, -282,  -27, -282, -256,    0, -209, -249,    0,    0,
-    0, -225,    0,  -17,  157,    0,    0,    0,    0,    0,
-    0, -163,    0, -282,    0,
+    0,    0,    0,    0,    0,    0,  -20,    0, -242,  103,
+ -131,    0,  157,    0,    4,    0,  168,  -37,    0,  157,
+  157,  157,  157,    0,    0,    0,    0,    0,    0, -231,
+  157,    0,   15,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,  157,  157,  157,  103,
+  103,  117,   19,  183,  -35, -250,    0, -266, -266,    0,
+    0,    0, -282, -174, -282,   -5, -282, -261,    0, -203,
+ -249,    0,    0,    0, -231,    0,   -4,  157,    0,    0,
+    0,    0,    0,    0, -174,    0, -282,    0,
 };
 const short fdo_filter_yyrindex[] = {                                      0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,  183,    0,    0,    0,    0,    0,
-    0,    0,   60,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,   40,    0,    0,    0,    0,    0,
+    0,    0,   68,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    1,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    1,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,  -15,    0,    0,    0,    0,    0,
-    0,    0,    0, -134,    0,   18,   57,    0,    0,    5,
-    0,   -1,    0,    7,    0,    0,    8,   61,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    6,    0,
+    0,    0,    0,    0,    0,    0,   -3,    0,    0,    0,
+    0,    0,    0,    0,    0, -119,    0,   18,   57,    0,
+    0,    0,    5,    0,    6,    0,    7,    0,    0,    8,
+   69,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,   10,    0,
 };
 const short fdo_filter_yygindex[] = {                                      0,
-    0,    0,   17,    0,    0,    0,    3,  -99,    0,    0,
-    0,    0,    0,    0,   19,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,  -42,    0,    0,
-    0,    0,    0,    0,  -26,
+    0,    0,    3,    0,    0,    0,   17,  -95,    0,    0,
+    0,    0,    0,    0,   14,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,  -36,    0,    0,
+    0,    0,    0,    0,  -22,
 };
 #define FDO_FILTER_YYTABLESIZE 503
 const short fdo_filter_yytable[] = {                                      18,
-    8,  113,   25,   95,   65,  111,   61,   64,   25,   59,
-   60,   61,   62,  116,   88,   89,  115,   10,   33,   49,
-   25,   55,  125,  123,   51,   31,  122,   90,   31,  117,
-  118,   12,   53,   91,   56,   59,   60,   61,   62,   32,
-  112,    8,   32,   85,    8,   65,   33,   61,   64,   33,
-   61,   62,   25,  101,   88,  110,   11,    7,   10,    1,
-    2,   10,  120,  109,    0,    0,   92,    0,   93,    0,
-    0,    0,    0,    0,    0,   96,   97,   98,   99,    0,
-   94,    0,    0,    0,    0,  100,    0,    0,    0,    0,
-   25,   25,   25,    2,    3,    4,    0,   11,    0,    5,
-   11,  102,  104,  105,    0,    0,  106,  107,  108,    0,
-    0,    0,    0,    0,  121,    0,    0,    0,    0,   58,
-    8,    9,   10,   11,   12,   13,   14,   15,    0,    0,
-    0,  124,    4,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,   50,   17,   59,   60,   61,   62,    0,   63,
-   64,   65,   66,   67,   68,    0,   18,    4,    4,    4,
-    4,    0,    4,    4,    4,    4,    4,    4,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,   52,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,  111,    0,
+    8,   49,   22,   97,   66,  114,   62,   65,  116,   60,
+   61,   62,   63,   33,   90,   91,   25,   10,   54,   52,
+   57,   56,   25,   92,  120,  121,   12,   62,   63,  128,
+   60,   61,   62,   63,   25,  119,  126,   31,  118,  125,
+   31,    8,   93,   87,    8,   66,   32,   62,   65,   32,
+   33,    7,   94,   33,  104,   95,   11,  115,   10,  113,
+   90,   10,   98,   99,  100,  101,   25,    1,    2,  112,
+    0,  123,    0,  103,    0,    0,    0,    0,    0,    0,
+    8,    0,    2,    3,    4,    0,  102,    0,    5,  105,
+  107,  108,    0,    0,   22,    0,    0,   11,    0,    0,
+   11,    0,    0,  109,  110,  111,   25,   25,   25,    8,
+    9,   10,   11,   12,   13,   14,   15,    0,   59,    0,
+  127,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  124,   17,    0,    0,   59,    0,    0,    0,    0,
+    0,    0,   50,   60,   61,   62,   63,    4,   64,   65,
+   66,   67,   68,   69,    0,    0,   18,    0,    0,   70,
+   60,   61,   62,   63,    0,   64,   65,   66,   67,   68,
+   69,    0,    4,    4,    4,    4,    0,    4,    4,    4,
+    4,    4,    4,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,   53,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
     0,    0,    0,    0,    0,    1,    2,    3,    4,    0,
-    0,    0,    5,    8,    0,    6,   88,   89,    0,    0,
+    0,    0,    5,  114,    0,    6,   90,   91,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    7,    8,    9,   10,   11,   12,   13,   14,
-   15,    0,    0,    0,    0,   16,   59,   60,   61,   62,
-    0,   85,    0,    0,    8,    8,   17,    8,   65,   65,
-   61,   61,   64,    0,    0,    0,    0,    0,    0,    0,
+   15,    0,    0,    0,    0,   16,   60,   61,   62,   63,
+    0,   87,    0,    0,    8,    8,   17,    8,   66,   66,
+   62,   62,   65,    0,    0,    0,    0,    0,    0,    0,
     0,   10,   10,    0,   10,    0,    8,    8,    8,    0,
     0,    0,    8,    8,    8,    8,    0,    8,    8,    8,
-    8,    8,    8,   10,   10,   10,   58,    0,    0,   10,
+    8,    8,    8,   10,   10,   10,    8,    0,    8,   10,
    10,    0,    0,    0,   10,   10,   10,   10,   10,   10,
-   11,   11,    0,   11,    0,    0,    0,    0,    0,    0,
-    0,   59,   60,   61,   62,    0,   63,   64,   65,   66,
-   67,   68,   11,   11,   11,    0,    0,    0,   11,   11,
+   11,   11,    0,   11,    0,   10,    0,    0,    0,    0,
+    0,    8,    8,    8,    8,    0,    8,    8,    8,    8,
+    8,    8,   11,   11,   11,    0,    0,    8,   11,   11,
     0,    0,    0,   11,   11,   11,   11,   11,   11,    2,
-    3,    4,    0,    0,    0,    5,    0,    0,    6,    0,
+    3,    4,    0,    0,   11,    5,    0,    0,    6,    0,
     0,    0,    0,    2,    3,    4,    0,    0,    0,    5,
     0,    0,    6,    0,    0,    7,    8,    9,   10,   11,
    12,   13,   14,   15,    0,    0,    0,    0,   16,    7,
     8,    9,   10,   11,   12,   13,   14,   15,    0,   17,
     0,    0,   16,    2,    3,    4,    0,    0,    0,    5,
     0,    0,    0,   17,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,   58,    0,    0,    0,    0,    7,
-    8,    9,   10,   11,   12,   13,   14,   15,    0,    8,
-    0,    0,   16,    0,    0,    0,    0,    0,    0,   59,
-   60,   61,   62,   17,   63,   64,   65,   66,   67,   68,
-    0,    0,    0,    0,    8,    8,    8,    8,   70,    8,
-    8,    8,    8,    8,    8,    0,    0,    0,    0,   71,
-   72,   73,   74,   75,   76,   77,   78,   79,   80,   81,
-   82,   83,   84,
+    0,    0,    0,    0,   59,    0,    0,    0,    0,    7,
+    8,    9,   10,   11,   12,   13,   14,   15,    0,   59,
+    0,    0,   16,    0,    0,    0,    0,    0,    0,   60,
+   61,   62,   63,   17,   64,   65,   66,   67,   68,   69,
+    0,    0,    0,    0,   60,   61,   62,   63,   72,   64,
+   65,   66,   67,   68,   69,    0,    0,    0,    0,   73,
+   74,   75,   76,   77,   78,   79,   80,   81,   82,   83,
+   84,   85,   86,
 };
 const short fdo_filter_yycheck[] = {                                      40,
-    0,  101,    0,   41,    0,   41,    0,    0,    6,  292,
-  293,  294,  295,   41,  264,  265,   44,    0,    0,   40,
-   18,  285,  122,   41,    6,   41,   44,   44,   44,  286,
-  287,  288,   16,  285,   18,  292,  293,  294,  295,   41,
-  308,   41,   44,   40,   44,   41,   41,   41,   41,   44,
-  294,  295,   50,   40,  264,   41,    0,  283,   41,    0,
-    0,   44,  105,   90,   -1,   -1,   50,   -1,   52,   -1,
-   -1,   -1,   -1,   -1,   -1,   59,   60,   61,   62,   -1,
-   41,   -1,   -1,   -1,   -1,   69,   -1,   -1,   -1,   -1,
-   88,   89,   90,  257,  258,  259,   -1,   41,   -1,  263,
-   44,   85,   86,   87,   -1,   -1,   88,   89,   90,   -1,
-   -1,   -1,   -1,   -1,  112,   -1,   -1,   -1,   -1,  267,
-  284,  285,  286,  287,  288,  289,  290,  291,   -1,   -1,
-   -1,  115,  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   40,  307,  292,  293,  294,  295,   -1,  297,
-  298,  299,  300,  301,  302,   -1,   40,  292,  293,  294,
-  295,   -1,  297,  298,  299,  300,  301,  302,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+    0,   40,    0,   41,    0,   41,    0,    0,  104,  292,
+  293,  294,  295,    0,  264,  265,    0,    0,   16,    6,
+   18,  285,    6,   44,  286,  287,  288,  294,  295,  125,
+  292,  293,  294,  295,   18,   41,   41,   41,   44,   44,
+   44,   41,  285,   40,   44,   41,   41,   41,   41,   44,
+   41,  283,   50,   44,   40,   53,    0,  308,   41,   41,
+  264,   44,   60,   61,   62,   63,   50,    0,    0,   92,
+   -1,  108,   -1,   71,   -1,   -1,   -1,   -1,   -1,   -1,
+   41,   -1,  257,  258,  259,   -1,   70,   -1,  263,   87,
+   88,   89,   -1,   -1,   92,   -1,   -1,   41,   -1,   -1,
+   44,   -1,   -1,   90,   91,   92,   90,   91,   92,  284,
+  285,  286,  287,  288,  289,  290,  291,   -1,  267,   -1,
+  118,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,  115,  307,   -1,   -1,  267,   -1,   -1,   -1,   -1,
+   -1,   -1,   40,  292,  293,  294,  295,  267,  297,  298,
+  299,  300,  301,  302,   -1,   -1,   40,   -1,   -1,  308,
+  292,  293,  294,  295,   -1,  297,  298,  299,  300,  301,
+  302,   -1,  292,  293,  294,  295,   -1,  297,  298,  299,
+  300,  301,  302,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   41,   -1,
    -1,   -1,   -1,   -1,   -1,  256,  257,  258,  259,   -1,
@@ -246,13 +247,13 @@
   264,  265,  265,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,  264,  265,   -1,  267,   -1,  286,  287,  288,   -1,
    -1,   -1,  292,  293,  294,  295,   -1,  297,  298,  299,
-  300,  301,  302,  286,  287,  288,  267,   -1,   -1,  292,
+  300,  301,  302,  286,  287,  288,  267,   -1,  308,  292,
   293,   -1,   -1,   -1,  297,  298,  299,  300,  301,  302,
-  264,  265,   -1,  267,   -1,   -1,   -1,   -1,   -1,   -1,
+  264,  265,   -1,  267,   -1,  308,   -1,   -1,   -1,   -1,
    -1,  292,  293,  294,  295,   -1,  297,  298,  299,  300,
-  301,  302,  286,  287,  288,   -1,   -1,   -1,  292,  293,
+  301,  302,  286,  287,  288,   -1,   -1,  308,  292,  293,
    -1,   -1,   -1,  297,  298,  299,  300,  301,  302,  257,
-  258,  259,   -1,   -1,   -1,  263,   -1,   -1,  266,   -1,
+  258,  259,   -1,   -1,  308,  263,   -1,   -1,  266,   -1,
    -1,   -1,   -1,  257,  258,  259,   -1,   -1,   -1,  263,
    -1,   -1,  266,   -1,   -1,  283,  284,  285,  286,  287,
   288,  289,  290,  291,   -1,   -1,   -1,   -1,  296,  283,
@@ -337,6 +338,7 @@
 "ComputedIdentifier : ComputedIdentifier2",
 "ComputedIdentifier : ComputedIdentifier ',' ComputedIdentifier2",
 "ComputedIdentifier2 : '(' Expression ')' FdoToken_AS Identifier",
+"ComputedIdentifier2 : Expression FdoToken_AS Identifier",
 "ValueExpression : LiteralValue",
 "ValueExpression : Parameter",
 "LiteralValue : GeometryValue",
@@ -405,7 +407,8 @@
 #endif
 #endif
 #define FDO_FILTER_YYINITSTACKSIZE 200
-#line 347 "Src/Fdo/Parse/yyFilter.y"
+#line 351 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+
 ///////////////////////////////////////////////////////////////////////
 
 #include <stdio.h>
@@ -463,7 +466,7 @@
 	printf( "***  current token is %d (%s)  ***\n", pParse->fdo_filter_yychar, token_name );
 #endif
 }
-#line 479 "yyFilter.cpp"
+#line 482 "yyFilter.cpp"
 /* allocate initial stack or double stack size, up to FDO_FILTER_YYMAXDEPTH */
 static int fdo_filter_yygrowstack(FdoParse *pParse)
 {
@@ -659,373 +662,380 @@
     switch (fdo_filter_yyn)
     {
 case 1:
-#line 122 "Src/Fdo/Parse/yyFilter.y"
+#line 122 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->SetRoot(Node_Copy(L"Filter", pParse->fdo_filter_yyvsp[0].m_node));	FDO_FILTER_YYACCEPT;}
 break;
 case 2:
-#line 123 "Src/Fdo/Parse/yyFilter.y"
+#line 123 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->SetRoot(Node_Copy(L"Filter", pParse->fdo_filter_yyvsp[0].m_node)); FDO_FILTER_YYACCEPT;}
 break;
 case 3:
-#line 124 "Src/Fdo/Parse/yyFilter.y"
+#line 124 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {Node_Trace(L"ERROR!");	pParse->SetRoot((FdoIDisposable*)NULL);	FDO_FILTER_YYABORT;}
 break;
 case 4:
-#line 130 "Src/Fdo/Parse/yyFilter.y"
+#line 130 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"(Expression)", pParse->fdo_filter_yyvsp[-1].m_node);}
 break;
 case 5:
-#line 131 "Src/Fdo/Parse/yyFilter.y"
+#line 131 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"UnaryExpression", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 6:
-#line 132 "Src/Fdo/Parse/yyFilter.y"
+#line 132 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"BinaryExpression", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 7:
-#line 133 "Src/Fdo/Parse/yyFilter.y"
+#line 133 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"Function", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 8:
-#line 134 "Src/Fdo/Parse/yyFilter.y"
+#line 134 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"Identifier", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 9:
-#line 135 "Src/Fdo/Parse/yyFilter.y"
+#line 135 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"ValueExpression", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 10:
-#line 139 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Add, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 139 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Add, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
 break;
 case 11:
-#line 140 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Subtract, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 140 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Subtract, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
 break;
 case 12:
-#line 141 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Multiply, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 141 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Multiply, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
 break;
 case 13:
-#line 142 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Divide, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 142 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Divide, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
 break;
 case 14:
-#line 147 "Src/Fdo/Parse/yyFilter.y"
+#line 147 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"boolean", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 15:
-#line 149 "Src/Fdo/Parse/yyFilter.y"
+#line 149 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"datetime", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 16:
-#line 152 "Src/Fdo/Parse/yyFilter.y"
+#line 152 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"double", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 17:
-#line 154 "Src/Fdo/Parse/yyFilter.y"
+#line 154 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"integer", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 18:
-#line 156 "Src/Fdo/Parse/yyFilter.y"
+#line 156 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"int64", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 19:
-#line 158 "Src/Fdo/Parse/yyFilter.y"
+#line 158 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"string", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 20:
-#line 160 "Src/Fdo/Parse/yyFilter.y"
+#line 160 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"TODO:BLOB", NULL);}
 break;
 case 21:
-#line 162 "Src/Fdo/Parse/yyFilter.y"
+#line 162 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"TODO:CLOB", NULL);}
 break;
 case 22:
-#line 164 "Src/Fdo/Parse/yyFilter.y"
+#line 164 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"NULL", FdoDataValue::Create(FdoDataType_Boolean));}
 break;
 case 23:
-#line 168 "Src/Fdo/Parse/yyFilter.y"
+#line 168 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"TRUE", FdoBooleanValue::Create(true));}
 break;
 case 24:
-#line 169 "Src/Fdo/Parse/yyFilter.y"
+#line 169 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"FALSE", FdoBooleanValue::Create(false));}
 break;
 case 25:
-#line 172 "Src/Fdo/Parse/yyFilter.y"
+#line 172 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"STRING", FdoDataValue::Create(pParse->fdo_filter_yyvsp[0].m_string));}
 break;
 case 26:
-#line 175 "Src/Fdo/Parse/yyFilter.y"
+#line 175 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"INTEGER", FdoInt32Value::Create(pParse->fdo_filter_yyvsp[0].m_integer));}
 break;
 case 27:
-#line 178 "Src/Fdo/Parse/yyFilter.y"
+#line 178 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"INT64", FdoInt64Value::Create(pParse->fdo_filter_yyvsp[0].m_int64));}
 break;
 case 28:
-#line 181 "Src/Fdo/Parse/yyFilter.y"
+#line 181 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"DOUBLE", FdoDoubleValue::Create(pParse->fdo_filter_yyvsp[0].m_double));}
 break;
 case 29:
-#line 184 "Src/Fdo/Parse/yyFilter.y"
+#line 184 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"DateTime", FdoDataValue::Create(pParse->fdo_filter_yyvsp[0].m_datetime));}
 break;
 case 30:
-#line 189 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)pParse->fdo_filter_yyvsp[-3].m_node)->GetName(), (FdoExpressionCollection*)pParse->fdo_filter_yyvsp[-1].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-3].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-1].m_node);}
+#line 189 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)pParse->fdo_filter_yyvsp[-3].m_node)->GetName(), (FdoExpressionCollection*)pParse->fdo_filter_yyvsp[-1].m_node));}
 break;
 case 31:
-#line 192 "Src/Fdo/Parse/yyFilter.y"
+#line 192 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create());}
 break;
 case 32:
-#line 193 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"Expression Arg 1,");FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node); }
+#line 193 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"Expression Arg 1,");}
 break;
 case 33:
-#line 194 "Src/Fdo/Parse/yyFilter.y"
-{((FdoExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"Expression Arg N,");FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node); }
+#line 194 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{((FdoExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"Expression Arg N,");}
 break;
 case 34:
-#line 199 "Src/Fdo/Parse/yyFilter.y"
+#line 199 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"GeomFromText('FGFT')", pParse->FgftToGeometryValue(pParse->fdo_filter_yyvsp[-1].m_string));}
 break;
 case 35:
-#line 204 "Src/Fdo/Parse/yyFilter.y"
+#line 204 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {
-						    FdoComputedIdentifier* id = pParse->FindComputedIdentifier( pParse->fdo_filter_yyvsp[0].m_string );
-						    if( id == NULL )
-						        pParse->fdo_filter_yyval.m_node = Node_Add(L"IDENTIFIER", FdoIdentifier::Create(pParse->fdo_filter_yyvsp[0].m_string));
-						    else
-						        pParse->fdo_filter_yyval.m_node = id;
-						}
+		    FdoComputedIdentifier* id = pParse->FindComputedIdentifier( pParse->fdo_filter_yyvsp[0].m_string );
+		    if( id == NULL )
+		        pParse->fdo_filter_yyval.m_node = Node_Add(L"IDENTIFIER", FdoIdentifier::Create(pParse->fdo_filter_yyvsp[0].m_string));
+		    else
+		        pParse->fdo_filter_yyval.m_node = id;
+		}
 break;
 case 36:
-#line 214 "Src/Fdo/Parse/yyFilter.y"
+#line 214 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {}
 break;
 case 37:
-#line 215 "Src/Fdo/Parse/yyFilter.y"
+#line 215 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {}
 break;
 case 38:
-#line 220 "Src/Fdo/Parse/yyFilter.y"
+#line 220 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {
-                        FdoComputedIdentifier* id = FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_filter_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_filter_yyvsp[-3].m_node);
-                        Node_Add(L"ComputedIdentifier", id);
-                        pParse->AddCompIdentifier(id);FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-3].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);
-                        id->Release();
-                    }
+            FdoComputedIdentifier* id = FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_filter_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_filter_yyvsp[-3].m_node);
+            Node_Add(L"ComputedIdentifier", id);
+            pParse->AddCompIdentifier(id);
+        }
 break;
 case 39:
-#line 229 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"LiteralValue", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 226 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{
+            FdoComputedIdentifier* id = FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_filter_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node);
+            Node_Add(L"ComputedIdentifier", id);
+            pParse->AddCompIdentifier(id);
+        }
 break;
 case 40:
-#line 230 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"Parameter", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 234 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"LiteralValue", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 41:
-#line 234 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"GeometryValue", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 235 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"Parameter", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 42:
-#line 235 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"DataValue", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 239 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"GeometryValue", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 43:
-#line 240 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node = Node_Add(L"PARAMETER", FdoParameter::Create(pParse->fdo_filter_yyvsp[0].m_string));}
+#line 240 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"DataValue", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 44:
-#line 242 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node = Node_Add(L":Parameter", FdoParameter::Create(pParse->fdo_filter_yyvsp[0].m_string));}
+#line 245 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node = Node_Add(L"PARAMETER", FdoParameter::Create(pParse->fdo_filter_yyvsp[0].m_string));}
 break;
 case 45:
-#line 246 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 247 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node = Node_Add(L":Parameter", FdoParameter::Create(pParse->fdo_filter_yyvsp[0].m_string));}
 break;
 case 46:
-#line 251 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"(Filter)", pParse->fdo_filter_yyvsp[-1].m_node);}
+#line 251 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
 break;
 case 47:
-#line 252 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"LogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 256 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"(Filter)", pParse->fdo_filter_yyvsp[-1].m_node);}
 break;
 case 48:
-#line 253 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"SearchCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 257 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"LogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 49:
-#line 257 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"BinaryLogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 258 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"SearchCondition", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 50:
-#line 258 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"UnaryLogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 262 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"BinaryLogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 51:
-#line 262 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"DistanceCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 263 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"UnaryLogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 52:
-#line 263 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"SpatialCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 267 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"DistanceCondition", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 53:
-#line 267 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=pParse->AddNodeToDelete(FdoValueExpressionCollection::Create()); ((FdoValueExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoValueExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"ValueExpression 1");FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node); }
+#line 268 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"SpatialCondition", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 54:
-#line 269 "Src/Fdo/Parse/yyFilter.y"
-{((FdoValueExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoValueExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"ValueExpression n");FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node); }
+#line 272 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=pParse->AddNodeToDelete(FdoValueExpressionCollection::Create()); ((FdoValueExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoValueExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"ValueExpression 1");}
 break;
 case 55:
-#line 274 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"ValueExpressionCollection", FdoInCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-4].m_node, (FdoValueExpressionCollection*)pParse->fdo_filter_yyvsp[-1].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-4].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-1].m_node);}
+#line 274 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{((FdoValueExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoValueExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"ValueExpression n");}
 break;
 case 56:
-#line 278 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"NULL", FdoNullCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-1].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-1].m_node);}
+#line 279 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"ValueExpressionCollection", FdoInCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-4].m_node, (FdoValueExpressionCollection*)pParse->fdo_filter_yyvsp[-1].m_node));}
 break;
 case 57:
-#line 282 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"InCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 283 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"NULL", FdoNullCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-1].m_node));}
 break;
 case 58:
-#line 283 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"ComparisonCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 287 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"InCondition", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 59:
-#line 284 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"GeometricCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 288 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"ComparisonCondition", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 60:
-#line 285 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Copy(L"NullCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+#line 289 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"GeometricCondition", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 61:
-#line 290 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"Id-SpatialOp-Expression", FdoSpatialCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-2].m_node, (FdoSpatialOperations)pParse->fdo_filter_yyvsp[-1].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 290 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Copy(L"NullCondition", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
 case 62:
-#line 294 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"NOT", FdoUnaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node, FdoUnaryLogicalOperations_Not));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 295 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"Id-SpatialOp-Expression", FdoSpatialCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-2].m_node, (FdoSpatialOperations)pParse->fdo_filter_yyvsp[-1].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
 break;
 case 63:
-#line 298 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"AND", FdoBinaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryLogicalOperations_And, (FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 299 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"NOT", FdoUnaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node, FdoUnaryLogicalOperations_Not));}
 break;
 case 64:
-#line 299 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"OR", FdoBinaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryLogicalOperations_Or, (FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 303 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"AND", FdoBinaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryLogicalOperations_And, (FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node));}
 break;
 case 65:
-#line 303 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"ComparisonOperations", FdoComparisonCondition::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, (FdoComparisonOperations)pParse->fdo_filter_yyvsp[-1].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 304 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"OR", FdoBinaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryLogicalOperations_Or, (FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node));}
 break;
 case 66:
-#line 308 "Src/Fdo/Parse/yyFilter.y"
-{pParse->fdo_filter_yyval.m_node=Node_Add(L"Indentifier-DistanceOp-Expression", FdoDistanceCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-3].m_node, (FdoDistanceOperations)pParse->fdo_filter_yyvsp[-2].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[-1].m_node, ((FdoDoubleValue*)pParse->fdo_filter_yyvsp[0].m_node)->GetDouble()));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-3].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-1].m_node);FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+#line 308 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"ComparisonOperations", FdoComparisonCondition::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, (FdoComparisonOperations)pParse->fdo_filter_yyvsp[-1].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
 break;
 case 67:
-#line 312 "Src/Fdo/Parse/yyFilter.y"
+#line 313 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
+{pParse->fdo_filter_yyval.m_node=Node_Add(L"Indentifier-DistanceOp-Expression", FdoDistanceCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-3].m_node, (FdoDistanceOperations)pParse->fdo_filter_yyvsp[-2].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[-1].m_node, ((FdoDoubleValue*)pParse->fdo_filter_yyvsp[0].m_node)->GetDouble()));}
+break;
+case 68:
+#line 317 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_EqualTo; Node_Trace(L"EQ");}
 break;
-case 68:
-#line 313 "Src/Fdo/Parse/yyFilter.y"
+case 69:
+#line 318 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_NotEqualTo; Node_Trace(L"NE");}
 break;
-case 69:
-#line 314 "Src/Fdo/Parse/yyFilter.y"
+case 70:
+#line 319 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_GreaterThan; Node_Trace(L"GT");}
 break;
-case 70:
-#line 315 "Src/Fdo/Parse/yyFilter.y"
+case 71:
+#line 320 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_GreaterThanOrEqualTo; Node_Trace(L"GE");}
 break;
-case 71:
-#line 316 "Src/Fdo/Parse/yyFilter.y"
+case 72:
+#line 321 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_LessThan; Node_Trace(L"LT");}
 break;
-case 72:
-#line 317 "Src/Fdo/Parse/yyFilter.y"
+case 73:
+#line 322 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_LessThanOrEqualTo; Node_Trace(L"LE");}
 break;
-case 73:
-#line 318 "Src/Fdo/Parse/yyFilter.y"
+case 74:
+#line 323 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_Like; Node_Trace(L"LIKE");}
 break;
-case 74:
-#line 322 "Src/Fdo/Parse/yyFilter.y"
+case 75:
+#line 327 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoDistanceOperations_Beyond; Node_Trace(L"BEYOND");}
 break;
-case 75:
-#line 323 "Src/Fdo/Parse/yyFilter.y"
+case 76:
+#line 328 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoDistanceOperations_Within; Node_Trace(L"WITHINDISTANCE");}
 break;
-case 76:
-#line 327 "Src/Fdo/Parse/yyFilter.y"
+case 77:
+#line 332 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Contains; Node_Trace(L"CONTAINS");}
 break;
-case 77:
-#line 328 "Src/Fdo/Parse/yyFilter.y"
+case 78:
+#line 333 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Crosses; Node_Trace(L"CROSSES");}
 break;
-case 78:
-#line 329 "Src/Fdo/Parse/yyFilter.y"
+case 79:
+#line 334 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Disjoint; Node_Trace(L"DISJOINT");}
 break;
-case 79:
-#line 330 "Src/Fdo/Parse/yyFilter.y"
+case 80:
+#line 335 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Equals; Node_Trace(L"EQUALS");}
 break;
-case 80:
-#line 331 "Src/Fdo/Parse/yyFilter.y"
+case 81:
+#line 336 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Inside; Node_Trace(L"INSIDE");}
 break;
-case 81:
-#line 332 "Src/Fdo/Parse/yyFilter.y"
+case 82:
+#line 337 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Intersects; Node_Trace(L"INTERSECTS");}
 break;
-case 82:
-#line 333 "Src/Fdo/Parse/yyFilter.y"
+case 83:
+#line 338 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Overlaps; Node_Trace(L"OVERLAPS");}
 break;
-case 83:
-#line 334 "Src/Fdo/Parse/yyFilter.y"
+case 84:
+#line 339 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Touches; Node_Trace(L"TOUCHES");}
 break;
-case 84:
-#line 335 "Src/Fdo/Parse/yyFilter.y"
+case 85:
+#line 340 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Within; Node_Trace(L"WITHIN");}
 break;
-case 85:
-#line 336 "Src/Fdo/Parse/yyFilter.y"
+case 86:
+#line 341 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_CoveredBy; Node_Trace(L"COVEREDBY");}
 break;
-case 86:
-#line 337 "Src/Fdo/Parse/yyFilter.y"
+case 87:
+#line 342 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_EnvelopeIntersects; Node_Trace(L"ENVELOPEINTERSECTS");}
 break;
-case 87:
-#line 341 "Src/Fdo/Parse/yyFilter.y"
+case 88:
+#line 346 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Copy(L"double", pParse->fdo_filter_yyvsp[0].m_node);}
 break;
-case 88:
-#line 342 "Src/Fdo/Parse/yyFilter.y"
+case 89:
+#line 347 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"INTEGER", FdoDoubleValue::Create((double)pParse->fdo_filter_yyvsp[0].m_integer));}
 break;
-case 89:
-#line 343 "Src/Fdo/Parse/yyFilter.y"
+case 90:
+#line 348 "Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y"
 {pParse->fdo_filter_yyval.m_node=Node_Add(L"INT64", FdoDoubleValue::Create((double)pParse->fdo_filter_yyvsp[0].m_int64));}
 break;
-#line 1041 "yyFilter.cpp"
+#line 1051 "yyFilter.cpp"
     }
     pParse->fdo_filter_yyssp -= fdo_filter_yym;
     fdo_filter_yystate = *pParse->fdo_filter_yyssp;

Modified: branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y
===================================================================
--- branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y	2007-03-20 15:51:23 UTC (rev 841)
+++ branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilter.y	2007-03-22 19:11:42 UTC (rev 842)
@@ -136,10 +136,10 @@
 	;
 	
 BinaryExpression :
-	Expression FdoToken_Add Expression			{$$=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Add, (FdoExpression*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
-	| Expression FdoToken_Subtract Expression	{$$=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Subtract, (FdoExpression*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
-	| Expression FdoToken_Multiply Expression	{$$=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Multiply, (FdoExpression*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
-	| Expression FdoToken_Divide Expression		{$$=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Divide, (FdoExpression*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
+	Expression FdoToken_Add Expression			{$$=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Add, (FdoExpression*)$3));}
+	| Expression FdoToken_Subtract Expression	{$$=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Subtract, (FdoExpression*)$3));}
+	| Expression FdoToken_Multiply Expression	{$$=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Multiply, (FdoExpression*)$3));}
+	| Expression FdoToken_Divide Expression		{$$=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)$1, FdoBinaryOperations_Divide, (FdoExpression*)$3));}
 	;
  
 DataValue :
@@ -186,12 +186,12 @@
 	
 Function :
 	Identifier '(' ExpressionCollection ')'
-					{$$=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)$1)->GetName(), (FdoExpressionCollection*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
+					{$$=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)$1)->GetName(), (FdoExpressionCollection*)$3));}
 	;
 
 ExpressionCollection :							{$$=pParse->AddNodeToDelete(FdoExpressionCollection::Create());}
-	| Expression								{$$=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)$$)->Add((FdoExpression*)$1); Node_Trace(L"Expression Arg 1,");FDO_SAFE_RELEASE($1); }
-	| ExpressionCollection ',' Expression		{((FdoExpressionCollection*)$$)->Add((FdoExpression*)$3); Node_Trace(L"Expression Arg N,");FDO_SAFE_RELEASE($3); }
+	| Expression								{$$=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)$$)->Add((FdoExpression*)$1); Node_Trace(L"Expression Arg 1,");}
+	| ExpressionCollection ',' Expression		{((FdoExpressionCollection*)$$)->Add((FdoExpression*)$3); Node_Trace(L"Expression Arg N,");}
 	;
 
 GeometryValue :
@@ -201,13 +201,13 @@
 	
 Identifier :			// e.g. "Address.City", "Street", "City", and "Zip Code" or can be an alias of a computed identifier
 	FdoToken_IDENTIFIER
-						{
-						    FdoComputedIdentifier* id = pParse->FindComputedIdentifier( $1 );
-						    if( id == NULL )
-						        $$ = Node_Add(L"IDENTIFIER", FdoIdentifier::Create($1));
-						    else
-						        $$ = id;
-						}
+		{
+		    FdoComputedIdentifier* id = pParse->FindComputedIdentifier( $1 );
+		    if( id == NULL )
+		        $$ = Node_Add(L"IDENTIFIER", FdoIdentifier::Create($1));
+		    else
+		        $$ = id;
+		}
  	;
  	
 ComputedIdentifier:
@@ -217,12 +217,17 @@
     
 ComputedIdentifier2 :
      '(' Expression ')' FdoToken_AS Identifier
-                    {
-                        FdoComputedIdentifier* id = FdoComputedIdentifier::Create(((FdoIdentifier*)$5)->GetName(), (FdoExpression*)$2);
-                        Node_Add(L"ComputedIdentifier", id);
-                        pParse->AddCompIdentifier(id);FDO_SAFE_RELEASE($2); FDO_SAFE_RELEASE($5);
-                        id->Release();
-                    }
+        {
+            FdoComputedIdentifier* id = FdoComputedIdentifier::Create(((FdoIdentifier*)$5)->GetName(), (FdoExpression*)$2);
+            Node_Add(L"ComputedIdentifier", id);
+            pParse->AddCompIdentifier(id);
+        }
+     | Expression FdoToken_AS Identifier
+        {
+            FdoComputedIdentifier* id = FdoComputedIdentifier::Create(((FdoIdentifier*)$3)->GetName(), (FdoExpression*)$1);
+            Node_Add(L"ComputedIdentifier", id);
+            pParse->AddCompIdentifier(id);
+        }
      ;    
  	
 ValueExpression :
@@ -243,7 +248,7 @@
 	;
 	
 UnaryExpression :
-	FdoToken_Negate Expression	{$$ = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)$2));FDO_SAFE_RELEASE($2);}
+	FdoToken_Negate Expression	{$$ = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)$2));}
 	
 // </yyExpression.y>
 
@@ -264,18 +269,18 @@
 	;
 	
 ValueExpressionCollection :
-	ValueExpression					{$$=pParse->AddNodeToDelete(FdoValueExpressionCollection::Create()); ((FdoValueExpressionCollection*)$$)->Add((FdoValueExpression*)$1); Node_Trace(L"ValueExpression 1");FDO_SAFE_RELEASE($1); }
+	ValueExpression					{$$=pParse->AddNodeToDelete(FdoValueExpressionCollection::Create()); ((FdoValueExpressionCollection*)$$)->Add((FdoValueExpression*)$1); Node_Trace(L"ValueExpression 1");}
 	| ValueExpressionCollection ',' ValueExpression
-										{((FdoValueExpressionCollection*)$$)->Add((FdoValueExpression*)$3); Node_Trace(L"ValueExpression n");FDO_SAFE_RELEASE($3); }
+										{((FdoValueExpressionCollection*)$$)->Add((FdoValueExpression*)$3); Node_Trace(L"ValueExpression n");}
 	;
 	
 InCondition :
 	Identifier FdoToken_IN '(' ValueExpressionCollection ')'
-				{$$=Node_Add(L"ValueExpressionCollection", FdoInCondition::Create((FdoIdentifier*)$1, (FdoValueExpressionCollection*)$4));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($4);}
+				{$$=Node_Add(L"ValueExpressionCollection", FdoInCondition::Create((FdoIdentifier*)$1, (FdoValueExpressionCollection*)$4));}
 	;
 	
 NullCondition :
-	Identifier FdoToken_NULL	{$$=Node_Add(L"NULL", FdoNullCondition::Create((FdoIdentifier*)$1));FDO_SAFE_RELEASE($1);}
+	Identifier FdoToken_NULL	{$$=Node_Add(L"NULL", FdoNullCondition::Create((FdoIdentifier*)$1));}
 	;
 	
 SearchCondition :
@@ -287,25 +292,25 @@
 
 SpatialCondition :
 	Identifier SpatialOperations Expression	
-		{$$=Node_Add(L"Id-SpatialOp-Expression", FdoSpatialCondition::Create((FdoIdentifier*)$1, (FdoSpatialOperations)$2, (FdoExpression*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
+		{$$=Node_Add(L"Id-SpatialOp-Expression", FdoSpatialCondition::Create((FdoIdentifier*)$1, (FdoSpatialOperations)$2, (FdoExpression*)$3));}
 	;
 
 UnaryLogicalOperator :
-	FdoToken_NOT Filter		{$$=Node_Add(L"NOT", FdoUnaryLogicalOperator::Create((FdoFilter*)$2, FdoUnaryLogicalOperations_Not));FDO_SAFE_RELEASE($2);}
+	FdoToken_NOT Filter		{$$=Node_Add(L"NOT", FdoUnaryLogicalOperator::Create((FdoFilter*)$2, FdoUnaryLogicalOperations_Not));}
 	;
 
 BinaryLogicalOperator :
-	Filter FdoToken_AND Filter	{$$=Node_Add(L"AND", FdoBinaryLogicalOperator::Create((FdoFilter*)$1, FdoBinaryLogicalOperations_And, (FdoFilter*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
-	| Filter FdoToken_OR Filter	{$$=Node_Add(L"OR", FdoBinaryLogicalOperator::Create((FdoFilter*)$1, FdoBinaryLogicalOperations_Or, (FdoFilter*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
+	Filter FdoToken_AND Filter	{$$=Node_Add(L"AND", FdoBinaryLogicalOperator::Create((FdoFilter*)$1, FdoBinaryLogicalOperations_And, (FdoFilter*)$3));}
+	| Filter FdoToken_OR Filter	{$$=Node_Add(L"OR", FdoBinaryLogicalOperator::Create((FdoFilter*)$1, FdoBinaryLogicalOperations_Or, (FdoFilter*)$3));}
 	;
 
 ComparisonCondition :
-	Expression ComparisonOperations Expression	{$$=Node_Add(L"ComparisonOperations", FdoComparisonCondition::Create((FdoExpression*)$1, (FdoComparisonOperations)$2, (FdoExpression*)$3));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);}
+	Expression ComparisonOperations Expression	{$$=Node_Add(L"ComparisonOperations", FdoComparisonCondition::Create((FdoExpression*)$1, (FdoComparisonOperations)$2, (FdoExpression*)$3));}
 	;
 
 DistanceCondition :
 	Identifier DistanceOperations Expression distance	
-		{$$=Node_Add(L"Indentifier-DistanceOp-Expression", FdoDistanceCondition::Create((FdoIdentifier*)$1, (FdoDistanceOperations)$2, (FdoExpression*)$3, ((FdoDoubleValue*)$4)->GetDouble()));FDO_SAFE_RELEASE($1); FDO_SAFE_RELEASE($3);FDO_SAFE_RELEASE($4);}
+		{$$=Node_Add(L"Indentifier-DistanceOp-Expression", FdoDistanceCondition::Create((FdoIdentifier*)$1, (FdoDistanceOperations)$2, (FdoExpression*)$3, ((FdoDoubleValue*)$4)->GetDouble()));}
 	;
 	
 ComparisonOperations :

Modified: branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilterWin.cpp
===================================================================
--- branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilterWin.cpp	2007-03-20 15:51:23 UTC (rev 841)
+++ branches/3.2.x/Fdo/Unmanaged/Src/Fdo/Parse/yyFilterWin.cpp	2007-03-22 19:11:42 UTC (rev 842)
@@ -307,18 +307,18 @@
 #endif
 
 /* FDO_FILTER_YYFINAL -- State number of the termination state. */
-#define FDO_FILTER_YYFINAL  58
+#define FDO_FILTER_YYFINAL  59
 /* FDO_FILTER_YYLAST -- Last index in FDO_FILTER_YYTABLE.  */
-#define FDO_FILTER_YYLAST   303
+#define FDO_FILTER_YYLAST   298
 
 /* FDO_FILTER_YYNTOKENS -- Number of terminals. */
 #define FDO_FILTER_YYNTOKENS  59
 /* FDO_FILTER_YYNNTS -- Number of nonterminals. */
 #define FDO_FILTER_YYNNTS  37
 /* FDO_FILTER_YYNRULES -- Number of rules. */
-#define FDO_FILTER_YYNRULES  90
+#define FDO_FILTER_YYNRULES  91
 /* FDO_FILTER_YYNRULES -- Number of states. */
-#define FDO_FILTER_YYNSTATES  127
+#define FDO_FILTER_YYNSTATES  130
 
 /* FDO_FILTER_YYTRANSLATE(FDO_FILTER_YYLEX) -- Bison symbol number corresponding to FDO_FILTER_YYLEX.  */
 #define FDO_FILTER_YYUNDEFTOK  2
@@ -373,12 +373,12 @@
       23,    25,    29,    33,    37,    41,    43,    45,    47,    49,
       51,    53,    55,    57,    59,    61,    63,    65,    67,    69,
       71,    73,    78,    79,    81,    85,    90,    92,    94,    98,
-     104,   106,   108,   110,   112,   114,   117,   120,   124,   126,
-     128,   130,   132,   134,   136,   138,   142,   148,   151,   153,
-     155,   157,   159,   163,   166,   170,   174,   178,   183,   185,
-     187,   189,   191,   193,   195,   197,   199,   201,   203,   205,
-     207,   209,   211,   213,   215,   217,   219,   221,   223,   225,
-     227
+     104,   108,   110,   112,   114,   116,   118,   121,   124,   128,
+     130,   132,   134,   136,   138,   140,   142,   146,   152,   155,
+     157,   159,   161,   163,   167,   170,   174,   178,   182,   187,
+     189,   191,   193,   195,   197,   199,   201,   203,   205,   207,
+     209,   211,   213,   215,   217,   219,   221,   223,   225,   227,
+     229,   231
 };
 
 /* FDO_FILTER_YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -394,19 +394,20 @@
       -1,    35,    -1,    73,    57,    71,    58,    -1,    -1,    61,
       -1,    71,    56,    61,    -1,     9,    57,    31,    58,    -1,
       29,    -1,    75,    -1,    74,    56,    75,    -1,    57,    61,
-      58,    54,    73,    -1,    77,    -1,    78,    -1,    72,    -1,
-      63,    -1,    30,    -1,    53,    31,    -1,    42,    61,    -1,
-      57,    80,    58,    -1,    81,    -1,    86,    -1,    89,    -1,
-      88,    -1,    91,    -1,    87,    -1,    76,    -1,    83,    56,
-      76,    -1,    73,    14,    57,    83,    58,    -1,    73,     3,
-      -1,    84,    -1,    90,    -1,    82,    -1,    85,    -1,    73,
-      94,    61,    -1,    12,    80,    -1,    80,    10,    80,    -1,
-      80,    11,    80,    -1,    61,    92,    61,    -1,    73,    93,
-      61,    95,    -1,    43,    -1,    44,    -1,    45,    -1,    46,
-      -1,    47,    -1,    48,    -1,    13,    -1,    15,    -1,    16,
-      -1,    17,    -1,    19,    -1,    20,    -1,    22,    -1,    24,
-      -1,    23,    -1,    25,    -1,    26,    -1,    27,    -1,    18,
-      -1,    21,    -1,    68,    -1,    32,    -1,    33,    -1
+      58,    54,    73,    -1,    61,    54,    73,    -1,    77,    -1,
+      78,    -1,    72,    -1,    63,    -1,    30,    -1,    53,    31,
+      -1,    42,    61,    -1,    57,    80,    58,    -1,    81,    -1,
+      86,    -1,    89,    -1,    88,    -1,    91,    -1,    87,    -1,
+      76,    -1,    83,    56,    76,    -1,    73,    14,    57,    83,
+      58,    -1,    73,     3,    -1,    84,    -1,    90,    -1,    82,
+      -1,    85,    -1,    73,    94,    61,    -1,    12,    80,    -1,
+      80,    10,    80,    -1,    80,    11,    80,    -1,    61,    92,
+      61,    -1,    73,    93,    61,    95,    -1,    43,    -1,    44,
+      -1,    45,    -1,    46,    -1,    47,    -1,    48,    -1,    13,
+      -1,    15,    -1,    16,    -1,    17,    -1,    19,    -1,    20,
+      -1,    22,    -1,    24,    -1,    23,    -1,    25,    -1,    26,
+      -1,    27,    -1,    18,    -1,    21,    -1,    68,    -1,    32,
+      -1,    33,    -1
 };
 
 /* FDO_FILTER_YYRLINE[FDO_FILTER_YYN] -- source line where rule number FDO_FILTER_YYN was defined.  */
@@ -416,12 +417,12 @@
      135,   139,   140,   141,   142,   146,   149,   151,   153,   155,
      157,   159,   161,   163,   168,   169,   172,   175,   178,   181,
      184,   188,   192,   193,   194,   198,   203,   214,   215,   219,
-     229,   230,   234,   235,   239,   241,   246,   251,   252,   253,
-     257,   258,   262,   263,   267,   268,   273,   278,   282,   283,
-     284,   285,   289,   294,   298,   299,   303,   307,   312,   313,
-     314,   315,   316,   317,   318,   322,   323,   327,   328,   329,
-     330,   331,   332,   333,   334,   335,   336,   337,   341,   342,
-     343
+     225,   234,   235,   239,   240,   244,   246,   251,   256,   257,
+     258,   262,   263,   267,   268,   272,   273,   278,   283,   287,
+     288,   289,   290,   294,   299,   303,   304,   308,   312,   317,
+     318,   319,   320,   321,   322,   323,   327,   328,   332,   333,
+     334,   335,   336,   337,   338,   339,   340,   341,   342,   346,
+     347,   348
 };
 #endif
 
@@ -481,12 +482,12 @@
       61,    62,    62,    62,    62,    63,    63,    63,    63,    63,
       63,    63,    63,    63,    64,    64,    65,    66,    67,    68,
       69,    70,    71,    71,    71,    72,    73,    74,    74,    75,
-      76,    76,    77,    77,    78,    78,    79,    80,    80,    80,
-      81,    81,    82,    82,    83,    83,    84,    85,    86,    86,
-      86,    86,    87,    88,    89,    89,    90,    91,    92,    92,
-      92,    92,    92,    92,    92,    93,    93,    94,    94,    94,
-      94,    94,    94,    94,    94,    94,    94,    94,    95,    95,
-      95
+      75,    76,    76,    77,    77,    78,    78,    79,    80,    80,
+      80,    81,    81,    82,    82,    83,    83,    84,    85,    86,
+      86,    86,    86,    87,    88,    89,    89,    90,    91,    92,
+      92,    92,    92,    92,    92,    92,    93,    93,    94,    94,
+      94,    94,    94,    94,    94,    94,    94,    94,    94,    95,
+      95,    95
 };
 
 /* FDO_FILTER_YYR2[FDO_FILTER_YYN] -- Number of symbols composing right hand side of rule FDO_FILTER_YYN.  */
@@ -496,12 +497,12 @@
        1,     3,     3,     3,     3,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     4,     0,     1,     3,     4,     1,     1,     3,     5,
-       1,     1,     1,     1,     1,     2,     2,     3,     1,     1,
-       1,     1,     1,     1,     1,     3,     5,     2,     1,     1,
-       1,     1,     3,     2,     3,     3,     3,     4,     1,     1,
+       3,     1,     1,     1,     1,     1,     2,     2,     3,     1,
+       1,     1,     1,     1,     1,     1,     3,     5,     2,     1,
+       1,     1,     1,     3,     2,     3,     3,     3,     4,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1
+       1,     1
 };
 
 /* FDO_FILTER_YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -509,57 +510,57 @@
    means the default is an error.  */
 static const unsigned char fdo_filter_yydefact[] =
 {
-       0,     4,    23,    24,    25,     0,     0,    36,    44,    26,
+       0,     4,    23,    24,    25,     0,     0,    36,    45,    26,
       27,    28,    29,    30,    21,    22,     0,     0,     0,     0,
-       0,     7,    43,    15,    20,    18,    19,    17,    16,     8,
-      42,     9,     0,    37,    10,    40,    41,     6,     2,    48,
-      60,    58,    61,    49,    53,    51,    50,    59,    52,     0,
-       0,    63,     0,    46,     9,    45,     0,     0,     1,    74,
-       0,     0,     0,     0,    68,    69,    70,    71,    72,    73,
-       0,    57,     0,    75,    76,    77,    86,    78,    79,    87,
-      80,    82,    81,    83,    84,    85,    32,     0,     0,     0,
-       0,     0,     0,     0,     0,     5,    47,    11,    12,    13,
-      14,    66,     0,    33,     0,     0,    62,    38,     3,    64,
-      65,    35,     5,     0,    54,     0,     0,    31,    89,    90,
-      88,    67,    39,     0,    56,    34,    55
+       0,     7,    44,    15,    20,    18,    19,    17,    16,     8,
+      43,     9,     0,    37,    10,    41,    42,     6,     2,    49,
+      61,    59,    62,    50,    54,    52,    51,    60,    53,     0,
+       0,     0,    64,     0,    47,     9,    46,     0,     0,     1,
+      75,     0,     0,     0,     0,    69,    70,    71,    72,    73,
+      74,     0,     0,    58,     0,    76,    77,    78,    87,    79,
+      80,    88,    81,    83,    82,    84,    85,    86,    32,     0,
+       0,     0,     0,     0,     0,     0,     0,     5,    48,    11,
+      12,    13,    14,    40,    67,     0,    33,     0,     0,    63,
+      38,     3,    65,    66,    35,     5,     0,    55,     0,     0,
+      31,    90,    91,    89,    68,    39,     0,    57,    34,    56
 };
 
 /* FDO_FILTER_YYDEFGOTO[NTERM-NUM]. */
 static const fdo_filter_yysigned_char fdo_filter_yydefgoto[] =
 {
-      -1,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,   104,    30,    54,    32,    33,    34,    35,    36,
-      37,    57,    39,    40,   115,    41,    42,    43,    44,    45,
-      46,    47,    48,    70,    87,    88,   121
+      -1,    19,    51,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,   107,    30,    55,    32,    33,    34,    35,    36,
+      37,    58,    39,    40,   118,    41,    42,    43,    44,    45,
+      46,    47,    48,    72,    89,    90,   124
 };
 
 /* FDO_FILTER_YYPACT[STATE-NUM] -- Index in FDO_FILTER_YYTABLE of the portion describing
    STATE-NUM.  */
-#define FDO_FILTER_YYPACT_NINF -101
+#define FDO_FILTER_YYPACT_NINF -105
 static const short fdo_filter_yypact[] =
 {
-      27,  -101,  -101,  -101,  -101,   -49,    73,  -101,  -101,  -101,
-    -101,  -101,  -101,  -101,  -101,  -101,   148,   -19,    73,    17,
-     255,  -101,  -101,  -101,  -101,  -101,  -101,  -101,  -101,  -101,
-    -101,   192,   -27,  -101,  -101,  -101,  -101,  -101,    11,  -101,
-    -101,  -101,  -101,  -101,  -101,  -101,  -101,  -101,  -101,     3,
-      73,  -101,   148,  -101,   -17,  -101,   218,     9,  -101,  -101,
-     148,   148,   148,   148,  -101,  -101,  -101,  -101,  -101,  -101,
-     148,  -101,   -13,  -101,  -101,  -101,  -101,  -101,  -101,  -101,
-    -101,  -101,  -101,  -101,  -101,  -101,   148,   148,   148,   113,
-      73,    73,   -20,   234,   -25,   -11,  -101,     1,     1,  -101,
-    -101,   -14,   193,   -14,   -51,    95,   -14,  -101,    11,  -101,
-      39,  -101,  -101,    22,  -101,   -47,   148,  -101,  -101,  -101,
-    -101,  -101,  -101,   193,  -101,   -14,  -101
+      73,  -105,  -105,  -105,  -105,   -51,   108,  -105,  -105,  -105,
+    -105,  -105,  -105,  -105,  -105,  -105,   178,   -21,   108,    19,
+     238,  -105,  -105,  -105,  -105,  -105,  -105,  -105,  -105,  -105,
+    -105,     9,   -39,  -105,  -105,  -105,  -105,  -105,    27,  -105,
+    -105,  -105,  -105,  -105,  -105,  -105,  -105,  -105,  -105,   -10,
+     108,   250,  -105,   178,  -105,   -14,  -105,     1,    -7,  -105,
+    -105,   178,   178,   178,   178,  -105,  -105,  -105,  -105,  -105,
+    -105,    25,   178,  -105,     3,  -105,  -105,  -105,  -105,  -105,
+    -105,  -105,  -105,  -105,  -105,  -105,  -105,  -105,   178,   178,
+     178,   143,   108,   108,     7,   214,    17,    30,  -105,    39,
+      39,  -105,  -105,  -105,    29,   213,    29,   -49,    95,    29,
+    -105,    27,  -105,    61,  -105,  -105,    25,  -105,   -43,   178,
+    -105,  -105,  -105,  -105,  -105,  -105,   213,  -105,    29,  -105
 };
 
 /* FDO_FILTER_YYPGOTO[NTERM-NUM].  */
 static const fdo_filter_yysigned_char fdo_filter_yypgoto[] =
 {
-    -101,  -101,   -15,  -101,  -101,  -101,  -101,  -101,  -101,   -53,
-    -101,  -101,  -101,  -101,     0,  -101,   -36,  -100,  -101,  -101,
-    -101,     4,  -101,  -101,  -101,  -101,  -101,  -101,  -101,  -101,
-    -101,  -101,  -101,  -101,  -101,  -101,  -101
+    -105,  -105,     0,  -105,  -105,  -105,  -105,  -105,  -105,   -27,
+    -105,  -105,  -105,  -105,     2,  -105,    -8,  -104,  -105,  -105,
+    -105,     5,  -105,  -105,  -105,  -105,  -105,  -105,  -105,  -105,
+    -105,  -105,  -105,  -105,  -105,  -105,  -105
 };
 
 /* FDO_FILTER_YYTABLE[FDO_FILTER_YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -569,72 +570,70 @@
 #define FDO_FILTER_YYTABLE_NINF -1
 static const unsigned char fdo_filter_yytable[] =
 {
-      31,    53,   114,    56,    38,   116,    31,   117,    49,   123,
-      51,   124,    55,    60,    61,    62,    63,    58,    31,    90,
-      91,    90,    91,   126,    60,    61,    62,    63,     1,    89,
-       2,     3,     4,   112,    92,    93,     5,    94,   111,     6,
-      86,    62,    63,   113,   102,    97,    98,    99,   100,    90,
-      31,     7,   120,   107,     0,   101,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,     0,     0,    96,     0,    16,
-       0,   103,   105,   106,     0,     0,     2,     3,     4,     0,
-      17,     0,     5,     0,    18,     6,     0,     0,     0,    31,
-      31,    31,     0,   108,   109,   110,     0,     0,     0,     0,
-       0,   125,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,     0,     0,   122,     0,    16,     2,     3,     4,     0,
-       0,     0,     5,     0,     0,     6,    17,   118,   119,    12,
-      50,     0,     0,    60,    61,    62,    63,     0,     0,     0,
+      20,   117,    31,    92,    93,    38,    49,   119,    31,   120,
+      56,    52,    73,   126,    60,   127,    54,    91,    57,    59,
+      31,    94,   129,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    92,    93,    61,
+      62,    63,    64,    88,    65,    66,    67,    68,    69,    70,
+      95,    98,    31,    96,     7,    61,    62,    63,    64,    97,
+     105,    99,   100,   101,   102,   114,    88,    61,    62,    63,
+      64,    92,   104,   103,     1,   115,     2,     3,     4,    63,
+      64,   123,     5,   110,   116,     6,     0,     0,   106,   108,
+     109,    20,     0,    31,    31,    31,   111,   112,   113,     0,
        0,     0,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,     2,     3,     4,     0,    16,     0,     5,   125,   128,
+       6,     0,     0,     0,     0,     0,    17,   121,   122,    12,
+      18,     0,     0,    61,    62,    63,    64,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,     2,     3,     4,     0,
+      16,     0,     5,     0,     0,     6,     0,     0,     0,     0,
+       0,    17,     0,     0,     0,    50,     0,     0,     0,     0,
+       0,     0,     7,     8,     9,    10,    11,    12,    13,    14,
       15,     2,     3,     4,     0,    16,     0,     5,     0,     0,
        0,     0,     0,     0,     0,     0,    17,     0,     0,     0,
       18,     0,     0,     0,     0,     0,     0,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,     0,     0,     0,     0,
-      16,     0,     0,     0,     0,    71,     2,     3,     4,     0,
-       0,    17,     5,     0,     0,    52,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      10,    11,    12,    13,    14,    15,     2,     3,     4,     0,
+      16,     0,     5,     0,     0,     0,     0,    60,     0,     0,
+       0,    17,     0,     0,     0,    53,     0,     0,     0,     0,
        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
-      15,    59,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    17,    59,     0,    86,
-       0,     0,     0,     0,     0,     0,    60,    61,    62,    63,
-       0,    64,    65,    66,    67,    68,    69,     0,    59,     0,
-       0,     0,    60,    61,    62,    63,    95,    64,    65,    66,
-      67,    68,    69,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   112,    60,    61,    62,    63,     0,    64,    65,
-      66,    67,    68,    69
+      15,    60,    61,    62,    63,    64,     0,    65,    66,    67,
+      68,    69,    70,    60,     0,     0,    17,     0,     0,     0,
+       0,     0,   115,     0,     0,     0,    61,    62,    63,    64,
+       0,    65,    66,    67,    68,    69,    70,     0,    61,    62,
+      63,    64,    71,    65,    66,    67,    68,    69,    70
 };
 
 static const fdo_filter_yysigned_char fdo_filter_yycheck[] =
 {
-       0,    16,   102,    18,     0,    56,     6,    58,    57,    56,
-       6,    58,    31,    38,    39,    40,    41,     0,    18,    10,
-      11,    10,    11,   123,    38,    39,    40,    41,     1,    56,
-       3,     4,     5,    58,    31,    50,     9,    52,    58,    12,
-      57,    40,    41,    54,    57,    60,    61,    62,    63,    10,
-      50,    29,   105,    89,    -1,    70,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    -1,    -1,    58,    -1,    42,
-      -1,    86,    87,    88,    -1,    -1,     3,     4,     5,    -1,
-      53,    -1,     9,    -1,    57,    12,    -1,    -1,    -1,    89,
-      90,    91,    -1,    89,    90,    91,    -1,    -1,    -1,    -1,
-      -1,   116,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    -1,    -1,   113,    -1,    42,     3,     4,     5,    -1,
-      -1,    -1,     9,    -1,    -1,    12,    53,    32,    33,    34,
-      57,    -1,    -1,    38,    39,    40,    41,    -1,    -1,    -1,
+       0,   105,     0,    10,    11,     0,    57,    56,     6,    58,
+      31,     6,     3,    56,    13,    58,    16,    56,    18,     0,
+      18,    31,   126,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    10,    11,    38,
+      39,    40,    41,    57,    43,    44,    45,    46,    47,    48,
+      50,    58,    50,    53,    29,    38,    39,    40,    41,    58,
+      57,    61,    62,    63,    64,    58,    57,    38,    39,    40,
+      41,    10,    72,    71,     1,    58,     3,     4,     5,    40,
+      41,   108,     9,    91,    54,    12,    -1,    -1,    88,    89,
+      90,    91,    -1,    91,    92,    93,    91,    92,    93,    -1,
       -1,    -1,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,     3,     4,     5,    -1,    42,    -1,     9,   116,   119,
+      12,    -1,    -1,    -1,    -1,    -1,    53,    32,    33,    34,
+      57,    -1,    -1,    38,    39,    40,    41,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,     3,     4,     5,    -1,
+      42,    -1,     9,    -1,    -1,    12,    -1,    -1,    -1,    -1,
+      -1,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    -1,
+      -1,    -1,    29,    30,    31,    32,    33,    34,    35,    36,
       37,     3,     4,     5,    -1,    42,    -1,     9,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,
       57,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    -1,    -1,    -1,    -1,
-      42,    -1,    -1,    -1,    -1,     3,     3,     4,     5,    -1,
-      -1,    53,     9,    -1,    -1,    57,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      32,    33,    34,    35,    36,    37,     3,     4,     5,    -1,
+      42,    -1,     9,    -1,    -1,    -1,    -1,    13,    -1,    -1,
+      -1,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
-      37,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    53,    13,    -1,    57,
-      -1,    -1,    -1,    -1,    -1,    -1,    38,    39,    40,    41,
-      -1,    43,    44,    45,    46,    47,    48,    -1,    13,    -1,
-      -1,    -1,    38,    39,    40,    41,    58,    43,    44,    45,
-      46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    58,    38,    39,    40,    41,    -1,    43,    44,
-      45,    46,    47,    48
+      37,    13,    38,    39,    40,    41,    -1,    43,    44,    45,
+      46,    47,    48,    13,    -1,    -1,    53,    -1,    -1,    -1,
+      -1,    -1,    58,    -1,    -1,    -1,    38,    39,    40,    41,
+      -1,    43,    44,    45,    46,    47,    48,    -1,    38,    39,
+      40,    41,    54,    43,    44,    45,    46,    47,    48
 };
 
 /* FDO_FILTER_YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -646,14 +645,14 @@
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
       82,    84,    85,    86,    87,    88,    89,    90,    91,    57,
-      57,    80,    57,    61,    73,    31,    61,    80,     0,    13,
-      38,    39,    40,    41,    43,    44,    45,    46,    47,    48,
-      92,     3,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    57,    93,    94,    56,
-      10,    11,    31,    61,    61,    58,    58,    61,    61,    61,
-      61,    61,    57,    61,    71,    61,    61,    75,    80,    80,
-      80,    58,    58,    54,    76,    83,    56,    58,    32,    33,
-      68,    95,    73,    56,    58,    61,    76
+      57,    61,    80,    57,    61,    73,    31,    61,    80,     0,
+      13,    38,    39,    40,    41,    43,    44,    45,    46,    47,
+      48,    54,    92,     3,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    57,    93,
+      94,    56,    10,    11,    31,    61,    61,    58,    58,    61,
+      61,    61,    61,    73,    61,    57,    61,    71,    61,    61,
+      75,    80,    80,    80,    58,    58,    54,    76,    83,    56,
+      58,    32,    33,    68,    95,    73,    56,    58,    61,    76
 };
 
 #if ! defined (FDO_FILTER_YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -1300,22 +1299,22 @@
 
   case 11:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Add, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Add", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Add, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
     break;
 
   case 12:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Subtract, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Subtract", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Subtract, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
     break;
 
   case 13:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Multiply, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Multiply", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Multiply, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
     break;
 
   case 14:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Divide, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Divide", FdoBinaryExpression::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryOperations_Divide, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
     break;
 
   case 15:
@@ -1400,7 +1399,7 @@
 
   case 31:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)pParse->fdo_filter_yyvsp[-3].m_node)->GetName(), (FdoExpressionCollection*)pParse->fdo_filter_yyvsp[-1].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-3].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-1].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"ExpressionCollection", FdoFunction::Create(((FdoIdentifier*)pParse->fdo_filter_yyvsp[-3].m_node)->GetName(), (FdoExpressionCollection*)pParse->fdo_filter_yyvsp[-1].m_node));}
     break;
 
   case 32:
@@ -1410,12 +1409,12 @@
 
   case 33:
 
-    {pParse->fdo_filter_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"Expression Arg 1,");FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node); }
+    {pParse->fdo_filter_yyval.m_node=pParse->AddNodeToDelete(FdoExpressionCollection::Create()); ((FdoExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"Expression Arg 1,");}
     break;
 
   case 34:
 
-    {((FdoExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"Expression Arg N,");FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node); }
+    {((FdoExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"Expression Arg N,");}
     break;
 
   case 35:
@@ -1426,12 +1425,12 @@
   case 36:
 
     {
-						    FdoComputedIdentifier* id = pParse->FindComputedIdentifier( pParse->fdo_filter_yyvsp[0].m_string );
-						    if( id == NULL )
-						        pParse->fdo_filter_yyval.m_node = Node_Add(L"IDENTIFIER", FdoIdentifier::Create(pParse->fdo_filter_yyvsp[0].m_string));
-						    else
-						        pParse->fdo_filter_yyval.m_node = id;
-						}
+		    FdoComputedIdentifier* id = pParse->FindComputedIdentifier( pParse->fdo_filter_yyvsp[0].m_string );
+		    if( id == NULL )
+		        pParse->fdo_filter_yyval.m_node = Node_Add(L"IDENTIFIER", FdoIdentifier::Create(pParse->fdo_filter_yyvsp[0].m_string));
+		    else
+		        pParse->fdo_filter_yyval.m_node = id;
+		}
     break;
 
   case 37:
@@ -1447,265 +1446,273 @@
   case 39:
 
     {
-                        FdoComputedIdentifier* id = FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_filter_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_filter_yyvsp[-3].m_node);
-                        Node_Add(L"ComputedIdentifier", id);
-                        pParse->AddCompIdentifier(id);FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-3].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);
-                        id->Release();
-                    }
+            FdoComputedIdentifier* id = FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_filter_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_filter_yyvsp[-3].m_node);
+            Node_Add(L"ComputedIdentifier", id);
+            pParse->AddCompIdentifier(id);
+        }
     break;
 
   case 40:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"LiteralValue", pParse->fdo_filter_yyvsp[0].m_node);}
+    {
+            FdoComputedIdentifier* id = FdoComputedIdentifier::Create(((FdoIdentifier*)pParse->fdo_filter_yyvsp[0].m_node)->GetName(), (FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node);
+            Node_Add(L"ComputedIdentifier", id);
+            pParse->AddCompIdentifier(id);
+        }
     break;
 
   case 41:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"Parameter", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"LiteralValue", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 42:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"GeometryValue", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"Parameter", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 43:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"DataValue", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"GeometryValue", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 44:
 
-    {pParse->fdo_filter_yyval.m_node = Node_Add(L"PARAMETER", FdoParameter::Create(pParse->fdo_filter_yyvsp[0].m_string));}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"DataValue", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 45:
 
-    {pParse->fdo_filter_yyval.m_node = Node_Add(L":Parameter", FdoParameter::Create(pParse->fdo_filter_yyvsp[0].m_string));}
+    {pParse->fdo_filter_yyval.m_node = Node_Add(L"PARAMETER", FdoParameter::Create(pParse->fdo_filter_yyvsp[0].m_string));}
     break;
 
   case 46:
 
-    {pParse->fdo_filter_yyval.m_node = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node = Node_Add(L":Parameter", FdoParameter::Create(pParse->fdo_filter_yyvsp[0].m_string));}
     break;
 
   case 47:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"(Filter)", pParse->fdo_filter_yyvsp[-1].m_node);}
+    {pParse->fdo_filter_yyval.m_node = Node_Add(L"UnaryExpression", FdoUnaryExpression::Create(FdoUnaryOperations_Negate, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
     break;
 
   case 48:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"LogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"(Filter)", pParse->fdo_filter_yyvsp[-1].m_node);}
     break;
 
   case 49:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"SearchCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"LogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 50:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"BinaryLogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"SearchCondition", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 51:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"UnaryLogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"BinaryLogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 52:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"DistanceCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"UnaryLogicalOperator", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 53:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"SpatialCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"DistanceCondition", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 54:
 
-    {pParse->fdo_filter_yyval.m_node=pParse->AddNodeToDelete(FdoValueExpressionCollection::Create()); ((FdoValueExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoValueExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"ValueExpression 1");FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node); }
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"SpatialCondition", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 55:
 
-    {((FdoValueExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoValueExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"ValueExpression n");FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node); }
+    {pParse->fdo_filter_yyval.m_node=pParse->AddNodeToDelete(FdoValueExpressionCollection::Create()); ((FdoValueExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoValueExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"ValueExpression 1");}
     break;
 
   case 56:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"ValueExpressionCollection", FdoInCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-4].m_node, (FdoValueExpressionCollection*)pParse->fdo_filter_yyvsp[-1].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-4].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-1].m_node);}
+    {((FdoValueExpressionCollection*)pParse->fdo_filter_yyval.m_node)->Add((FdoValueExpression*)pParse->fdo_filter_yyvsp[0].m_node); Node_Trace(L"ValueExpression n");}
     break;
 
   case 57:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"NULL", FdoNullCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-1].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-1].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"ValueExpressionCollection", FdoInCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-4].m_node, (FdoValueExpressionCollection*)pParse->fdo_filter_yyvsp[-1].m_node));}
     break;
 
   case 58:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"InCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"NULL", FdoNullCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-1].m_node));}
     break;
 
   case 59:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"ComparisonCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"InCondition", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 60:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"GeometricCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"ComparisonCondition", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 61:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"NullCondition", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"GeometricCondition", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 62:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Id-SpatialOp-Expression", FdoSpatialCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-2].m_node, (FdoSpatialOperations)pParse->fdo_filter_yyvsp[-1].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"NullCondition", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 63:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"NOT", FdoUnaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node, FdoUnaryLogicalOperations_Not));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Id-SpatialOp-Expression", FdoSpatialCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-2].m_node, (FdoSpatialOperations)pParse->fdo_filter_yyvsp[-1].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
     break;
 
   case 64:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"AND", FdoBinaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryLogicalOperations_And, (FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"NOT", FdoUnaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node, FdoUnaryLogicalOperations_Not));}
     break;
 
   case 65:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"OR", FdoBinaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryLogicalOperations_Or, (FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"AND", FdoBinaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryLogicalOperations_And, (FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node));}
     break;
 
   case 66:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"ComparisonOperations", FdoComparisonCondition::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, (FdoComparisonOperations)pParse->fdo_filter_yyvsp[-1].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-2].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"OR", FdoBinaryLogicalOperator::Create((FdoFilter*)pParse->fdo_filter_yyvsp[-2].m_node, FdoBinaryLogicalOperations_Or, (FdoFilter*)pParse->fdo_filter_yyvsp[0].m_node));}
     break;
 
   case 67:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Indentifier-DistanceOp-Expression", FdoDistanceCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-3].m_node, (FdoDistanceOperations)pParse->fdo_filter_yyvsp[-2].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[-1].m_node, ((FdoDoubleValue*)pParse->fdo_filter_yyvsp[0].m_node)->GetDouble()));FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-3].m_node); FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[-1].m_node);FDO_SAFE_RELEASE(pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"ComparisonOperations", FdoComparisonCondition::Create((FdoExpression*)pParse->fdo_filter_yyvsp[-2].m_node, (FdoComparisonOperations)pParse->fdo_filter_yyvsp[-1].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[0].m_node));}
     break;
 
   case 68:
 
-    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_EqualTo; Node_Trace(L"EQ");}
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"Indentifier-DistanceOp-Expression", FdoDistanceCondition::Create((FdoIdentifier*)pParse->fdo_filter_yyvsp[-3].m_node, (FdoDistanceOperations)pParse->fdo_filter_yyvsp[-2].m_id, (FdoExpression*)pParse->fdo_filter_yyvsp[-1].m_node, ((FdoDoubleValue*)pParse->fdo_filter_yyvsp[0].m_node)->GetDouble()));}
     break;
 
   case 69:
 
-    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_NotEqualTo; Node_Trace(L"NE");}
+    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_EqualTo; Node_Trace(L"EQ");}
     break;
 
   case 70:
 
-    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_GreaterThan; Node_Trace(L"GT");}
+    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_NotEqualTo; Node_Trace(L"NE");}
     break;
 
   case 71:
 
-    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_GreaterThanOrEqualTo; Node_Trace(L"GE");}
+    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_GreaterThan; Node_Trace(L"GT");}
     break;
 
   case 72:
 
-    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_LessThan; Node_Trace(L"LT");}
+    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_GreaterThanOrEqualTo; Node_Trace(L"GE");}
     break;
 
   case 73:
 
-    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_LessThanOrEqualTo; Node_Trace(L"LE");}
+    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_LessThan; Node_Trace(L"LT");}
     break;
 
   case 74:
 
-    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_Like; Node_Trace(L"LIKE");}
+    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_LessThanOrEqualTo; Node_Trace(L"LE");}
     break;
 
   case 75:
 
-    {pParse->fdo_filter_yyval.m_id=FdoDistanceOperations_Beyond; Node_Trace(L"BEYOND");}
+    {pParse->fdo_filter_yyval.m_id=FdoComparisonOperations_Like; Node_Trace(L"LIKE");}
     break;
 
   case 76:
 
-    {pParse->fdo_filter_yyval.m_id=FdoDistanceOperations_Within; Node_Trace(L"WITHINDISTANCE");}
+    {pParse->fdo_filter_yyval.m_id=FdoDistanceOperations_Beyond; Node_Trace(L"BEYOND");}
     break;
 
   case 77:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Contains; Node_Trace(L"CONTAINS");}
+    {pParse->fdo_filter_yyval.m_id=FdoDistanceOperations_Within; Node_Trace(L"WITHINDISTANCE");}
     break;
 
   case 78:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Crosses; Node_Trace(L"CROSSES");}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Contains; Node_Trace(L"CONTAINS");}
     break;
 
   case 79:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Disjoint; Node_Trace(L"DISJOINT");}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Crosses; Node_Trace(L"CROSSES");}
     break;
 
   case 80:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Equals; Node_Trace(L"EQUALS");}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Disjoint; Node_Trace(L"DISJOINT");}
     break;
 
   case 81:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Inside; Node_Trace(L"INSIDE");}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Equals; Node_Trace(L"EQUALS");}
     break;
 
   case 82:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Intersects; Node_Trace(L"INTERSECTS");}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Inside; Node_Trace(L"INSIDE");}
     break;
 
   case 83:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Overlaps; Node_Trace(L"OVERLAPS");}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Intersects; Node_Trace(L"INTERSECTS");}
     break;
 
   case 84:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Touches; Node_Trace(L"TOUCHES");}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Overlaps; Node_Trace(L"OVERLAPS");}
     break;
 
   case 85:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Within; Node_Trace(L"WITHIN");}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Touches; Node_Trace(L"TOUCHES");}
     break;
 
   case 86:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_CoveredBy; Node_Trace(L"COVEREDBY");}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_Within; Node_Trace(L"WITHIN");}
     break;
 
   case 87:
 
-    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_EnvelopeIntersects; Node_Trace(L"ENVELOPEINTERSECTS");}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_CoveredBy; Node_Trace(L"COVEREDBY");}
     break;
 
   case 88:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"double", pParse->fdo_filter_yyvsp[0].m_node);}
+    {pParse->fdo_filter_yyval.m_id=FdoSpatialOperations_EnvelopeIntersects; Node_Trace(L"ENVELOPEINTERSECTS");}
     break;
 
   case 89:
 
-    {pParse->fdo_filter_yyval.m_node=Node_Add(L"INTEGER", FdoDoubleValue::Create((double)pParse->fdo_filter_yyvsp[0].m_integer));}
+    {pParse->fdo_filter_yyval.m_node=Node_Copy(L"double", pParse->fdo_filter_yyvsp[0].m_node);}
     break;
 
   case 90:
 
+    {pParse->fdo_filter_yyval.m_node=Node_Add(L"INTEGER", FdoDoubleValue::Create((double)pParse->fdo_filter_yyvsp[0].m_integer));}
+    break;
+
+  case 91:
+
     {pParse->fdo_filter_yyval.m_node=Node_Add(L"INT64", FdoDoubleValue::Create((double)pParse->fdo_filter_yyvsp[0].m_int64));}
     break;
 



More information about the fdo-commits mailing list