Index: XIOS/trunk/src/parse_expr/lex_parser.cpp
===================================================================
--- XIOS/trunk/src/parse_expr/lex_parser.cpp	(revision 727)
+++ XIOS/trunk/src/parse_expr/lex_parser.cpp	(revision 728)
@@ -383,12 +383,12 @@
         7,    8,    9,   10,    4,   11,    4,   12,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,    4,    4,
-        4,    4,    4,    4,   14,   15,   15,   15,   15,   15,
-
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,    4,    4,    4,   16,    4,    4,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,    4,    4,    4,    4,    4
+       14,   15,   16,    4,   17,   18,   18,   18,   18,   18,
+
+       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
+       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
+       18,    4,    4,    4,   19,    4,    4,   18,   18,   18,
+       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
+       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
+       18,   18,   18,    4,    4,    4,    4,    4
     },
 
@@ -401,11 +401,11 @@
         7,    8,    9,   10,    4,   11,    4,   12,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,    4,    4,
-        4,    4,    4,    4,   14,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,    4,    4,    4,   16,    4,    4,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,    4,    4,    4,    4,    4
+       14,   15,   16,    4,   17,   18,   18,   18,   18,   18,
+       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
+       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
+       18,    4,    4,    4,   19,    4,    4,   18,   18,   18,
+       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
+       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
+       18,   18,   18,    4,    4,    4,    4,    4
     },
 
@@ -446,8 +446,8 @@
 
     {
-        3,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   18,
+        3,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   21,
        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   18,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
+       -5,   -5,   21,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
        -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
 
@@ -470,12 +470,12 @@
        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
        -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   -6,   -6,   -6,   -6,   -6,   -6,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-
-       19,   19,   19,   -6,   -6,   -6,   -6,   -6
+       -6,   -6,   -6,   -6,   -6,   22,   22,   22,   22,   22,
+       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
+       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
+       22,   -6,   -6,   -6,   -6,   -6,   -6,   22,   22,   22,
+       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
+       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
+
+       22,   22,   22,   -6,   -6,   -6,   -6,   -6
     },
 
@@ -589,11 +589,11 @@
       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,   20,  -13,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,  -13,  -13,
-      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,   22,
+      -13,  -13,  -13,  -13,  -13,  -13,   23,  -13,   24,   24,
+       24,   24,   24,   24,   24,   24,   24,   24,  -13,  -13,
+      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,   25,
       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
-      -13,   22,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
+      -13,   25,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
 
       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
@@ -608,12 +608,12 @@
       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
-      -14,  -14,  -14,  -14,  -14,   23,   23,   23,   23,   23,
-       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
-
-       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
-       23,  -14,  -14,  -14,  -14,  -14,  -14,   23,   23,   23,
-       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
-       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
-       23,   23,   23,  -14,  -14,  -14,  -14,  -14
+      -14,   26,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+
+      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
+      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14
     },
 
@@ -623,14 +623,14 @@
       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,   24,   24,
-
-       24,   24,   24,   24,   24,   24,   24,   24,  -15,  -15,
-      -15,  -15,  -15,  -15,  -15,   24,   24,   24,   24,   24,
-       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-       24,  -15,  -15,  -15,  -15,   24,  -15,   24,   24,   24,
-       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-       24,   24,   24,  -15,  -15,  -15,  -15,  -15
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,   27,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15
     },
 
@@ -643,5 +643,5 @@
       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
-      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,   28,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
@@ -660,29 +660,29 @@
       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
-      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
-      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
-      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
-
-      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
-      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
-      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
-      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17
-    },
-
-    {
-        3,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,   18,
-      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-      -18,  -18,   18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-
+      -17,  -17,  -17,  -17,  -17,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
+
+       29,  -17,  -17,  -17,  -17,  -17,  -17,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
+       29,   29,   29,  -17,  -17,  -17,  -17,  -17
+    },
+
+    {
+        3,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,  -18,  -18,
+
+      -18,  -18,  -18,  -18,  -18,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,  -18,  -18,  -18,  -18,   30,  -18,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,  -18,  -18,  -18,  -18,  -18
     },
 
@@ -693,13 +693,13 @@
 
       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
-      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,  -19,  -19,
-      -19,  -19,  -19,  -19,  -19,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,  -19,  -19,  -19,  -19,   25,  -19,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,  -19,  -19,  -19,  -19,  -19
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19
 
     },
@@ -710,10 +710,10 @@
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
-      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,   26,   26,
-       26,   26,   26,   26,   26,   26,   26,   26,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
 
       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
@@ -723,16 +723,16 @@
 
     {
-        3,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+        3,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,   21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,   21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
-      -21,  -21,  -21,  -21,  -21,  -21,   20,  -21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,  -21,  -21,
-      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,   22,
 
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
-      -21,   22,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21
@@ -745,13 +745,13 @@
       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
 
-      -22,  -22,  -22,   27,  -22,   27,  -22,  -22,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,  -22,  -22,
-      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
-      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
-      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
-      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
-      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
-      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
-      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,  -22,  -22,  -22,  -22,   31,  -22,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,  -22,  -22,  -22,  -22,  -22
     },
 
@@ -762,14 +762,14 @@
       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,  -23,  -23,
-      -23,  -23,  -23,  -23,  -23,   29,   29,   29,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
-       29,  -23,  -23,  -23,  -23,   29,  -23,   29,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
-
-       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
-       29,   29,   29,  -23,  -23,  -23,  -23,  -23
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23
     },
 
@@ -779,14 +779,14 @@
       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
-      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,   24,   24,
+      -24,  -24,  -24,  -24,  -24,  -24,   23,  -24,   24,   24,
        24,   24,   24,   24,   24,   24,   24,   24,  -24,  -24,
-      -24,  -24,  -24,  -24,  -24,   24,   24,   24,   24,   24,
-       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-
-       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-       24,  -24,  -24,  -24,  -24,   24,  -24,   24,   24,   24,
-       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-       24,   24,   24,  -24,  -24,  -24,  -24,  -24
+      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,   25,
+      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+
+      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+      -24,   25,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24
     },
 
@@ -796,14 +796,14 @@
       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
-      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,   25,   25,
-
-       25,   25,   25,   25,   25,   25,   25,   25,  -25,  -25,
-      -25,  -25,  -25,  -25,  -25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,  -25,  -25,  -25,  -25,   25,  -25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,  -25,  -25,  -25,  -25,  -25
+      -25,  -25,  -25,   33,  -25,   33,  -25,  -25,   34,   34,
+
+       34,   34,   34,   34,   34,   34,   34,   34,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25
     },
 
@@ -812,13 +812,13 @@
       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
 
-      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
-      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
-      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,   26,   26,
-       26,   26,   26,   26,   26,   26,   26,   26,  -26,  -26,
-      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,   22,
       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
-      -26,   22,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
 
@@ -831,6 +831,6 @@
       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
-      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
@@ -848,6 +848,6 @@
       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
-      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
 
       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
@@ -866,14 +866,117 @@
 
       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
-      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,  -29,  -29,
-      -29,  -29,  -29,  -29,  -29,   29,   29,   29,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
-       29,  -29,  -29,  -29,  -29,   29,  -29,   29,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
-       29,   29,   29,  -29,  -29,  -29,  -29,  -29
-
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,  -29,  -29,  -29,  -29,   35,  -29,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,  -29,  -29,  -29,  -29,  -29
+
+    },
+
+    {
+        3,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,  -30,  -30,  -30,  -30,   30,  -30,   30,   30,   30,
+
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,  -30,  -30,  -30,  -30,  -30
+    },
+
+    {
+        3,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,   31,   31,   31,   31,   31,
+
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,  -31,  -31,  -31,  -31,   31,  -31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,  -31,  -31,  -31,  -31,  -31
+    },
+
+    {
+        3,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,   25,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,   25,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32
+    },
+
+    {
+        3,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33
+    },
+
+    {
+        3,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34
+    },
+
+    {
+        3,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,   35,   35,
+
+       35,   35,   35,   35,   35,   35,   35,   35,  -35,  -35,
+      -35,  -35,  -35,  -35,  -35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,  -35,  -35,  -35,  -35,   35,  -35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,  -35,  -35,  -35,  -35,  -35
     },
 
@@ -895,6 +998,6 @@
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 14
-#define YY_END_OF_BUFFER 15
+#define YY_NUM_RULES 19
+#define YY_END_OF_BUFFER 20
 /* This struct is not used in this scanner,
    but its presence is necessary. */
@@ -904,9 +1007,10 @@
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[30] =
+static yyconst flex_int16_t yy_accept[36] =
     {   0,
-        0,    0,   15,   14,    1,   14,   11,   12,    8,    6,
-        7,    9,    2,   14,    5,   10,   13,    1,    4,    0,
-        2,    0,    3,    5,    4,    2,    0,    2,    3
+        0,    0,   20,   19,    1,   19,   16,   17,    8,    6,
+        7,    9,    2,   12,   19,   13,   19,    5,   10,   18,
+        1,    4,    0,    2,    0,   14,   11,   15,    3,    5,
+        4,    2,    0,    2,    3
     } ;
 
@@ -914,9 +1018,10 @@
 static char *yy_last_accepting_cpos;
 
-static yyconst yy_state_type yy_NUL_trans[30] =
+static yyconst yy_state_type yy_NUL_trans[36] =
     {   0,
-       17,   17,    0,    0,    0,    0,    0,    0,    0,    0,
+       20,   20,    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
     } ;
 
@@ -948,5 +1053,5 @@
 #include "yacc_parser.hpp"
 
-#line 951 "lex_parser.cpp"
+#line 1056 "lex_parser.cpp"
 
 #define INITIAL 0
@@ -1149,5 +1254,5 @@
 
 
-#line 1152 "lex_parser.cpp"
+#line 1257 "lex_parser.cpp"
 
 	while ( 1 )		/* loops until end-of-file is reached */
@@ -1259,22 +1364,47 @@
 YY_RULE_SETUP
 #line 62 "lex_parser.lex"
-return LEFT_PARENTHESIS;
+return EQ;
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
 #line 63 "lex_parser.lex"
-return RIGHT_PARENTHESIS;
+return LT;
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 65 "lex_parser.lex"
-return END;
+#line 64 "lex_parser.lex"
+return GT;
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
+#line 65 "lex_parser.lex"
+return LE;
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
 #line 66 "lex_parser.lex"
+return GE;
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 68 "lex_parser.lex"
+return LEFT_PARENTHESIS;
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 69 "lex_parser.lex"
+return RIGHT_PARENTHESIS;
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 71 "lex_parser.lex"
+return END;
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 72 "lex_parser.lex"
 ECHO;
 	YY_BREAK
-#line 1279 "lex_parser.cpp"
+#line 1409 "lex_parser.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
@@ -2266,3 +2396,3 @@
 #define YYTABLES_NAME "yytables"
 
-#line 65 "lex_parser.lex"
+#line 71 "lex_parser.lex"
Index: XIOS/trunk/src/parse_expr/lex_parser.lex
===================================================================
--- XIOS/trunk/src/parse_expr/lex_parser.lex	(revision 727)
+++ XIOS/trunk/src/parse_expr/lex_parser.lex	(revision 728)
@@ -60,4 +60,10 @@
 "^"  return POWER;
 
+"==" return EQ;
+"<"  return LT;
+">"  return GT;
+"<=" return LE;
+">=" return GE;
+
 "("  return LEFT_PARENTHESIS;
 ")"  return RIGHT_PARENTHESIS;
Index: XIOS/trunk/src/parse_expr/operator_expr.hpp
===================================================================
--- XIOS/trunk/src/parse_expr/operator_expr.hpp	(revision 727)
+++ XIOS/trunk/src/parse_expr/operator_expr.hpp	(revision 728)
@@ -8,5 +8,5 @@
 #include "array_new.hpp"
 
-using namespace std ;
+using namespace std;
 
 namespace xios
@@ -14,157 +14,194 @@
   class COperatorExpr
   {
-    public: 
-    typedef double (*functionScalar)(double) ;
-    typedef double (*functionScalarScalar)(double, double) ;
-    typedef CArray<double,1> (*functionField)(const CArray<double,1>&) ;
-    typedef CArray<double,1> (*functionFieldField)(const CArray<double,1>&, const CArray<double,1>&) ;
-    typedef CArray<double,1> (*functionFieldScalar)(const CArray<double,1>&, double) ;
-    typedef CArray<double,1> (*functionScalarField)(double, const CArray<double,1>&) ;
-    
+    public:
+    typedef double (*functionScalar)(double);
+    typedef double (*functionScalarScalar)(double, double);
+    typedef CArray<double,1> (*functionField)(const CArray<double,1>&);
+    typedef CArray<double,1> (*functionFieldField)(const CArray<double,1>&, const CArray<double,1>&);
+    typedef CArray<double,1> (*functionFieldScalar)(const CArray<double,1>&, double);
+    typedef CArray<double,1> (*functionScalarField)(double, const CArray<double,1>&);
+
     COperatorExpr(void)
     {
-      opScalar[string("neg")]=neg_s ;
-      opScalar[string("cos")]=cos_s ;
-      opScalar[string("sin")]=sin_s ;
-      opScalar[string("tan")]=tan_s ;
-      opScalar[string("exp")]=exp_s ;
-      opScalar[string("log")]=log_s ;
-      opScalar[string("log10")]=log10_s ;
-      opScalar[string("sqrt")]=sqrt_s ;
- 
-      opScalarScalar[string("add")]=add_ss ;
-      opScalarScalar[string("minus")]=minus_ss ;
-      opScalarScalar[string("mult")]=mult_ss ;
-      opScalarScalar[string("div")]=div_ss ;
-      opScalarScalar[string("pow")]=pow_ss ;
-
-      opField[string("neg")]=neg_f ;
-      opField[string("cos")]=cos_f ;
-      opField[string("sin")]=sin_f ;
-      opField[string("tan")]=tan_f ;
-      opField[string("exp")]=exp_f ;
-      opField[string("log")]=log_f ;
-      opField[string("log10")]=log10_f ;
-      opField[string("sqrt")]=sqrt_f ;
- 
-      opFieldField[string("add")]=add_ff ;
-      opFieldField[string("minus")]=minus_ff ;
-      opFieldField[string("mult")]=mult_ff ;
-      opFieldField[string("div")]=div_ff ;
-      opFieldField[string("pow")]=pow_ff ;
-
-      opFieldScalar[string("add")]=add_fs ;
-      opFieldScalar[string("minus")]=minus_fs ;
-      opFieldScalar[string("mult")]=mult_fs ;
-      opFieldScalar[string("div")]=div_fs ;
-      opFieldScalar[string("pow")]=pow_fs ;
-      
-      opScalarField[string("add")]=add_sf ;
-      opScalarField[string("minus")]=minus_sf ;
-      opScalarField[string("mult")]=mult_sf ;
-      opScalarField[string("div")]=div_sf ;
-    }    
+      opScalar[string("neg")] = neg_s;
+      opScalar[string("cos")] = cos_s;
+      opScalar[string("sin")] = sin_s;
+      opScalar[string("tan")] = tan_s;
+      opScalar[string("exp")] = exp_s;
+      opScalar[string("log")] = log_s;
+      opScalar[string("log10")] = log10_s;
+      opScalar[string("sqrt")] = sqrt_s;
+
+      opScalarScalar[string("add")] = add_ss;
+      opScalarScalar[string("minus")] = minus_ss;
+      opScalarScalar[string("mult")] = mult_ss;
+      opScalarScalar[string("div")] = div_ss;
+      opScalarScalar[string("pow")] = pow_ss;
+      opScalarScalar[string("eq")] = eq_ss;
+      opScalarScalar[string("lt")] = lt_ss;
+      opScalarScalar[string("gt")] = gt_ss;
+      opScalarScalar[string("le")] = le_ss;
+      opScalarScalar[string("ge")] = ge_ss;
+
+      opField[string("neg")] = neg_f;
+      opField[string("cos")] = cos_f;
+      opField[string("sin")] = sin_f;
+      opField[string("tan")] = tan_f;
+      opField[string("exp")] = exp_f;
+      opField[string("log")] = log_f;
+      opField[string("log10")] = log10_f;
+      opField[string("sqrt")] = sqrt_f;
+
+      opFieldField[string("add")] = add_ff;
+      opFieldField[string("minus")] = minus_ff;
+      opFieldField[string("mult")] = mult_ff;
+      opFieldField[string("div")] = div_ff;
+      opFieldField[string("pow")] = pow_ff;
+      opFieldField[string("eq")] = eq_ff;
+      opFieldField[string("lt")] = lt_ff;
+      opFieldField[string("gt")] = gt_ff;
+      opFieldField[string("le")] = le_ff;
+      opFieldField[string("ge")] = ge_ff;
+
+      opFieldScalar[string("add")] = add_fs;
+      opFieldScalar[string("minus")] = minus_fs;
+      opFieldScalar[string("mult")] = mult_fs;
+      opFieldScalar[string("div")] = div_fs;
+      opFieldScalar[string("pow")] = pow_fs;
+      opFieldScalar[string("eq")] = eq_fs;
+      opFieldScalar[string("lt")] = lt_fs;
+      opFieldScalar[string("gt")] = gt_fs;
+      opFieldScalar[string("le")] = le_fs;
+      opFieldScalar[string("ge")] = ge_fs;
+
+      opScalarField[string("add")] = add_sf;
+      opScalarField[string("minus")] = minus_sf;
+      opScalarField[string("mult")] = mult_sf;
+      opScalarField[string("div")] = div_sf;
+      opScalarField[string("eq")] = eq_sf;
+      opScalarField[string("lt")] = lt_sf;
+      opScalarField[string("gt")] = gt_sf;
+      opScalarField[string("le")] = le_sf;
+      opScalarField[string("ge")] = ge_sf;
+    }
 
     functionScalar getOpScalar(const string& id)
     {
-      map<string,double (*)(double)>::iterator it ;
-      it=opScalar.find(id) ;
-      if (it==opScalar.end()) ERROR("double (*)(double) COperatorExpr::getOpScalar(const string& id)",<<"unknown operator : "<<id) 
-      return it->second ;
-    }
-  
+      map<string,double (*)(double)>::iterator it;
+      it = opScalar.find(id);
+      if (it == opScalar.end()) ERROR("functionScalar COperatorExpr::getOpScalar(const string& id)", << "unknown operator : " << id)
+      return it->second;
+    }
+
     functionScalarScalar getOpScalarScalar(const string& id)
     {
-      map<string,double (*)(double,double)>::iterator it ;
-      it=opScalarScalar.find(id) ;
-      if (it==opScalarScalar.end()) ERROR("double (*)(double) COperatorExpr::getOpScalarScalar(const string& id)",<<"unknown operator : "<<id)
-      return it->second ;    
-    }
-    
+      map<string,double (*)(double,double)>::iterator it;
+      it = opScalarScalar.find(id);
+      if (it == opScalarScalar.end()) ERROR("functionScalarScalar COperatorExpr::getOpScalarScalar(const string& id)", << "unknown operator : " << id)
+      return it->second;
+    }
+
     functionField getOpField(const string& id)
     {
-      map<string,functionField>::iterator it ;
-      it=opField.find(id) ;
-      if (it==opField.end()) ERROR("functionField COperatorExpr::getOpField(const string& id)",<<"unknown operator : "<<id)
-      return it->second ;    
-    }
- 
+      map<string,functionField>::iterator it;
+      it = opField.find(id);
+      if (it == opField.end()) ERROR("functionField COperatorExpr::getOpField(const string& id)", << "unknown operator : " << id)
+      return it->second;
+    }
+
     functionFieldField getOpFieldField(const string& id)
     {
-      map<string,functionFieldField>::iterator it ;
-      it=opFieldField.find(id) ;
-      if (it==opFieldField.end()) ERROR("dfunctionFieldField COperatorExpr::getOpFieldField(const string& id)",<<"unknown operator : "<<id)
-      return it->second ;    
-    }
-    
+      map<string,functionFieldField>::iterator it;
+      it = opFieldField.find(id);
+      if (it == opFieldField.end()) ERROR("dfunctionFieldField COperatorExpr::getOpFieldField(const string& id)", << "unknown operator : " << id)
+      return it->second;
+    }
+
     functionFieldScalar getOpFieldScalar(const string& id)
     {
-      map<string,functionFieldScalar>::iterator it ;
-      it=opFieldScalar.find(id) ;
-      if (it==opFieldScalar.end()) ERROR("functionFieldScalar COperatorExpr::getOpFieldScalar(const string& id)",<<"unknown operator : "<<id)
-      return it->second ;    
-    }
-    
+      map<string,functionFieldScalar>::iterator it;
+      it = opFieldScalar.find(id);
+      if (it == opFieldScalar.end()) ERROR("functionFieldScalar COperatorExpr::getOpFieldScalar(const string& id)", << "unknown operator : " << id)
+      return it->second;
+    }
+
     functionScalarField getOpScalarField(const string& id)
     {
-      map<string,functionScalarField>::iterator it ;
-      it=opScalarField.find(id) ;
-      if (it==opScalarField.end()) ERROR("functionScalarField COperatorExpr::getOpFieldField(const string& id)",<<"unknown operator : "<<id)
-      return it->second ;    
-    }
-    
-    map<string,functionScalar> opScalar ;
-    map<string,functionScalarScalar> opScalarScalar ;
-    map<string,functionField> opField ;
-    map<string,functionFieldField> opFieldField ;
-    map<string,functionFieldScalar> opFieldScalar ;
-    map<string,functionScalarField> opScalarField ;
-
-    static inline double neg_s(double x)   {return -x;}
-    static inline double cos_s(double x)   {return std::cos(x);}
-    static inline double sin_s(double x)   {return std::sin(x);}
-    static inline double tan_s(double x)   {return std::tan(x);}
-    static inline double exp_s(double x)   {return std::exp(x);}
-    static inline double log_s(double x)   {return std::log(x);}
-    static inline double log10_s(double x) {return std::log10(x);}
-    static inline double sqrt_s(double x)  {return std::sqrt(x);}
-  
-    static inline double add_ss(double x, double y)    {return x+y;}
-    static inline double minus_ss(double x, double y)  {return x-y;}
-    static inline double mult_ss(double x, double y)   {return x*y;}
-    static inline double div_ss(double x, double y)    {return x/y;}
-    static inline double pow_ss(double x, double y)    {return std::pow(x,y);}
-    
-    static inline CArray<double,1> neg_f(const CArray<double,1>& x)   {return Array<double,1>(-x);}
-    static inline CArray<double,1> cos_f(const CArray<double,1>& x)   {return Array<double,1>(cos(x));}
-    static inline CArray<double,1> sin_f(const CArray<double,1>& x)   {return Array<double,1>(sin(x));}
-    static inline CArray<double,1> tan_f(const CArray<double,1>& x)   {return Array<double,1>(tan(x));}
-    static inline CArray<double,1> exp_f(const CArray<double,1>& x)   {return Array<double,1>(exp(x));}
-    static inline CArray<double,1> log_f(const CArray<double,1>& x)   {return Array<double,1>(log(x));}
-    static inline CArray<double,1> log10_f(const CArray<double,1>& x) {return Array<double,1>(log10(x));}
-    static inline CArray<double,1> sqrt_f(const CArray<double,1>& x)  {return Array<double,1>(sqrt(x));}
-    
-    static inline CArray<double,1> add_ff(const CArray<double,1>& x, const CArray<double,1>& y)    {return Array<double,1>(x+y);}
-    static inline CArray<double,1> minus_ff(const CArray<double,1>& x, const CArray<double,1>& y)  {return Array<double,1>(x-y);}
-    static inline CArray<double,1> mult_ff(const CArray<double,1>& x, const CArray<double,1>& y)   {return Array<double,1>(x*y);}
-    static inline CArray<double,1> div_ff(const CArray<double,1>& x, const CArray<double,1>& y)    {return Array<double,1>(x/y);}
-    static inline CArray<double,1> pow_ff(const CArray<double,1>& x, const CArray<double,1>& y)    {return Array<double,1>(pow(x,y));}
-
-    static inline CArray<double,1> add_fs(const CArray<double,1>& x, double y)    {return Array<double,1>(x+y);}
-    static inline CArray<double,1> minus_fs(const CArray<double,1>& x, double y)  {return Array<double,1>(x-y);}
-    static inline CArray<double,1> mult_fs(const CArray<double,1>& x, double y)   {return Array<double,1>(x*y);}
-    static inline CArray<double,1> div_fs(const CArray<double,1>& x, double y)    {return Array<double,1>(x/y);}
-    static inline CArray<double,1> pow_fs(const CArray<double,1>& x, double y)    {return Array<double,1>(pow(x,y));}  
-
-    static inline CArray<double,1> add_sf(double x, const CArray<double,1>& y)    {return Array<double,1>(x+y);}
-    static inline CArray<double,1> minus_sf(double x, const CArray<double,1>& y)  {return Array<double,1>(x-y);}
-    static inline CArray<double,1> mult_sf(double x, const CArray<double,1>& y)   {return Array<double,1>(x*y);}
-    static inline CArray<double,1> div_sf(double x, const CArray<double,1>& y)    {return Array<double,1>(x/y);}
-    
-     
-  } ;
-  
-  extern COperatorExpr operatorExpr ;
-  
+      map<string,functionScalarField>::iterator it;
+      it = opScalarField.find(id);
+      if (it == opScalarField.end()) ERROR("functionScalarField COperatorExpr::getOpFieldField(const string& id)", << "unknown operator : " << id)
+      return it->second;
+    }
+
+    map<string,functionScalar> opScalar;
+    map<string,functionScalarScalar> opScalarScalar;
+    map<string,functionField> opField;
+    map<string,functionFieldField> opFieldField;
+    map<string,functionFieldScalar> opFieldScalar;
+    map<string,functionScalarField> opScalarField;
+
+    static inline double neg_s(double x)   { return -x; }
+    static inline double cos_s(double x)   { return std::cos(x); }
+    static inline double sin_s(double x)   { return std::sin(x); }
+    static inline double tan_s(double x)   { return std::tan(x); }
+    static inline double exp_s(double x)   { return std::exp(x); }
+    static inline double log_s(double x)   { return std::log(x); }
+    static inline double log10_s(double x) { return std::log10(x); }
+    static inline double sqrt_s(double x)  { return std::sqrt(x); }
+
+    static inline double add_ss(double x, double y)   { return x + y; }
+    static inline double minus_ss(double x, double y) { return x - y; }
+    static inline double mult_ss(double x, double y)  { return x * y; }
+    static inline double div_ss(double x, double y)   { return x / y; }
+    static inline double pow_ss(double x, double y)   { return std::pow(x,y); }
+    static inline double eq_ss(double x, double y)    { return x == y; }
+    static inline double lt_ss(double x, double y)    { return x < y; }
+    static inline double gt_ss(double x, double y)    { return x > y; }
+    static inline double le_ss(double x, double y)    { return x <= y; }
+    static inline double ge_ss(double x, double y)    { return x >= y; }
+
+    static inline CArray<double,1> neg_f(const CArray<double,1>& x)   { return Array<double,1>(-x); }
+    static inline CArray<double,1> cos_f(const CArray<double,1>& x)   { return Array<double,1>(cos(x)); }
+    static inline CArray<double,1> sin_f(const CArray<double,1>& x)   { return Array<double,1>(sin(x)); }
+    static inline CArray<double,1> tan_f(const CArray<double,1>& x)   { return Array<double,1>(tan(x)); }
+    static inline CArray<double,1> exp_f(const CArray<double,1>& x)   { return Array<double,1>(exp(x)); }
+    static inline CArray<double,1> log_f(const CArray<double,1>& x)   { return Array<double,1>(log(x)); }
+    static inline CArray<double,1> log10_f(const CArray<double,1>& x) { return Array<double,1>(log10(x)); }
+    static inline CArray<double,1> sqrt_f(const CArray<double,1>& x)  { return Array<double,1>(sqrt(x)); }
+
+    static inline CArray<double,1> add_ff(const CArray<double,1>& x, const CArray<double,1>& y)   { return Array<double,1>(x + y); }
+    static inline CArray<double,1> minus_ff(const CArray<double,1>& x, const CArray<double,1>& y) { return Array<double,1>(x - y); }
+    static inline CArray<double,1> mult_ff(const CArray<double,1>& x, const CArray<double,1>& y)  { return Array<double,1>(x * y); }
+    static inline CArray<double,1> div_ff(const CArray<double,1>& x, const CArray<double,1>& y)   { return Array<double,1>(x / y); }
+    static inline CArray<double,1> pow_ff(const CArray<double,1>& x, const CArray<double,1>& y)   { return Array<double,1>(pow(x,y)); }
+    static inline CArray<double,1> eq_ff(const CArray<double,1>& x, const CArray<double,1>& y)    { return Array<double,1>(x == y); }
+    static inline CArray<double,1> lt_ff(const CArray<double,1>& x, const CArray<double,1>& y)    { return Array<double,1>(x < y); }
+    static inline CArray<double,1> gt_ff(const CArray<double,1>& x, const CArray<double,1>& y)    { return Array<double,1>(x > y); }
+    static inline CArray<double,1> le_ff(const CArray<double,1>& x, const CArray<double,1>& y)    { return Array<double,1>(x <= y); }
+    static inline CArray<double,1> ge_ff(const CArray<double,1>& x, const CArray<double,1>& y)    { return Array<double,1>(x >= y); }
+
+    static inline CArray<double,1> add_fs(const CArray<double,1>& x, double y)   { return Array<double,1>(x + y); }
+    static inline CArray<double,1> minus_fs(const CArray<double,1>& x, double y) { return Array<double,1>(x - y); }
+    static inline CArray<double,1> mult_fs(const CArray<double,1>& x, double y)  { return Array<double,1>(x * y); }
+    static inline CArray<double,1> div_fs(const CArray<double,1>& x, double y)   { return Array<double,1>(x / y); }
+    static inline CArray<double,1> pow_fs(const CArray<double,1>& x, double y)   { return Array<double,1>(pow(x,y)); }
+    static inline CArray<double,1> eq_fs(const CArray<double,1>& x, double y)    { return Array<double,1>(x == y); }
+    static inline CArray<double,1> lt_fs(const CArray<double,1>& x, double y)    { return Array<double,1>(x < y); }
+    static inline CArray<double,1> gt_fs(const CArray<double,1>& x, double y)    { return Array<double,1>(x > y); }
+    static inline CArray<double,1> le_fs(const CArray<double,1>& x, double y)    { return Array<double,1>(x <= y); }
+    static inline CArray<double,1> ge_fs(const CArray<double,1>& x, double y)    { return Array<double,1>(x >= y); }
+
+    static inline CArray<double,1> add_sf(double x, const CArray<double,1>& y)   { return Array<double,1>(x + y); }
+    static inline CArray<double,1> minus_sf(double x, const CArray<double,1>& y) { return Array<double,1>(x - y); }
+    static inline CArray<double,1> mult_sf(double x, const CArray<double,1>& y)  { return Array<double,1>(x * y); }
+    static inline CArray<double,1> div_sf(double x, const CArray<double,1>& y)   { return Array<double,1>(x / y); }
+    static inline CArray<double,1> eq_sf(double x, const CArray<double,1>& y)    { return Array<double,1>(x == y); }
+    static inline CArray<double,1> lt_sf(double x, const CArray<double,1>& y)    { return Array<double,1>(x < y); }
+    static inline CArray<double,1> gt_sf(double x, const CArray<double,1>& y)    { return Array<double,1>(x > y); }
+    static inline CArray<double,1> le_sf(double x, const CArray<double,1>& y)    { return Array<double,1>(x <= y); }
+    static inline CArray<double,1> ge_sf(double x, const CArray<double,1>& y)    { return Array<double,1>(x >= y); }
+  };
+
+  extern COperatorExpr operatorExpr;
 }
 
Index: XIOS/trunk/src/parse_expr/yacc_parser.cpp
===================================================================
--- XIOS/trunk/src/parse_expr/yacc_parser.cpp	(revision 727)
+++ XIOS/trunk/src/parse_expr/yacc_parser.cpp	(revision 728)
@@ -140,8 +140,13 @@
     DIVIDE = 265,
     POWER = 266,
-    LEFT_PARENTHESIS = 267,
-    RIGHT_PARENTHESIS = 268,
-    END = 269,
-    NEG = 270
+    EQ = 267,
+    LT = 268,
+    GT = 269,
+    LE = 270,
+    GE = 271,
+    LEFT_PARENTHESIS = 272,
+    RIGHT_PARENTHESIS = 273,
+    END = 274,
+    NEG = 275
   };
 #endif
@@ -158,5 +163,5 @@
   xios::IFilterExprNode* filterNode;
 
-#line 161 "yacc_parser.cpp" /* yacc.c:355  */
+#line 166 "yacc_parser.cpp" /* yacc.c:355  */
 };
 # define YYSTYPE_IS_TRIVIAL 1
@@ -173,5 +178,5 @@
 /* Copy the second part of user declarations.  */
 
-#line 176 "yacc_parser.cpp" /* yacc.c:358  */
+#line 181 "yacc_parser.cpp" /* yacc.c:358  */
 
 #ifdef short
@@ -415,19 +420,19 @@
 #define YYFINAL  16
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   134
+#define YYLAST   204
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  16
+#define YYNTOKENS  21
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  4
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  32
+#define YYNRULES  52
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  68
+#define YYNSTATES  108
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   270
+#define YYMAXUTOK   275
 
 #define YYTRANSLATE(YYX)                                                \
@@ -465,5 +470,5 @@
        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15
+      15,    16,    17,    18,    19,    20
 };
 
@@ -472,8 +477,10 @@
 static const yytype_uint8 yyrline[] =
 {
-       0,    59,    59,    60,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    77,    78,    79,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95
+       0,    61,    61,    62,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,    75,    76,    77,    78,    79,    80,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117
 };
 #endif
@@ -485,7 +492,7 @@
 {
   "$end", "error", "$undefined", "NUMBER", "VAR", "ID", "AVERAGE", "PLUS",
-  "MINUS", "TIMES", "DIVIDE", "POWER", "LEFT_PARENTHESIS",
-  "RIGHT_PARENTHESIS", "END", "NEG", "$accept", "Line", "Expression",
-  "Field_expr", YY_NULLPTR
+  "MINUS", "TIMES", "DIVIDE", "POWER", "EQ", "LT", "GT", "LE", "GE",
+  "LEFT_PARENTHESIS", "RIGHT_PARENTHESIS", "END", "NEG", "$accept", "Line",
+  "Expression", "Field_expr", YY_NULLPTR
 };
 #endif
@@ -497,12 +504,13 @@
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275
 };
 # endif
 
-#define YYPACT_NINF -6
+#define YYPACT_NINF -13
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-6)))
+  (!!((Yystate) == (-13)))
 
 #define YYTABLE_NINF -1
@@ -513,13 +521,17 @@
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
      STATE-NUM.  */
-static const yytype_int8 yypact[] =
-{
-      55,    -6,    -6,    -4,    -6,    -1,    -1,    -6,     9,   123,
-      73,    -1,    14,    20,    81,    88,    -6,    -1,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -6,    95,   102,
-      -6,    -6,    13,    19,    13,    19,    14,    20,    14,    20,
-      -2,    67,    67,    14,    13,    19,    13,    19,    14,    20,
-      14,    20,    14,    20,    -6,    -6,    67,    14,   109,    67,
-      67,    67,    67,   116,    24,    24,    14,    14
+static const yytype_int16 yypact[] =
+{
+      90,   -13,   -13,   -12,   -13,    35,    35,   -13,    44,   188,
+     103,    35,    24,    34,   116,   128,   -13,    35,    35,    35,
+      35,    65,    35,    35,    35,    35,    35,    35,    35,    35,
+      35,    35,    35,    35,    35,    35,    35,   -13,   140,   152,
+     -13,   -13,    -7,    23,    -7,    23,    24,    34,    24,    34,
+      54,    65,    65,    24,     0,    67,     0,    67,     0,    67,
+       0,    67,     0,    67,    -7,    23,    -7,    23,    24,    34,
+      24,    34,    24,    34,     0,    67,     0,    67,     0,    67,
+       0,    67,     0,    67,   -13,   -13,    65,    24,   164,    65,
+      65,    65,    65,    65,    65,    65,    65,    65,   176,    95,
+      95,    24,    24,    92,    92,    92,    92,    92
 };
 
@@ -529,11 +541,15 @@
 static const yytype_uint8 yydefact[] =
 {
-       0,     4,     5,    14,    15,     0,     0,     2,     0,     0,
-       0,     0,    10,    20,     0,     0,     1,     0,     0,     0,
+       0,     4,     5,    19,    20,     0,     0,     2,     0,     0,
+       0,     0,    10,    25,     0,     0,     1,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     3,     0,     0,
-      12,    22,     6,    24,     7,    26,     8,    28,     9,    30,
-       0,     0,     0,    11,    23,    16,    25,    17,    27,    18,
-      29,    19,    31,    21,    13,    32,     0,    10,     0,     0,
-       0,     0,     0,     0,     6,     7,     8,     9
+      17,    32,     6,    34,     7,    36,     8,    38,     9,    40,
+       0,     0,     0,    11,    12,    43,    13,    45,    14,    47,
+      15,    49,    16,    51,    33,    21,    35,    22,    37,    23,
+      39,    24,    41,    26,    42,    27,    44,    28,    46,    29,
+      48,    30,    50,    31,    18,    52,     0,    10,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     6,
+       7,     8,     9,    12,    13,    14,    15,    16
 };
 
@@ -541,5 +557,5 @@
 static const yytype_int8 yypgoto[] =
 {
-      -6,    -6,    -5,    21
+     -13,   -13,    -5,    31
 };
 
@@ -555,36 +571,50 @@
 static const yytype_uint8 yytable[] =
 {
-      12,    14,     1,     2,     3,     4,    28,     5,    11,    16,
-      56,     6,    32,    34,    36,    38,    43,    44,    46,    48,
-      50,    52,    19,    20,    21,    21,    13,    15,    24,    25,
-      26,    26,    29,    61,    62,    21,    57,    58,    33,    35,
-      37,    39,     0,    45,    47,    49,    51,    53,     0,     0,
-       0,    63,     0,     0,    64,    65,    66,    67,     1,     2,
-       3,     4,     0,     5,     0,     0,     0,     6,     0,     7,
-       1,     2,    40,     0,     0,    41,     0,     0,     0,    42,
-      22,    23,    24,    25,    26,     0,     0,    27,    17,    18,
-      19,    20,    21,     0,    30,    22,    23,    24,    25,    26,
-       0,    31,    17,    18,    19,    20,    21,     0,    54,    22,
-      23,    24,    25,    26,     0,    55,    59,    60,    61,    62,
-      21,     0,    30,    59,    60,    61,    62,    21,     0,    54,
-      17,    18,    19,    20,    21
+      12,    14,    19,    20,    21,    11,    38,    17,    18,    19,
+      20,    21,    42,    44,    46,    48,    53,    54,    56,    58,
+      60,    62,    64,    66,    68,    70,    72,    74,    76,    78,
+      80,    82,    29,    30,    31,    21,    13,    15,     1,     2,
+       3,     4,    39,     5,    16,    31,    87,    88,    43,    45,
+      47,    49,     6,    55,    57,    59,    61,    63,    65,    67,
+      69,    71,    73,    75,    77,    79,    81,    83,     1,     2,
+      50,    86,     0,    51,    27,    28,    29,    30,    31,     0,
+       0,    98,    52,     0,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,     1,     2,     3,     4,     0,     5,    89,
+      90,    91,    92,    21,    91,    92,    21,     6,     0,     7,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+       0,     0,    37,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,     0,    40,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,     0,    41,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,     0,    84,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,     0,
+      85,    89,    90,    91,    92,    21,    93,    94,    95,    96,
+      97,     0,    40,    89,    90,    91,    92,    21,    93,    94,
+      95,    96,    97,     0,    84,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26
 };
 
 static const yytype_int8 yycheck[] =
 {
-       5,     6,     3,     4,     5,     6,    11,     8,    12,     0,
-      12,    12,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,     9,    10,    11,    11,     5,     6,     9,    10,
-      11,    11,    11,     9,    10,    11,    41,    42,    17,    18,
-      19,    20,    -1,    22,    23,    24,    25,    26,    -1,    -1,
-      -1,    56,    -1,    -1,    59,    60,    61,    62,     3,     4,
-       5,     6,    -1,     8,    -1,    -1,    -1,    12,    -1,    14,
-       3,     4,     5,    -1,    -1,     8,    -1,    -1,    -1,    12,
-       7,     8,     9,    10,    11,    -1,    -1,    14,     7,     8,
-       9,    10,    11,    -1,    13,     7,     8,     9,    10,    11,
-      -1,    13,     7,     8,     9,    10,    11,    -1,    13,     7,
-       8,     9,    10,    11,    -1,    13,     7,     8,     9,    10,
-      11,    -1,    13,     7,     8,     9,    10,    11,    -1,    13,
-       7,     8,     9,    10,    11
+       5,     6,     9,    10,    11,    17,    11,     7,     8,     9,
+      10,    11,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,     9,    10,    11,    11,     5,     6,     3,     4,
+       5,     6,    11,     8,     0,    11,    51,    52,    17,    18,
+      19,    20,    17,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,     3,     4,
+       5,    17,    -1,     8,     7,     8,     9,    10,    11,    -1,
+      -1,    86,    17,    -1,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,     3,     4,     5,     6,    -1,     8,     7,
+       8,     9,    10,    11,     9,    10,    11,    17,    -1,    19,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      -1,    -1,    19,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    -1,    18,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    -1,    18,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    -1,    18,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    -1,
+      18,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    -1,    18,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    -1,    18,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16
 };
 
@@ -593,11 +623,15 @@
 static const yytype_uint8 yystos[] =
 {
-       0,     3,     4,     5,     6,     8,    12,    14,    17,    18,
-      19,    12,    18,    19,    18,    19,     0,     7,     8,     9,
-      10,    11,     7,     8,     9,    10,    11,    14,    18,    19,
-      13,    13,    18,    19,    18,    19,    18,    19,    18,    19,
-       5,     8,    12,    18,    18,    19,    18,    19,    18,    19,
-      18,    19,    18,    19,    13,    13,    12,    18,    18,     7,
-       8,     9,    10,    18,    18,    18,    18,    18
+       0,     3,     4,     5,     6,     8,    17,    19,    22,    23,
+      24,    17,    23,    24,    23,    24,     0,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    19,    23,    24,
+      18,    18,    23,    24,    23,    24,    23,    24,    23,    24,
+       5,     8,    17,    23,    23,    24,    23,    24,    23,    24,
+      23,    24,    23,    24,    23,    24,    23,    24,    23,    24,
+      23,    24,    23,    24,    23,    24,    23,    24,    23,    24,
+      23,    24,    23,    24,    18,    18,    17,    23,    23,     7,
+       8,     9,    10,    12,    13,    14,    15,    16,    23,    23,
+      23,    23,    23,    23,    23,    23,    23,    23
 };
 
@@ -605,8 +639,10 @@
 static const yytype_uint8 yyr1[] =
 {
-       0,    16,    17,    17,    18,    18,    18,    18,    18,    18,
-      18,    18,    18,    18,    19,    19,    19,    19,    19,    19,
-      19,    19,    19,    19,    19,    19,    19,    19,    19,    19,
-      19,    19,    19
+       0,    21,    22,    22,    23,    23,    23,    23,    23,    23,
+      23,    23,    23,    23,    23,    23,    23,    23,    23,    24,
+      24,    24,    24,    24,    24,    24,    24,    24,    24,    24,
+      24,    24,    24,    24,    24,    24,    24,    24,    24,    24,
+      24,    24,    24,    24,    24,    24,    24,    24,    24,    24,
+      24,    24,    24
 };
 
@@ -615,6 +651,8 @@
 {
        0,     2,     1,     2,     1,     1,     3,     3,     3,     3,
-       2,     3,     3,     4,     1,     1,     3,     3,     3,     3,
-       2,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       2,     3,     3,     3,     3,     3,     3,     3,     4,     1,
+       1,     3,     3,     3,     3,     2,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
        3,     3,     4
 };
@@ -1294,191 +1332,311 @@
     {
         case 2:
-#line 59 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 61 "yacc_parser.yacc" /* yacc.c:1646  */
     { /* Nothing to do */ }
-#line 1299 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1337 "yacc_parser.cpp" /* yacc.c:1646  */
     break;
 
   case 3:
-#line 60 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 62 "yacc_parser.yacc" /* yacc.c:1646  */
     { parsed = (yyvsp[-1].filterNode); }
-#line 1305 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1343 "yacc_parser.cpp" /* yacc.c:1646  */
     break;
 
   case 4:
-#line 64 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 66 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.scalarNode) = new CScalarValExprNode(*(yyvsp[0].str)); delete (yyvsp[0].str); }
-#line 1311 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1349 "yacc_parser.cpp" /* yacc.c:1646  */
     break;
 
   case 5:
-#line 65 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 67 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.scalarNode) = new CScalarVarExprNode(*(yyvsp[0].str)); delete (yyvsp[0].str); }
-#line 1317 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1355 "yacc_parser.cpp" /* yacc.c:1646  */
     break;
 
   case 6:
-#line 66 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 68 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "add", (yyvsp[0].scalarNode)); }
-#line 1323 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1361 "yacc_parser.cpp" /* yacc.c:1646  */
     break;
 
   case 7:
-#line 67 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 69 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "minus", (yyvsp[0].scalarNode)); }
-#line 1329 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1367 "yacc_parser.cpp" /* yacc.c:1646  */
     break;
 
   case 8:
-#line 68 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 70 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "mult", (yyvsp[0].scalarNode)); }
-#line 1335 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1373 "yacc_parser.cpp" /* yacc.c:1646  */
     break;
 
   case 9:
-#line 69 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 71 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "div", (yyvsp[0].scalarNode)); }
-#line 1341 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1379 "yacc_parser.cpp" /* yacc.c:1646  */
     break;
 
   case 10:
-#line 70 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 72 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.scalarNode) = new CScalarUnaryOpExprNode("neg", (yyvsp[0].scalarNode)); }
-#line 1347 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1385 "yacc_parser.cpp" /* yacc.c:1646  */
     break;
 
   case 11:
-#line 71 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 73 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "pow", (yyvsp[0].scalarNode)); }
-#line 1353 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1391 "yacc_parser.cpp" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 72 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 74 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "eq", (yyvsp[0].scalarNode)); }
+#line 1397 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 13:
+#line 75 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "lt", (yyvsp[0].scalarNode)); }
+#line 1403 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 14:
+#line 76 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "gt", (yyvsp[0].scalarNode)); }
+#line 1409 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 15:
+#line 77 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "le", (yyvsp[0].scalarNode)); }
+#line 1415 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 16:
+#line 78 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.scalarNode) = new CScalarBinaryOpExprNode((yyvsp[-2].scalarNode), "ge", (yyvsp[0].scalarNode)); }
+#line 1421 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 17:
+#line 79 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.scalarNode) = (yyvsp[-1].scalarNode); }
-#line 1359 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 13:
-#line 73 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1427 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 18:
+#line 80 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.scalarNode) = new CScalarUnaryOpExprNode(*(yyvsp[-3].str), (yyvsp[-1].scalarNode)); delete (yyvsp[-3].str); }
-#line 1365 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 14:
-#line 77 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1433 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 19:
+#line 84 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldExprNode(*(yyvsp[0].str)); delete (yyvsp[0].str); }
-#line 1371 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 15:
-#line 78 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1439 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 20:
+#line 85 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterTemporalFieldExprNode(*(yyvsp[0].str)); delete (yyvsp[0].str); }
-#line 1377 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 16:
-#line 79 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1445 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 21:
+#line 86 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "add", (yyvsp[0].filterNode)); }
-#line 1383 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 17:
-#line 80 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1451 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 22:
+#line 87 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "minus", (yyvsp[0].filterNode)); }
-#line 1389 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 18:
-#line 81 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1457 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 23:
+#line 88 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "mult", (yyvsp[0].filterNode)); }
-#line 1395 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 19:
-#line 82 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1463 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 24:
+#line 89 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "div", (yyvsp[0].filterNode)); }
-#line 1401 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 20:
-#line 83 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1469 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 25:
+#line 90 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterUnaryOpExprNode("neg", (yyvsp[0].filterNode)); }
-#line 1407 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 21:
-#line 84 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1475 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 26:
+#line 91 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "pow", (yyvsp[0].filterNode)); }
-#line 1413 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 22:
-#line 85 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1481 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 27:
+#line 92 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "eq", (yyvsp[0].filterNode)); }
+#line 1487 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 28:
+#line 93 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "lt", (yyvsp[0].filterNode)); }
+#line 1493 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 29:
+#line 94 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "gt", (yyvsp[0].filterNode)); }
+#line 1499 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 30:
+#line 95 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "le", (yyvsp[0].filterNode)); }
+#line 1505 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 31:
+#line 96 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterFieldFieldOpExprNode((yyvsp[-2].filterNode), "ge", (yyvsp[0].filterNode)); }
+#line 1511 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 32:
+#line 97 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = (yyvsp[-1].filterNode); }
-#line 1419 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 23:
-#line 86 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1517 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 33:
+#line 98 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "add", (yyvsp[0].scalarNode)); }
-#line 1425 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 24:
-#line 87 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1523 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 34:
+#line 99 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "add", (yyvsp[0].filterNode)); }
-#line 1431 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 25:
-#line 88 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1529 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 35:
+#line 100 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "minus", (yyvsp[0].scalarNode)); }
-#line 1437 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 26:
-#line 89 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1535 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 36:
+#line 101 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "minus", (yyvsp[0].filterNode)); }
-#line 1443 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 27:
-#line 90 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1541 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 37:
+#line 102 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "mult", (yyvsp[0].scalarNode)); }
-#line 1449 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 28:
-#line 91 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1547 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 38:
+#line 103 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "mult", (yyvsp[0].filterNode)); }
-#line 1455 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 29:
-#line 92 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1553 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 39:
+#line 104 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "div", (yyvsp[0].scalarNode)); }
-#line 1461 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 30:
-#line 93 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1559 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 40:
+#line 105 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "div", (yyvsp[0].filterNode)); }
-#line 1467 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 31:
-#line 94 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1565 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 41:
+#line 106 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "pow", (yyvsp[0].scalarNode)); }
-#line 1473 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-  case 32:
-#line 95 "yacc_parser.yacc" /* yacc.c:1646  */
+#line 1571 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 42:
+#line 107 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "eq", (yyvsp[0].scalarNode)); }
+#line 1577 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 43:
+#line 108 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "eq", (yyvsp[0].filterNode)); }
+#line 1583 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 44:
+#line 109 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "lt", (yyvsp[0].scalarNode)); }
+#line 1589 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 45:
+#line 110 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "lt", (yyvsp[0].filterNode)); }
+#line 1595 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 46:
+#line 111 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "gt", (yyvsp[0].scalarNode)); }
+#line 1601 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 47:
+#line 112 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "gt", (yyvsp[0].filterNode)); }
+#line 1607 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 48:
+#line 113 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "le", (yyvsp[0].scalarNode)); }
+#line 1613 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 49:
+#line 114 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "le", (yyvsp[0].filterNode)); }
+#line 1619 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 50:
+#line 115 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterFieldScalarOpExprNode((yyvsp[-2].filterNode), "ge", (yyvsp[0].scalarNode)); }
+#line 1625 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 51:
+#line 116 "yacc_parser.yacc" /* yacc.c:1646  */
+    { (yyval.filterNode) = new CFilterScalarFieldOpExprNode((yyvsp[-2].scalarNode), "ge", (yyvsp[0].filterNode)); }
+#line 1631 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+  case 52:
+#line 117 "yacc_parser.yacc" /* yacc.c:1646  */
     { (yyval.filterNode) = new CFilterUnaryOpExprNode(*(yyvsp[-3].str), (yyvsp[-1].filterNode)); delete (yyvsp[-3].str); }
-#line 1479 "yacc_parser.cpp" /* yacc.c:1646  */
-    break;
-
-
-#line 1483 "yacc_parser.cpp" /* yacc.c:1646  */
+#line 1637 "yacc_parser.cpp" /* yacc.c:1646  */
+    break;
+
+
+#line 1641 "yacc_parser.cpp" /* yacc.c:1646  */
       default: break;
     }
@@ -1708,5 +1866,5 @@
   return yyresult;
 }
-#line 97 "yacc_parser.yacc" /* yacc.c:1906  */
+#line 119 "yacc_parser.yacc" /* yacc.c:1906  */
 
 
Index: XIOS/trunk/src/parse_expr/yacc_parser.hpp
===================================================================
--- XIOS/trunk/src/parse_expr/yacc_parser.hpp	(revision 727)
+++ XIOS/trunk/src/parse_expr/yacc_parser.hpp	(revision 728)
@@ -55,8 +55,13 @@
     DIVIDE = 265,
     POWER = 266,
-    LEFT_PARENTHESIS = 267,
-    RIGHT_PARENTHESIS = 268,
-    END = 269,
-    NEG = 270
+    EQ = 267,
+    LT = 268,
+    GT = 269,
+    LE = 270,
+    GE = 271,
+    LEFT_PARENTHESIS = 272,
+    RIGHT_PARENTHESIS = 273,
+    END = 274,
+    NEG = 275
   };
 #endif
@@ -73,5 +78,5 @@
   xios::IFilterExprNode* filterNode;
 
-#line 76 "yacc_parser.hpp" /* yacc.c:1909  */
+#line 81 "yacc_parser.hpp" /* yacc.c:1909  */
 };
 # define YYSTYPE_IS_TRIVIAL 1
Index: XIOS/trunk/src/parse_expr/yacc_parser.yacc
===================================================================
--- XIOS/trunk/src/parse_expr/yacc_parser.yacc	(revision 727)
+++ XIOS/trunk/src/parse_expr/yacc_parser.yacc	(revision 728)
@@ -42,7 +42,9 @@
 %token <str> VAR ID AVERAGE
 %token PLUS MINUS TIMES DIVIDE POWER
+%token EQ LT GT LE GE
 %token LEFT_PARENTHESIS RIGHT_PARENTHESIS
 %token <str> END
 
+%left EQ LT GT LE GE
 %left PLUS MINUS
 %left TIMES DIVIDE
@@ -70,4 +72,9 @@
           | MINUS Expression %prec NEG   { $$ = new CScalarUnaryOpExprNode("neg", $2); }
           | Expression POWER Expression  { $$ = new CScalarBinaryOpExprNode($1, "pow", $3); }
+          | Expression EQ Expression  { $$ = new CScalarBinaryOpExprNode($1, "eq", $3); }
+          | Expression LT Expression  { $$ = new CScalarBinaryOpExprNode($1, "lt", $3); }
+          | Expression GT Expression  { $$ = new CScalarBinaryOpExprNode($1, "gt", $3); }
+          | Expression LE Expression  { $$ = new CScalarBinaryOpExprNode($1, "le", $3); }
+          | Expression GE Expression  { $$ = new CScalarBinaryOpExprNode($1, "ge", $3); }
           | LEFT_PARENTHESIS Expression RIGHT_PARENTHESIS    { $$ = $2; }
           | ID LEFT_PARENTHESIS Expression RIGHT_PARENTHESIS { $$ = new CScalarUnaryOpExprNode(*$1, $3); delete $1; }
@@ -83,4 +90,9 @@
           | MINUS Field_expr %prec NEG   { $$ = new CFilterUnaryOpExprNode("neg", $2); }
           | Field_expr POWER Field_expr  { $$ = new CFilterFieldFieldOpExprNode($1, "pow", $3); }
+          | Field_expr EQ Field_expr { $$ = new CFilterFieldFieldOpExprNode($1, "eq", $3); }
+          | Field_expr LT Field_expr { $$ = new CFilterFieldFieldOpExprNode($1, "lt", $3); }
+          | Field_expr GT Field_expr { $$ = new CFilterFieldFieldOpExprNode($1, "gt", $3); }
+          | Field_expr LE Field_expr { $$ = new CFilterFieldFieldOpExprNode($1, "le", $3); }
+          | Field_expr GE Field_expr { $$ = new CFilterFieldFieldOpExprNode($1, "ge", $3); }
           | LEFT_PARENTHESIS Field_expr RIGHT_PARENTHESIS	{ $$ = $2; }
           | Field_expr PLUS Expression   { $$ = new CFilterFieldScalarOpExprNode($1, "add", $3); }
@@ -93,4 +105,14 @@
           | Expression DIVIDE Field_expr { $$ = new CFilterScalarFieldOpExprNode($1, "div", $3); }
           | Field_expr POWER Expression  { $$ = new CFilterFieldScalarOpExprNode($1, "pow", $3); }
+          | Field_expr EQ Expression { $$ = new CFilterFieldScalarOpExprNode($1, "eq", $3); }
+          | Expression EQ Field_expr { $$ = new CFilterScalarFieldOpExprNode($1, "eq", $3); }
+          | Field_expr LT Expression { $$ = new CFilterFieldScalarOpExprNode($1, "lt", $3); }
+          | Expression LT Field_expr { $$ = new CFilterScalarFieldOpExprNode($1, "lt", $3); }
+          | Field_expr GT Expression { $$ = new CFilterFieldScalarOpExprNode($1, "gt", $3); }
+          | Expression GT Field_expr { $$ = new CFilterScalarFieldOpExprNode($1, "gt", $3); }
+          | Field_expr LE Expression { $$ = new CFilterFieldScalarOpExprNode($1, "le", $3); }
+          | Expression LE Field_expr { $$ = new CFilterScalarFieldOpExprNode($1, "le", $3); }
+          | Field_expr GE Expression { $$ = new CFilterFieldScalarOpExprNode($1, "ge", $3); }
+          | Expression GE Field_expr { $$ = new CFilterScalarFieldOpExprNode($1, "ge", $3); }
           | ID LEFT_PARENTHESIS Field_expr RIGHT_PARENTHESIS { $$ = new CFilterUnaryOpExprNode(*$1, $3); delete $1; }
           ;
