]> granicus.if.org Git - jq/commitdiff
Regenerate lex/yacc files
authorDamian Gryski <damian@gryski.com>
Tue, 23 Oct 2012 15:02:19 +0000 (17:02 +0200)
committerDamian Gryski <damian@gryski.com>
Tue, 23 Oct 2012 15:02:19 +0000 (17:02 +0200)
lexer.gen.c
lexer.gen.h
parser.gen.c
parser.gen.h
parser.gen.info

index 2fb747e651f3326e18453cb944b5adb8c0a58e50..7d8b953cfee5ec17aef813600e5921b17cbdbfe2 100644 (file)
@@ -9,7 +9,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 37
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -159,15 +159,7 @@ typedef void* yyscan_t;
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -179,6 +171,11 @@ typedef void* yyscan_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
@@ -201,11 +198,6 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
 
 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -223,7 +215,7 @@ struct yy_buffer_state
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       int yy_n_chars;
+       yy_size_t yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -302,7 +294,7 @@ static void jq_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner
 
 YY_BUFFER_STATE jq_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
 YY_BUFFER_STATE jq_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE jq_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
+YY_BUFFER_STATE jq_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
 
 void *jq_yyalloc (yy_size_t ,yyscan_t yyscanner );
 void *jq_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
@@ -334,7 +326,7 @@ void jq_yyfree (void * ,yyscan_t yyscanner );
 
 /* Begin user sect3 */
 
-#define jq_yywrap(n) 1
+#define jq_yywrap(yyscanner) 1
 #define YY_SKIP_YYWRAP
 
 typedef unsigned char YY_CHAR;
@@ -358,8 +350,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
        *yy_cp = '\0'; \
        yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 34
-#define YY_END_OF_BUFFER 35
+#define YY_NUM_RULES 35
+#define YY_END_OF_BUFFER 36
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -367,17 +359,17 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[86] =
+static yyconst flex_int16_t yy_accept[88] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   35,   33,   32,   32,   25,    1,   21,   22,
-       23,   21,   21,   21,   21,   21,   24,   21,   21,   21,
-       31,   31,   31,   31,   31,   31,   31,   21,   29,   29,
-       27,   30,   32,    1,   16,   14,   24,   15,    0,   12,
-       17,   19,    2,   20,   31,   31,    3,   31,   31,   31,
-        5,   10,   31,   13,   29,   28,   26,   28,    0,   24,
-       18,    9,    4,   31,   31,   11,   31,    0,   28,    8,
-        7,    6,   28,   28,    0
+        0,    0,   36,   34,   33,   33,   34,   26,    1,   22,
+       23,   24,   22,   22,   22,   22,   22,   25,   22,   22,
+       22,   32,   32,   32,   32,   32,   32,   32,   22,   30,
+       30,   28,   31,   33,    2,    1,   17,   15,   25,   16,
+        0,   13,   18,   20,    3,   21,   32,   32,    4,   32,
+       32,   32,    6,   11,   32,   14,   30,   29,   27,   29,
+        0,   25,   19,   10,    5,   32,   32,   12,   32,    0,
+       29,    9,    8,    7,   29,   29,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -385,17 +377,17 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    5,    6,    7,    1,    1,    1,    8,
-        9,   10,   11,   12,   13,   14,   15,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   17,   18,   19,
-       20,   21,    1,    1,   22,   22,   22,   22,   23,   22,
-       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-       24,   25,   26,    1,   27,    1,   28,   22,   22,   29,
-
-       30,   31,   22,   32,   33,   22,   22,   34,   22,   35,
-       36,   22,   22,   37,   38,   39,   40,   22,   22,   22,
-       22,   22,   41,   42,   43,    1,    1,    1,    1,    1,
+        1,    2,    5,    6,    7,    8,    1,    1,    1,    9,
+       10,   11,   12,   13,   14,   15,   16,   17,   17,   17,
+       17,   17,   17,   17,   17,   17,   17,   18,   19,   20,
+       21,   22,    1,    1,   23,   23,   23,   23,   24,   23,
+       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
+       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
+       25,   26,   27,    1,   28,    1,   29,   23,   23,   30,
+
+       31,   32,   23,   33,   34,   23,   23,   35,   23,   36,
+       37,   23,   23,   38,   39,   40,   41,   23,   23,   23,
+       23,   23,   42,   43,   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,    1,    1,    1,
@@ -412,91 +404,91 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[44] =
+static yyconst flex_int32_t yy_meta[45] =
     {   0,
-        1,    1,    2,    2,    3,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    4,    1,    1,    1,    1,
-        1,    4,    4,    1,    5,    1,    6,    4,    4,    4,
+        1,    1,    2,    2,    1,    3,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    4,    1,    1,    1,
+        1,    1,    4,    4,    1,    5,    1,    6,    4,    4,
         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        1,    1,    1
+        4,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[95] =
+static yyconst flex_int16_t yy_base[97] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       41,   42,  142,  143,   46,   48,  143,    0,  143,  143,
-      143,  121,  120,   38,   39,   41,   49,  119,  118,  117,
-        0,   22,  106,   36,  104,   97,  101,  112,    0,    0,
-      143,   51,   71,    0,  143,  143,   62,  143,   64,   96,
-      143,  143,  143,  143,    0,   85,    0,   79,   48,   75,
-        0,    0,   65,  143,    0,   69,  143,   68,   74,   73,
-      143,    0,    0,   57,   57,    0,   49,   56,   58,    0,
-        0,    0,   57,   43,  143,   96,  102,  105,  111,  117,
-      120,  122,  124,  126
+       42,   43,  144,  145,   48,   50,  122,  145,    0,  145,
+      145,  145,  121,  120,   39,   40,   42,   50,  119,  118,
+      117,    0,   23,   91,   37,   88,   78,   77,   80,    0,
+        0,  145,   38,   73,  145,    0,  145,  145,   63,  145,
+       71,   79,  145,  145,  145,  145,    0,   69,    0,   66,
+       27,   67,    0,    0,   65,  145,    0,   69,  145,   67,
+       75,   74,  145,    0,    0,   58,   58,    0,   50,   61,
+       58,    0,    0,    0,   56,   51,  145,  102,  108,  111,
+      117,  123,  126,  128,  130,  132
 
     } ;
 
-static yyconst flex_int16_t yy_def[95] =
+static yyconst flex_int16_t yy_def[97] =
     {   0,
-       85,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       86,   86,   85,   85,   85,   85,   85,   87,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       88,   88,   88,   88,   88,   88,   88,   85,   89,   89,
-       85,   90,   85,   87,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   85,   89,   85,   85,   91,   85,   85,
-       85,   88,   88,   88,   88,   88,   88,   90,   92,   88,
-       88,   88,   93,   94,    0,   85,   85,   85,   85,   85,
-       85,   85,   85,   85
+       87,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+       88,   88,   87,   87,   87,   87,   87,   87,   89,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   90,   90,   90,   90,   90,   90,   90,   87,   91,
+       91,   87,   92,   87,   87,   89,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   87,   91,   87,   87,   93,
+       87,   87,   87,   90,   90,   90,   90,   90,   90,   92,
+       94,   90,   90,   90,   95,   96,    0,   87,   87,   87,
+       87,   87,   87,   87,   87,   87
 
     } ;
 
-static yyconst flex_int16_t yy_nxt[187] =
+static yyconst flex_int16_t yy_nxt[190] =
     {   0,
        14,   15,   16,   14,   17,   18,   19,   20,   21,   22,
-       23,   19,   24,   25,   26,   27,   19,   19,   28,   29,
-       30,   31,   31,   20,   14,   21,   31,   32,   33,   34,
-       31,   31,   35,   31,   31,   36,   31,   31,   37,   31,
-       20,   38,   21,   40,   40,   41,   41,   43,   43,   43,
-       43,   47,   47,   47,   47,   50,   56,   48,   67,   57,
-       51,   49,   47,   85,   47,   42,   42,   78,   49,   59,
-       60,   49,   43,   43,   69,   47,   69,   47,   49,   70,
-       74,   78,   78,   82,   49,   75,   81,   80,   70,   70,
-       68,   49,   78,   78,   77,   68,   39,   39,   39,   39,
-
-       39,   39,   44,   76,   44,   44,   44,   44,   55,   73,
-       55,   65,   65,   72,   65,   71,   65,   66,   66,   66,
-       66,   66,   66,   79,   79,   83,   83,   84,   84,   66,
-       66,   64,   63,   62,   61,   58,   54,   53,   52,   46,
-       45,   85,   13,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85
+       23,   24,   20,   25,   26,   27,   28,   20,   20,   29,
+       30,   31,   32,   32,   21,   14,   22,   32,   33,   34,
+       35,   32,   32,   36,   32,   32,   37,   32,   32,   38,
+       32,   21,   39,   22,   41,   41,   69,   42,   42,   44,
+       44,   44,   44,   49,   49,   49,   49,   52,   58,   50,
+       76,   59,   53,   51,   49,   77,   49,   43,   43,   87,
+       51,   61,   62,   51,   44,   44,   80,   49,   70,   49,
+       51,   80,   71,   80,   71,   84,   51,   72,   83,   82,
+       72,   72,   80,   51,   80,   79,   78,   75,   74,   73,
+
+       66,   70,   40,   40,   40,   40,   40,   40,   46,   65,
+       46,   46,   46,   46,   57,   64,   57,   67,   67,   63,
+       67,   60,   67,   68,   68,   68,   68,   68,   68,   81,
+       81,   85,   85,   86,   86,   68,   68,   56,   55,   54,
+       48,   47,   45,   87,   13,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87
     } ;
 
-static yyconst flex_int16_t yy_chk[187] =
+static yyconst flex_int16_t yy_chk[190] =
     {   0,
         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,   11,   12,   11,   12,   15,   15,   16,
-       16,   24,   25,   24,   25,   26,   32,   24,   42,   32,
-       26,   25,   27,   78,   27,   11,   12,   84,   25,   34,
-       34,   27,   43,   43,   49,   47,   49,   47,   27,   49,
-       59,   83,   79,   77,   47,   59,   75,   74,   70,   69,
-       42,   47,   68,   66,   63,   78,   86,   86,   86,   86,
-
-       86,   86,   87,   60,   87,   87,   87,   87,   88,   58,
-       88,   89,   89,   56,   89,   50,   89,   90,   90,   90,
-       90,   90,   90,   91,   91,   92,   92,   93,   93,   94,
-       94,   38,   37,   36,   35,   33,   30,   29,   28,   23,
-       22,   13,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85
+        1,    1,    1,    1,   11,   12,   43,   11,   12,   15,
+       15,   16,   16,   25,   26,   25,   26,   27,   33,   25,
+       61,   33,   27,   26,   28,   61,   28,   11,   12,   80,
+       26,   35,   35,   28,   44,   44,   86,   49,   43,   49,
+       28,   85,   51,   81,   51,   79,   49,   51,   77,   76,
+       72,   71,   70,   49,   68,   65,   62,   60,   58,   52,
+
+       39,   80,   88,   88,   88,   88,   88,   88,   89,   38,
+       89,   89,   89,   89,   90,   37,   90,   91,   91,   36,
+       91,   34,   91,   92,   92,   92,   92,   92,   92,   93,
+       93,   94,   94,   95,   95,   96,   96,   31,   30,   29,
+       24,   23,   17,   13,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -527,7 +519,7 @@ static yyconst flex_int16_t yy_chk[187] =
   static int enter(int opening, int state, yyscan_t yyscanner);
   static int try_exit(int closing, int state, yyscan_t yyscanner);
 #define YY_NO_INPUT 1
-#line 531 "lexer.gen.c"
+#line 523 "lexer.gen.c"
 
 #define INITIAL 0
 #define IN_PAREN 1
@@ -559,8 +551,8 @@ struct yyguts_t
     size_t yy_buffer_stack_max; /**< capacity of stack. */
     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
     char yy_hold_char;
-    int yy_n_chars;
-    int yyleng_r;
+    yy_size_t yy_n_chars;
+    yy_size_t yyleng_r;
     char *yy_c_buf_p;
     int yy_init;
     int yy_start;
@@ -617,7 +609,7 @@ FILE *jq_yyget_out (yyscan_t yyscanner );
 
 void jq_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
 
-int jq_yyget_leng (yyscan_t yyscanner );
+yy_size_t jq_yyget_leng (yyscan_t yyscanner );
 
 char *jq_yyget_text (yyscan_t yyscanner );
 
@@ -625,6 +617,10 @@ int jq_yyget_lineno (yyscan_t yyscanner );
 
 void jq_yyset_lineno (int line_number ,yyscan_t yyscanner );
 
+int jq_yyget_column  (yyscan_t yyscanner );
+
+void jq_yyset_column (int column_no ,yyscan_t yyscanner );
+
 YYSTYPE * jq_yyget_lval (yyscan_t yyscanner );
 
 void jq_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
@@ -671,12 +667,7 @@ static int input (yyscan_t yyscanner );
     
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -783,7 +774,7 @@ YY_DECL
 #line 32 "lexer.l"
 
 
-#line 787 "lexer.gen.c"
+#line 778 "lexer.gen.c"
 
     yylval = yylval_param;
 
@@ -840,13 +831,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 86 )
+                               if ( yy_current_state >= 88 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 143 );
+               while ( yy_base[yy_current_state] != 145 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -878,152 +869,157 @@ YY_RULE_SETUP
 case 2:
 YY_RULE_SETUP
 #line 36 "lexer.l"
-{ return EQ; }
+{ return NEQ; }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
 #line 37 "lexer.l"
-{ return AS; }
+{ return EQ; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
 #line 38 "lexer.l"
-{ return DEF; }
+{ return AS; }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
 #line 39 "lexer.l"
-{ return IF; }
+{ return DEF; }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
 #line 40 "lexer.l"
-{ return THEN; }
+{ return IF; }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
 #line 41 "lexer.l"
-{ return ELSE; }
+{ return THEN; }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
 #line 42 "lexer.l"
-{ return ELSE_IF; }
+{ return ELSE; }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
 #line 43 "lexer.l"
-{ return AND; }
+{ return ELSE_IF; }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
 #line 44 "lexer.l"
-{ return OR; }
+{ return AND; }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
 #line 45 "lexer.l"
-{ return END; }
+{ return OR; }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
 #line 46 "lexer.l"
-{ return DEFINEDOR; }
+{ return END; }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
 #line 47 "lexer.l"
-{ return SETPIPE; }
+{ return DEFINEDOR; }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
 #line 48 "lexer.l"
-{ return SETPLUS; }
+{ return SETPIPE; }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
 #line 49 "lexer.l"
-{ return SETMINUS; }
+{ return SETPLUS; }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
 #line 50 "lexer.l"
-{ return SETMULT; }
+{ return SETMINUS; }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
 #line 51 "lexer.l"
-{ return SETDIV; }
+{ return SETMULT; }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
 #line 52 "lexer.l"
-{ return SETDEFINEDOR; }
+{ return SETDIV; }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
 #line 53 "lexer.l"
-{ return LESSEQ; }
+{ return SETDEFINEDOR; }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
 #line 54 "lexer.l"
-{ return GREATEREQ; }
+{ return LESSEQ; }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
 #line 55 "lexer.l"
-{ return yytext[0];}
+{ return GREATEREQ; }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 57 "lexer.l"
+#line 56 "lexer.l"
+{ return yytext[0];}
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 58 "lexer.l"
 {
   return enter(yytext[0], YY_START, yyscanner);
 }
        YY_BREAK
-case 23:
+case 24:
 YY_RULE_SETUP
-#line 61 "lexer.l"
+#line 62 "lexer.l"
 {
   return try_exit(yytext[0], YY_START, yyscanner);
 }
        YY_BREAK
-case 24:
+case 25:
 YY_RULE_SETUP
-#line 66 "lexer.l"
+#line 67 "lexer.l"
 { 
    yylval->literal = jv_parse_sized(yytext, yyleng); return LITERAL; 
 }
        YY_BREAK
-case 25:
+case 26:
 YY_RULE_SETUP
-#line 70 "lexer.l"
+#line 71 "lexer.l"
 {
   yy_push_state(IN_QQSTRING, yyscanner);
   return QQSTRING_START;
 }
        YY_BREAK
 
-case 26:
+case 27:
 YY_RULE_SETUP
-#line 76 "lexer.l"
+#line 77 "lexer.l"
 {
     return enter(QQSTRING_INTERP_START, YY_START, yyscanner);
   }
        YY_BREAK
-case 27:
+case 28:
 YY_RULE_SETUP
-#line 79 "lexer.l"
+#line 80 "lexer.l"
 {
     yy_pop_state(yyscanner);
     return QQSTRING_END;
   }
        YY_BREAK
-case 28:
-/* rule 28 can match eol */
+case 29:
+/* rule 29 can match eol */
 YY_RULE_SETUP
-#line 83 "lexer.l"
+#line 84 "lexer.l"
 {
     /* pass escapes to the json parser */
     jv escapes = jv_string_fmt("\"%.*s\"", yyleng, yytext);
@@ -1032,45 +1028,45 @@ YY_RULE_SETUP
     return QQSTRING_TEXT;
   }
        YY_BREAK
-case 29:
-/* rule 29 can match eol */
+case 30:
+/* rule 30 can match eol */
 YY_RULE_SETUP
-#line 90 "lexer.l"
+#line 91 "lexer.l"
 {
     yylval->literal = jv_string_sized(yytext, yyleng);
     return QQSTRING_TEXT;
   }
        YY_BREAK
-case 30:
+case 31:
 YY_RULE_SETUP
-#line 94 "lexer.l"
+#line 95 "lexer.l"
 {
     return INVALID_CHARACTER;
   }
        YY_BREAK
 
-case 31:
+case 32:
 YY_RULE_SETUP
-#line 100 "lexer.l"
+#line 101 "lexer.l"
 { yylval->literal = jv_string(yytext); return IDENT;}
        YY_BREAK
-case 32:
-/* rule 32 can match eol */
+case 33:
+/* rule 33 can match eol */
 YY_RULE_SETUP
-#line 102 "lexer.l"
+#line 103 "lexer.l"
 {}
        YY_BREAK
-case 33:
+case 34:
 YY_RULE_SETUP
-#line 104 "lexer.l"
+#line 105 "lexer.l"
 { return INVALID_CHARACTER; }
        YY_BREAK
-case 34:
+case 35:
 YY_RULE_SETUP
-#line 106 "lexer.l"
+#line 107 "lexer.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 1074 "lexer.gen.c"
+#line 1070 "lexer.gen.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(IN_PAREN):
 case YY_STATE_EOF(IN_BRACKET):
@@ -1262,21 +1258,21 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
        else
                {
-                       int num_to_read =
+                       yy_size_t num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
                while ( num_to_read <= 0 )
                        { /* Not enough room in the buffer - grow it. */
 
                        /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
                        int yy_c_buf_p_offset =
                                (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
 
                        if ( b->yy_is_our_buffer )
                                {
-                               int new_size = b->yy_buf_size * 2;
+                               yy_size_t new_size = b->yy_buf_size * 2;
 
                                if ( new_size <= 0 )
                                        b->yy_buf_size += b->yy_buf_size / 8;
@@ -1307,7 +1303,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
                /* Read in more data. */
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       yyg->yy_n_chars, (size_t) num_to_read );
+                       yyg->yy_n_chars, num_to_read );
 
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
                }
@@ -1369,7 +1365,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 86 )
+                       if ( yy_current_state >= 88 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1398,12 +1394,13 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 86 )
+               if ( yy_current_state >= 88 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 85);
+       yy_is_jam = (yy_current_state == 87);
 
+       (void)yyg;
        return yy_is_jam ? 0 : yy_current_state;
 }
 
@@ -1432,7 +1429,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
                else
                        { /* need more input */
-                       int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
+                       yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
                        ++yyg->yy_c_buf_p;
 
                        switch ( yy_get_next_buffer( yyscanner ) )
@@ -1596,10 +1593,6 @@ static void jq_yy_load_buffer_state  (yyscan_t yyscanner)
        jq_yyfree((void *) b ,yyscanner );
 }
 
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-    
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a jq_yyrestart() or at EOF.
@@ -1716,7 +1709,7 @@ void jq_yypop_buffer_state (yyscan_t yyscanner)
  */
 static void jq_yyensure_buffer_stack (yyscan_t yyscanner)
 {
-       int num_to_alloc;
+       yy_size_t num_to_alloc;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
        if (!yyg->yy_buffer_stack) {
@@ -1814,7 +1807,7 @@ YY_BUFFER_STATE jq_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE jq_yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
+YY_BUFFER_STATE jq_yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len , yyscan_t yyscanner)
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -1969,7 +1962,7 @@ FILE *jq_yyget_out  (yyscan_t yyscanner)
 /** Get the length of the current token.
  * @param yyscanner The scanner object.
  */
-int jq_yyget_leng  (yyscan_t yyscanner)
+yy_size_t jq_yyget_leng  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yyleng;
@@ -2005,7 +1998,7 @@ void jq_yyset_lineno (int  line_number , yyscan_t yyscanner)
 
         /* lineno is only valid if an input buffer exists. */
         if (! YY_CURRENT_BUFFER )
-           yy_fatal_error( "jq_yyset_lineno called with no buffer" , yyscanner); 
+           YY_FATAL_ERROR( "jq_yyset_lineno called with no buffer" );
     
     yylineno = line_number;
 }
@@ -2020,7 +2013,7 @@ void jq_yyset_column (int  column_no , yyscan_t yyscanner)
 
         /* column is only valid if an input buffer exists. */
         if (! YY_CURRENT_BUFFER )
-           yy_fatal_error( "jq_yyset_column called with no buffer" , yyscanner); 
+           YY_FATAL_ERROR( "jq_yyset_column called with no buffer" );
     
     yycolumn = column_no;
 }
@@ -2256,7 +2249,7 @@ void jq_yyfree (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 106 "lexer.l"
+#line 107 "lexer.l"
 
 
 /* perhaps these should be calls... */
index bbc095b8ac285d9f3d8b8e40f72c332da26acb98..ee486e8aba2f87527d219f60e35e24a31b6bcaf8 100644 (file)
@@ -13,7 +13,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 37
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -132,15 +132,7 @@ typedef void* yyscan_t;
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
@@ -170,7 +162,7 @@ struct yy_buffer_state
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       int yy_n_chars;
+       yy_size_t yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -214,7 +206,7 @@ void jq_yypop_buffer_state (yyscan_t yyscanner );
 
 YY_BUFFER_STATE jq_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
 YY_BUFFER_STATE jq_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE jq_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
+YY_BUFFER_STATE jq_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
 
 void *jq_yyalloc (yy_size_t ,yyscan_t yyscanner );
 void *jq_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
@@ -222,7 +214,7 @@ void jq_yyfree (void * ,yyscan_t yyscanner );
 
 /* Begin user sect3 */
 
-#define jq_yywrap(n) 1
+#define jq_yywrap(yyscanner) 1
 #define YY_SKIP_YYWRAP
 
 #define yytext_ptr yytext_r
@@ -272,7 +264,7 @@ FILE *jq_yyget_out (yyscan_t yyscanner );
 
 void jq_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
 
-int jq_yyget_leng (yyscan_t yyscanner );
+yy_size_t jq_yyget_leng (yyscan_t yyscanner );
 
 char *jq_yyget_text (yyscan_t yyscanner );
 
@@ -280,6 +272,10 @@ int jq_yyget_lineno (yyscan_t yyscanner );
 
 void jq_yyset_lineno (int line_number ,yyscan_t yyscanner );
 
+int jq_yyget_column  (yyscan_t yyscanner );
+
+void jq_yyset_column (int column_no ,yyscan_t yyscanner );
+
 YYSTYPE * jq_yyget_lval (yyscan_t yyscanner );
 
 void jq_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
@@ -314,12 +310,7 @@ static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Number of entries by which start-condition stack grows. */
@@ -354,9 +345,9 @@ extern int jq_yylex \
 #undef YY_DECL
 #endif
 
-#line 106 "lexer.l"
+#line 107 "lexer.l"
 
 
-#line 361 "lexer.gen.h"
+#line 352 "lexer.gen.h"
 #undef jq_yyIN_HEADER
 #endif /* jq_yyHEADER_H */
index 346a94b9681432c233ef6acada24c8eacac0e6b7..79213801c54eac07ce581c95bcea9fe0484e22de 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.5.  */
+/* A Bison parser, made by GNU Bison 2.6.2.  */
 
 /* Bison implementation for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "2.6.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 1
 
 
 
 /* Copy the first part of user declarations.  */
-
-/* Line 268 of yacc.c  */
+/* Line 336 of yacc.c  */
 #line 1 "parser.y"
 
 #include <stdio.h>
 #include <string.h>
 #include "compile.h"
 
+typedef void* yyscan_t;
 
-/* Line 268 of yacc.c  */
-#line 78 "parser.gen.c"
 
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
+/* Line 336 of yacc.c  */
+#line 77 "parser.gen.c"
+
+# ifndef YY_NULL
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULL nullptr
+#  else
+#   define YY_NULL 0
+#  endif
+# endif
 
 /* Enabling verbose error messages.  */
 #ifdef YYERROR_VERBOSE
 # define YYERROR_VERBOSE 1
 #endif
 
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+/* In a future release of Bison, this section will be replaced
+   by #include "parser.gen.h".  */
+#ifndef YY_PARSER_GEN_H
+# define YY_PARSER_GEN_H
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
 #endif
-
 /* "%code requires" blocks.  */
-
-/* Line 288 of yacc.c  */
-#line 6 "parser.y"
+/* Line 350 of yacc.c  */
+#line 9 "parser.y"
 
 #include "locfile.h"
 #define YYLTYPE location
   } while (0)
  
 
-
-/* Line 288 of yacc.c  */
-#line 119 "parser.gen.c"
+/* Line 350 of yacc.c  */
+#line 125 "parser.gen.c"
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
      IDENT = 259,
      LITERAL = 260,
      EQ = 261,
-     DEFINEDOR = 262,
-     AS = 263,
-     DEF = 264,
-     IF = 265,
-     THEN = 266,
-     ELSE = 267,
-     ELSE_IF = 268,
-     END = 269,
-     AND = 270,
-     OR = 271,
-     SETPIPE = 272,
-     SETPLUS = 273,
-     SETMINUS = 274,
-     SETMULT = 275,
-     SETDIV = 276,
-     SETDEFINEDOR = 277,
-     LESSEQ = 278,
-     GREATEREQ = 279,
-     QQSTRING_START = 280,
-     QQSTRING_TEXT = 281,
-     QQSTRING_INTERP_START = 282,
-     QQSTRING_INTERP_END = 283,
-     QQSTRING_END = 284
+     NEQ = 262,
+     DEFINEDOR = 263,
+     AS = 264,
+     DEF = 265,
+     IF = 266,
+     THEN = 267,
+     ELSE = 268,
+     ELSE_IF = 269,
+     END = 270,
+     AND = 271,
+     OR = 272,
+     SETPIPE = 273,
+     SETPLUS = 274,
+     SETMINUS = 275,
+     SETMULT = 276,
+     SETDIV = 277,
+     SETDEFINEDOR = 278,
+     LESSEQ = 279,
+     GREATEREQ = 280,
+     QQSTRING_START = 281,
+     QQSTRING_TEXT = 282,
+     QQSTRING_INTERP_START = 283,
+     QQSTRING_INTERP_END = 284,
+     QQSTRING_END = 285
    };
 #endif
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 293 of yacc.c  */
-#line 24 "parser.y"
+/* Line 350 of yacc.c  */
+#line 27 "parser.y"
 
   jv literal;
   block blk;
 
 
-
-/* Line 293 of yacc.c  */
-#line 172 "parser.gen.c"
+/* Line 350 of yacc.c  */
+#line 176 "parser.gen.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -189,10 +193,25 @@ typedef struct YYLTYPE
 #endif
 
 
-/* Copy the second part of user declarations.  */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (block* answer, int* errors, struct locfile* locations, yyscan_t lexer);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !YY_PARSER_GEN_H  */
 
-/* Line 343 of yacc.c  */
-#line 85 "parser.y"
+/* Copy the second part of user declarations.  */
+/* Line 353 of yacc.c  */
+#line 89 "parser.y"
 
 #include "lexer.gen.h"
 #define FAIL(loc, msg)                                   \
@@ -250,6 +269,7 @@ static block gen_binop(block a, block b, int op) {
   case '*': funcname = "_multiply"; break;
   case '/': funcname = "_divide"; break;
   case EQ: funcname = "_equal"; break;
+  case NEQ: funcname = "_notequal"; break;
   case '<': funcname = "_less"; break;
   case '>': funcname = "_greater"; break;
   case LESSEQ: funcname = "_lesseq"; break;
@@ -279,9 +299,8 @@ static block gen_update(block a, block op, int optype) {
 }
 
 
-
-/* Line 343 of yacc.c  */
-#line 285 "parser.gen.c"
+/* Line 353 of yacc.c  */
+#line 304 "parser.gen.c"
 
 #ifdef short
 # undef short
@@ -387,6 +406,7 @@ YYID (yyi)
 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
 #     ifndef EXIT_SUCCESS
 #      define EXIT_SUCCESS 0
 #     endif
@@ -480,20 +500,20 @@ union yyalloc
 #endif
 
 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from FROM to TO.  The source and destination do
+/* Copy COUNT objects from SRC to DST.  The source and destination do
    not overlap.  */
 # ifndef YYCOPY
 #  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
 #  else
-#   define YYCOPY(To, From, Count)             \
-      do                                       \
-       {                                       \
-         YYSIZE_T yyi;                         \
-         for (yyi = 0; yyi < (Count); yyi++)   \
-           (To)[yyi] = (From)[yyi];            \
-       }                                       \
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYSIZE_T yyi;                         \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
       while (YYID (0))
 #  endif
 # endif
@@ -502,20 +522,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  35
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   808
+#define YYLAST   831
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  49
+#define YYNTOKENS  50
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  12
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  68
+#define YYNRULES  69
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  147
+#define YYNSTATES  149
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   284
+#define YYMAXUTOK   285
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -526,16 +546,16 @@ static const yytype_uint8 yytranslate[] =
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,    40,     2,     2,     2,
-      42,    43,    38,    36,    32,    37,    44,    39,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    41,    30,
-      34,    33,    35,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,    41,     2,     2,     2,
+      43,    44,    39,    37,    33,    38,    45,    40,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    42,    31,
+      35,    34,    36,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    45,     2,    46,     2,     2,     2,     2,     2,     2,
+       2,    46,     2,    47,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    47,    31,    48,     2,     2,     2,     2,
+       2,     2,     2,    48,    32,    49,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -551,74 +571,75 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29
+      25,    26,    27,    28,    29,    30
 };
 
 #if YYDEBUG
 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    YYRHS.  */
-static const yytype_uint8 yyprhs[] =
+static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     5,     7,     8,    11,    14,    21,    27,
       31,    35,    39,    43,    47,    51,    55,    59,    63,    67,
       71,    75,    79,    83,    87,    91,    95,    99,   103,   107,
-     111,   115,   117,   119,   123,   129,   138,   139,   142,   147,
-     153,   157,   161,   163,   165,   169,   172,   177,   181,   183,
-     187,   191,   194,   198,   201,   203,   208,   212,   216,   221,
-     225,   226,   228,   232,   236,   240,   244,   246,   252
+     111,   115,   119,   121,   123,   127,   133,   142,   143,   146,
+     151,   157,   161,   165,   167,   169,   173,   176,   181,   185,
+     187,   191,   195,   198,   202,   205,   207,   212,   216,   220,
+     225,   229,   230,   232,   236,   240,   244,   248,   250,   256
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      50,     0,    -1,    52,    -1,    51,    -1,    -1,    54,    51,
-      -1,    54,    52,    -1,    58,     8,    40,     4,    31,    52,
-      -1,    10,    52,    11,    52,    56,    -1,    10,    52,     1,
-      -1,    52,    33,    52,    -1,    52,    16,    52,    -1,    52,
-      15,    52,    -1,    52,     7,    52,    -1,    52,    22,    52,
-      -1,    52,    17,    52,    -1,    52,    31,    52,    -1,    52,
-      32,    52,    -1,    52,    36,    52,    -1,    52,    18,    52,
-      -1,    52,    37,    52,    -1,    52,    19,    52,    -1,    52,
-      38,    52,    -1,    52,    20,    52,    -1,    52,    39,    52,
-      -1,    52,    21,    52,    -1,    52,     6,    52,    -1,    52,
-      34,    52,    -1,    52,    35,    52,    -1,    52,    23,    52,
-      -1,    52,    24,    52,    -1,    53,    -1,    58,    -1,    25,
-      55,    29,    -1,     9,     4,    41,    52,    30,    -1,     9,
-       4,    42,     4,    43,    41,    52,    30,    -1,    -1,    55,
-      26,    -1,    55,    27,    52,    28,    -1,    13,    52,    11,
-      52,    56,    -1,    12,    52,    14,    -1,    57,    31,    57,
-      -1,    58,    -1,    44,    -1,    58,    44,     4,    -1,    44,
-       4,    -1,    58,    45,    52,    46,    -1,    58,    45,    46,
-      -1,     5,    -1,    42,    52,    43,    -1,    45,    52,    46,
-      -1,    45,    46,    -1,    47,    59,    48,    -1,    40,     4,
-      -1,     4,    -1,     4,    42,    52,    43,    -1,    42,     1,
-      43,    -1,    45,     1,    46,    -1,    58,    45,     1,    46,
-      -1,    47,     1,    48,    -1,    -1,    60,    -1,    60,    32,
-      59,    -1,     1,    32,    59,    -1,     4,    41,    57,    -1,
-      53,    41,    57,    -1,     4,    -1,    42,    52,    43,    41,
-      57,    -1,    42,     1,    43,    41,    57,    -1
+      51,     0,    -1,    53,    -1,    52,    -1,    -1,    55,    52,
+      -1,    55,    53,    -1,    59,     9,    41,     4,    32,    53,
+      -1,    11,    53,    12,    53,    57,    -1,    11,    53,     1,
+      -1,    53,    34,    53,    -1,    53,    17,    53,    -1,    53,
+      16,    53,    -1,    53,     8,    53,    -1,    53,    23,    53,
+      -1,    53,    18,    53,    -1,    53,    32,    53,    -1,    53,
+      33,    53,    -1,    53,    37,    53,    -1,    53,    19,    53,
+      -1,    53,    38,    53,    -1,    53,    20,    53,    -1,    53,
+      39,    53,    -1,    53,    21,    53,    -1,    53,    40,    53,
+      -1,    53,    22,    53,    -1,    53,     6,    53,    -1,    53,
+       7,    53,    -1,    53,    35,    53,    -1,    53,    36,    53,
+      -1,    53,    24,    53,    -1,    53,    25,    53,    -1,    54,
+      -1,    59,    -1,    26,    56,    30,    -1,    10,     4,    42,
+      53,    31,    -1,    10,     4,    43,     4,    44,    42,    53,
+      31,    -1,    -1,    56,    27,    -1,    56,    28,    53,    29,
+      -1,    14,    53,    12,    53,    57,    -1,    13,    53,    15,
+      -1,    58,    32,    58,    -1,    59,    -1,    45,    -1,    59,
+      45,     4,    -1,    45,     4,    -1,    59,    46,    53,    47,
+      -1,    59,    46,    47,    -1,     5,    -1,    43,    53,    44,
+      -1,    46,    53,    47,    -1,    46,    47,    -1,    48,    60,
+      49,    -1,    41,     4,    -1,     4,    -1,     4,    43,    53,
+      44,    -1,    43,     1,    44,    -1,    46,     1,    47,    -1,
+      59,    46,     1,    47,    -1,    48,     1,    49,    -1,    -1,
+      61,    -1,    61,    33,    60,    -1,     1,    33,    60,    -1,
+       4,    42,    58,    -1,    54,    42,    58,    -1,     4,    -1,
+      43,    53,    44,    42,    58,    -1,    43,     1,    44,    42,
+      58,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   174,   174,   177,   182,   185,   190,   194,   201,   204,
-     209,   218,   222,   226,   230,   234,   238,   242,   246,   250,
-     254,   258,   262,   266,   270,   274,   278,   282,   286,   290,
-     294,   298,   302,   307,   312,   318,   326,   329,   332,   338,
-     341,   346,   350,   356,   359,   362,   366,   369,   372,   375,
-     378,   381,   384,   389,   393,   397,   407,   408,   409,   410,
-     413,   416,   417,   418,   421,   424,   427,   431,   434
+       0,   179,   179,   182,   187,   190,   195,   199,   206,   209,
+     214,   223,   227,   231,   235,   239,   243,   247,   251,   255,
+     259,   263,   267,   271,   275,   279,   283,   287,   291,   295,
+     299,   303,   307,   311,   316,   321,   327,   335,   338,   341,
+     347,   350,   355,   359,   365,   368,   371,   375,   378,   381,
+     384,   387,   390,   393,   398,   402,   406,   416,   417,   418,
+     419,   422,   425,   426,   427,   430,   433,   436,   440,   443
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 1
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "INVALID_CHARACTER", "IDENT", "LITERAL",
-  "\"==\"", "\"//\"", "\"as\"", "\"def\"", "\"if\"", "\"then\"",
+  "\"==\"", "\"!=\"", "\"//\"", "\"as\"", "\"def\"", "\"if\"", "\"then\"",
   "\"else\"", "\"elif\"", "\"end\"", "\"and\"", "\"or\"", "\"|=\"",
   "\"+=\"", "\"-=\"", "\"*=\"", "\"/=\"", "\"//=\"", "\"<=\"", "\">=\"",
   "QQSTRING_START", "QQSTRING_TEXT", "QQSTRING_INTERP_START",
@@ -626,7 +647,7 @@ static const char *const yytname[] =
   "'>'", "'+'", "'-'", "'*'", "'/'", "'$'", "':'", "'('", "')'", "'.'",
   "'['", "']'", "'{'", "'}'", "$accept", "TopLevel", "FuncDefs", "Exp",
   "String", "FuncDef", "QQString", "ElseBody", "ExpD", "Term", "MkDict",
-  "MkDictPair", 0
+  "MkDictPair", YY_NULL
 };
 #endif
 
@@ -638,21 +659,21 @@ static const yytype_uint16 yytoknum[] =
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-      59,   124,    44,    61,    60,    62,    43,    45,    42,    47,
-      36,    58,    40,    41,    46,    91,    93,   123,   125
+     285,    59,   124,    44,    61,    60,    62,    43,    45,    42,
+      47,    36,    58,    40,    41,    46,    91,    93,   123,   125
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    49,    50,    50,    51,    51,    52,    52,    52,    52,
-      52,    52,    52,    52,    52,    52,    52,    52,    52,    52,
-      52,    52,    52,    52,    52,    52,    52,    52,    52,    52,
-      52,    52,    52,    53,    54,    54,    55,    55,    55,    56,
-      56,    57,    57,    58,    58,    58,    58,    58,    58,    58,
-      58,    58,    58,    58,    58,    58,    58,    58,    58,    58,
-      59,    59,    59,    59,    60,    60,    60,    60,    60
+       0,    50,    51,    51,    52,    52,    53,    53,    53,    53,
+      53,    53,    53,    53,    53,    53,    53,    53,    53,    53,
+      53,    53,    53,    53,    53,    53,    53,    53,    53,    53,
+      53,    53,    53,    53,    54,    55,    55,    56,    56,    56,
+      57,    57,    58,    58,    59,    59,    59,    59,    59,    59,
+      59,    59,    59,    59,    59,    59,    59,    59,    59,    59,
+      59,    60,    60,    60,    60,    61,    61,    61,    61,    61
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -661,10 +682,10 @@ static const yytype_uint8 yyr2[] =
        0,     2,     1,     1,     0,     2,     2,     6,     5,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     1,     1,     3,     5,     8,     0,     2,     4,     5,
-       3,     3,     1,     1,     3,     2,     4,     3,     1,     3,
-       3,     2,     3,     2,     1,     4,     3,     3,     4,     3,
-       0,     1,     3,     3,     3,     3,     1,     5,     5
+       3,     3,     1,     1,     3,     5,     8,     0,     2,     4,
+       5,     3,     3,     1,     1,     3,     2,     4,     3,     1,
+       3,     3,     2,     3,     2,     1,     4,     3,     3,     4,
+       3,     0,     1,     3,     3,     3,     3,     1,     5,     5
 };
 
 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -672,258 +693,264 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       4,    54,    48,     0,     0,    36,     0,     0,    43,     0,
-       0,     0,     3,     2,    31,     4,    32,     0,     0,     0,
-       0,     0,    53,     0,     0,    45,     0,    51,     0,     0,
-      66,     0,     0,     0,    61,     1,     0,     0,     0,     0,
+       4,    55,    49,     0,     0,    37,     0,     0,    44,     0,
+       0,     0,     3,     2,    32,     4,    33,     0,     0,     0,
+       0,     0,    54,     0,     0,    46,     0,    52,     0,     0,
+      67,     0,     0,     0,    62,     1,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     5,     6,     0,
-       0,     0,     0,     0,     0,     9,     0,    37,     0,    33,
-      56,    49,    57,    50,     0,    59,     0,     0,     0,     0,
-      52,     0,    26,    13,    12,    11,    15,    19,    21,    23,
-      25,    14,    29,    30,    16,    17,    10,    27,    28,    18,
-      20,    22,    24,     0,    44,     0,    47,     0,    55,     0,
-       0,     0,     0,     0,    63,    64,    42,     0,     0,    65,
-      62,     0,    58,    46,    34,     0,     0,     0,     8,    38,
-       0,     0,     0,     0,     0,     0,     0,    41,    68,    67,
-       7,     0,    40,     0,    35,     0,    39
+       0,     0,     0,     0,     0,     0,     0,     0,     5,     6,
+       0,     0,     0,     0,     0,     0,     9,     0,    38,     0,
+      34,    57,    50,    58,    51,     0,    60,     0,     0,     0,
+       0,    53,     0,    26,    27,    13,    12,    11,    15,    19,
+      21,    23,    25,    14,    30,    31,    16,    17,    10,    28,
+      29,    18,    20,    22,    24,     0,    45,     0,    48,     0,
+      56,     0,     0,     0,     0,     0,    64,    65,    43,     0,
+       0,    66,    63,     0,    59,    47,    35,     0,     0,     0,
+       8,    39,     0,     0,     0,     0,     0,     0,     0,    42,
+      69,    68,     7,     0,    41,     0,    36,     0,    40
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    11,    12,    58,    14,    20,    21,   128,   115,    16,
+      -1,    11,    12,    59,    14,    20,    21,   130,   117,    16,
       33,    34
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -74
+#define YYPACT_NINF -75
 static const yytype_int16 yypact[] =
 {
-     194,   -40,   -74,    10,   194,   -74,    16,   137,    18,    77,
-      63,    28,   -74,   651,   -74,   194,    54,   194,   -26,   311,
-     194,   -16,   -74,   -13,   345,   -74,   -17,   -74,   236,   -27,
-      -8,   150,    -7,    12,     3,   -74,   194,   194,   194,   194,
-     194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
-     194,   194,   194,   194,   194,   194,   194,   -74,   651,    34,
-      71,   127,   379,   194,    73,   -74,   194,   -74,   194,   -74,
-     -74,   -74,   -74,   -74,    72,   -74,   181,   -11,   413,   181,
-     -74,    72,   177,   719,   763,   769,   744,   744,   744,   744,
-     744,   744,   177,   177,   685,   719,   744,   177,   177,   -14,
-     -14,   -74,   -74,    75,   -74,    37,   -74,   270,   -74,   481,
-      41,   447,   515,    48,   -74,    58,   -18,    44,    49,    58,
-     -74,    60,   -74,   -74,   -74,    51,   194,   194,   -74,   -74,
-     181,   181,   181,   194,   194,   549,   583,   -74,    58,    58,
-     685,   617,   -74,   194,   -74,   447,   -74
+     175,   -41,   -75,    10,   175,   -75,    16,   129,    18,    78,
+      64,    28,   -75,   645,   -75,   175,    52,   175,   -27,   295,
+     175,   -17,   -75,   -14,   330,   -75,   -18,   -75,   218,   -28,
+     -10,   152,    -8,   -16,     2,   -75,   175,   175,   175,   175,
+     175,   175,   175,   175,   175,   175,   175,   175,   175,   175,
+     175,   175,   175,   175,   175,   175,   175,   175,   -75,   645,
+      22,    71,   101,   365,   175,    72,   -75,   175,   -75,   175,
+     -75,   -75,   -75,   -75,   -75,    73,   -75,   146,    34,   400,
+     146,   -75,    73,   785,   785,   715,   791,   765,   740,   740,
+     740,   740,   740,   740,   785,   785,   680,   715,   740,   785,
+     785,   -15,   -15,   -75,   -75,    76,   -75,    37,   -75,   253,
+     -75,   470,    41,   435,   505,    48,   -75,    54,   -19,    45,
+      49,    54,   -75,    60,   -75,   -75,   -75,    51,   175,   175,
+     -75,   -75,   146,   146,   146,   175,   175,   540,   575,   -75,
+      54,    54,   680,   610,   -75,   175,   -75,   435,   -75
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-     -74,   -74,    78,     0,    -9,     8,   -74,   -51,   -61,   -73,
-     -62,   -74
+     -75,   -75,    79,     0,    -9,     8,   -75,   -52,   -62,   -74,
+     -63,   -75
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -61
+#define YYTABLE_NINF -62
 static const yytype_int16 yytable[] =
 {
-      13,    32,    17,   116,    19,    74,   116,    24,    15,    28,
-      67,    68,   114,    69,    18,    63,    64,    62,   119,   120,
-      22,    75,    25,    15,    55,    56,    60,    61,    35,    72,
-      70,    78,   117,    76,    79,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   116,   116,   116,
-      80,   107,    59,   109,    29,    32,   111,    30,   112,   137,
-     138,   139,    32,   113,   103,   104,    30,   110,    26,   121,
-      74,     1,     2,   122,   125,   131,     3,     4,     5,   130,
-     132,   133,   134,    57,   146,     0,     0,     5,    60,    61,
-       0,     0,     5,     0,     0,    31,     0,     0,     0,     0,
-       0,   -60,     0,     0,    31,     0,     0,     6,     0,     7,
-     -60,     8,     9,    27,    10,     0,   135,   136,   105,     0,
-       0,     1,     2,   140,   141,     0,     3,     4,    23,     0,
-       0,     1,     2,   145,     0,     0,     3,     4,     0,     0,
-       0,    77,     5,     0,     1,     2,     0,     0,     0,     3,
-       4,     0,     5,     0,     0,     0,     0,     6,     0,     7,
-       0,     8,     9,   106,    10,     5,     0,     6,     0,     7,
-       0,     8,     9,   -61,    10,     1,     2,     0,     0,     0,
-       6,     0,     7,     0,     8,     9,     0,    10,     1,     2,
-     -61,   -61,     0,     3,     4,     0,     0,     0,     0,     0,
-       0,   -61,   -61,    53,    54,    55,    56,     0,     0,     5,
-       0,     6,     0,     7,     0,     8,     9,     0,    10,     0,
-       0,     0,     0,     0,     6,     0,     7,     0,     8,     9,
-       0,    10,    36,    37,     0,     0,     0,     0,     0,     0,
-       0,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,     0,     0,     0,     0,     0,     0,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    36,    37,     0,     0,
-       0,     0,    73,     0,     0,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,     0,     0,     0,     0,     0,
-       0,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-       0,     0,    65,     0,     0,     0,   123,    36,    37,     0,
-       0,     0,    66,     0,     0,     0,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
-       0,     0,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    36,    37,     0,     0,     0,     0,     0,     0,     0,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-       0,     0,     0,     0,     0,     0,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    36,    37,     0,    71,     0,
-       0,     0,     0,     0,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    36,
-      37,     0,   108,     0,     0,     0,     0,     0,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,     0,     0,
-       0,     0,     0,     0,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    36,    37,     0,   118,     0,     0,   126,
-     127,     0,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,     0,     0,     0,     0,     0,     0,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    36,    37,     0,
-       0,     0,     0,     0,     0,     0,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
-       0,   124,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    36,    37,     0,     0,     0,     0,     0,     0,     0,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-       0,     0,     0,   129,     0,     0,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    36,    37,     0,     0,     0,
-       0,     0,     0,   142,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    36,
-      37,     0,     0,     0,   143,     0,     0,     0,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,     0,     0,
-       0,     0,     0,     0,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    36,    37,     0,     0,     0,     0,     0,
-       0,     0,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,     0,     0,     0,     0,     0,   144,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    36,    37,     0,
-       0,     0,     0,     0,     0,     0,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
-       0,     0,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    36,    37,     0,     0,     0,     0,     0,     0,     0,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-       0,     0,     0,     0,     0,     0,     0,    49,    50,    51,
-      52,    53,    54,    55,    56,    36,    37,     0,     0,     0,
-       0,     0,     0,     0,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
-      36,     0,    50,    51,    52,    53,    54,    55,    56,    38,
-      39,   -61,   -61,   -61,   -61,   -61,   -61,    46,    47,    36,
-       0,     0,     0,     0,     0,    36,     0,   -61,    51,    52,
-      53,    54,    55,    56,    38,     0,    46,    47,     0,     0,
-       0,     0,    46,    47,     0,     0,     0,    51,    52,    53,
-      54,    55,    56,    51,    52,    53,    54,    55,    56
+      13,    32,    17,   118,    19,    75,   118,    24,    15,    28,
+      68,    69,   116,    70,    18,    64,    65,    63,   121,   122,
+      22,    76,    25,    15,    56,    57,    61,    62,    35,    73,
+      71,    79,    77,    81,    80,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   118,   118,
+     118,    60,   109,   105,   111,    29,    32,   113,    30,   114,
+     139,   140,   141,    32,   115,   106,   112,    30,   119,    26,
+     123,    75,     1,     2,   124,   127,   132,   133,     3,     4,
+       5,   134,   135,   136,    58,   148,     0,    61,    62,     5,
+       0,     0,   107,     0,     5,     1,     2,    31,     0,     0,
+       0,     3,     4,   -61,     0,     0,    31,     0,     0,     6,
+       0,     7,   -61,     8,     9,    27,    10,     5,   137,   138,
+      23,     0,     0,     1,     2,   142,   143,     0,     0,     3,
+       4,     0,     6,     0,     7,   147,     8,     9,   108,    10,
+       1,     2,     0,    78,     0,     5,     1,     2,     0,     0,
+       0,     0,     3,     4,     0,     0,     0,     0,     0,     0,
+       6,     0,     7,     0,     8,     9,     0,    10,     5,     1,
+       2,     0,     0,     0,     0,     3,     4,     6,     0,     7,
+       0,     8,     9,     6,    10,     7,     0,     8,     9,     0,
+      10,     5,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     6,     0,     7,     0,
+       8,     9,     0,    10,    36,    37,    38,     0,     0,     0,
+       0,     0,     0,     0,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,     0,     0,     0,     0,     0,     0,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    36,
+      37,    38,     0,     0,     0,    74,     0,     0,     0,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,     0,
+       0,     0,     0,     0,     0,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,     0,     0,    66,     0,     0,     0,
+     125,    36,    37,    38,     0,     0,     0,    67,     0,     0,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,     0,     0,     0,     0,     0,     0,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    36,    37,    38,     0,
+       0,     0,     0,     0,     0,     0,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,     0,     0,     0,     0,
+       0,     0,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    36,    37,    38,    72,     0,     0,     0,     0,     0,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,     0,     0,     0,     0,     0,     0,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    36,    37,    38,   110,
+       0,     0,     0,     0,     0,     0,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,     0,     0,     0,     0,
+       0,     0,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    36,    37,    38,   120,     0,     0,     0,   128,   129,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,     0,     0,     0,     0,     0,     0,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    36,    37,    38,     0,
+       0,     0,     0,     0,     0,     0,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,     0,     0,     0,     0,
+       0,   126,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    36,    37,    38,     0,     0,     0,     0,     0,     0,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,     0,     0,     0,   131,     0,     0,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    36,    37,    38,     0,
+       0,     0,     0,     0,     0,   144,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,     0,     0,     0,     0,
+       0,     0,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    36,    37,    38,     0,     0,     0,   145,     0,     0,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,     0,     0,     0,     0,     0,     0,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    36,    37,    38,     0,
+       0,     0,     0,     0,     0,     0,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,     0,     0,     0,     0,
+       0,   146,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    36,    37,    38,     0,     0,     0,     0,     0,     0,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,     0,     0,     0,     0,     0,     0,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    36,    37,    38,     0,
+       0,     0,     0,     0,     0,     0,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,     0,     0,     0,     0,
+       0,     0,     0,    50,    51,    52,    53,    54,    55,    56,
+      57,    36,    37,    38,     0,     0,     0,     0,     0,     0,
+       0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,     0,     0,     0,     0,     0,    36,    37,     0,    51,
+      52,    53,    54,    55,    56,    57,    39,    40,   -62,   -62,
+     -62,   -62,   -62,   -62,    47,    48,     0,     0,     0,     0,
+       0,    36,    37,     0,   -62,    52,    53,    54,    55,    56,
+      57,    39,     0,     0,     0,     0,     0,     0,     0,    47,
+      48,   -62,   -62,     0,     0,     0,     0,    36,    37,     0,
+      52,    53,    54,    55,    56,    57,     0,     0,     0,   -62,
+     -62,     0,     0,     0,     0,    47,    48,     0,     0,     0,
+     -62,   -62,    54,    55,    56,    57,    52,    53,    54,    55,
+      56,    57
 };
 
 #define yypact_value_is_default(yystate) \
-  ((yystate) == (-74))
+  ((yystate) == (-75))
 
 #define yytable_value_is_error(yytable_value) \
-  ((yytable_value) == (-61))
+  ((yytable_value) == (-62))
 
 static const yytype_int16 yycheck[] =
 {
-       0,    10,    42,    76,     4,    32,    79,     7,     0,     9,
-      26,    27,    74,    29,     4,    41,    42,    17,    79,    81,
-       4,    48,     4,    15,    38,    39,    44,    45,     0,    46,
-      43,    31,    43,    41,    41,    32,    36,    37,    38,    39,
+       0,    10,    43,    77,     4,    33,    80,     7,     0,     9,
+      27,    28,    75,    30,     4,    42,    43,    17,    80,    82,
+       4,    49,     4,    15,    39,    40,    45,    46,     0,    47,
+      44,    31,    42,    49,    42,    33,    36,    37,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,   130,   131,   132,
-      48,    61,     8,    63,     1,    74,    66,     4,    68,   130,
-     131,   132,    81,     1,    40,     4,     4,     4,     1,     4,
-      32,     4,     5,    46,    43,    41,     9,    10,    25,    31,
-      41,    31,    41,    15,   145,    -1,    -1,    25,    44,    45,
-      -1,    -1,    25,    -1,    -1,    42,    -1,    -1,    -1,    -1,
-      -1,    48,    -1,    -1,    42,    -1,    -1,    40,    -1,    42,
-      48,    44,    45,    46,    47,    -1,   126,   127,     1,    -1,
-      -1,     4,     5,   133,   134,    -1,     9,    10,     1,    -1,
-      -1,     4,     5,   143,    -1,    -1,     9,    10,    -1,    -1,
-      -1,     1,    25,    -1,     4,     5,    -1,    -1,    -1,     9,
-      10,    -1,    25,    -1,    -1,    -1,    -1,    40,    -1,    42,
-      -1,    44,    45,    46,    47,    25,    -1,    40,    -1,    42,
-      -1,    44,    45,     6,    47,     4,     5,    -1,    -1,    -1,
-      40,    -1,    42,    -1,    44,    45,    -1,    47,     4,     5,
-      23,    24,    -1,     9,    10,    -1,    -1,    -1,    -1,    -1,
-      -1,    34,    35,    36,    37,    38,    39,    -1,    -1,    25,
-      -1,    40,    -1,    42,    -1,    44,    45,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    40,    -1,    42,    -1,    44,    45,
-      -1,    47,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    -1,    -1,    -1,    -1,    -1,    -1,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,     6,     7,    -1,    -1,
-      -1,    -1,    46,    -1,    -1,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
+      50,    51,    52,    53,    54,    55,    56,    57,   132,   133,
+     134,     9,    62,    41,    64,     1,    75,    67,     4,    69,
+     132,   133,   134,    82,     1,     4,     4,     4,    44,     1,
+       4,    33,     4,     5,    47,    44,    32,    42,    10,    11,
+      26,    42,    32,    42,    15,   147,    -1,    45,    46,    26,
+      -1,    -1,     1,    -1,    26,     4,     5,    43,    -1,    -1,
+      -1,    10,    11,    49,    -1,    -1,    43,    -1,    -1,    41,
+      -1,    43,    49,    45,    46,    47,    48,    26,   128,   129,
+       1,    -1,    -1,     4,     5,   135,   136,    -1,    -1,    10,
+      11,    -1,    41,    -1,    43,   145,    45,    46,    47,    48,
+       4,     5,    -1,     1,    -1,    26,     4,     5,    -1,    -1,
+      -1,    -1,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
+      41,    -1,    43,    -1,    45,    46,    -1,    48,    26,     4,
+       5,    -1,    -1,    -1,    -1,    10,    11,    41,    -1,    43,
+      -1,    45,    46,    41,    48,    43,    -1,    45,    46,    -1,
+      48,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    43,    -1,
+      45,    46,    -1,    48,     6,     7,     8,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,     6,
+       7,     8,    -1,    -1,    -1,    47,    -1,    -1,    -1,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    -1,
+      -1,    -1,    -1,    -1,    -1,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    -1,    -1,     1,    -1,    -1,    -1,
+      47,     6,     7,     8,    -1,    -1,    -1,    12,    -1,    -1,
+      -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    -1,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,     6,     7,     8,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
+      -1,    -1,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,     6,     7,     8,    44,    -1,    -1,    -1,    -1,    -1,
+      -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    -1,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,     6,     7,     8,    44,
+      -1,    -1,    -1,    -1,    -1,    -1,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
+      -1,    -1,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,     6,     7,     8,    44,    -1,    -1,    -1,    13,    14,
+      -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    -1,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,     6,     7,     8,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
       -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      -1,    -1,     1,    -1,    -1,    -1,    46,     6,     7,    -1,
-      -1,    -1,    11,    -1,    -1,    -1,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
-      -1,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      -1,    -1,    -1,    -1,    -1,    -1,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,     6,     7,    -1,    43,    -1,
-      -1,    -1,    -1,    -1,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,     6,
-       7,    -1,    43,    -1,    -1,    -1,    -1,    -1,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    -1,    -1,
-      -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,     6,     7,    -1,    43,    -1,    -1,    12,
-      13,    -1,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    -1,    -1,    -1,    -1,    -1,    -1,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,     6,     7,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
-      -1,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      -1,    -1,    -1,    28,    -1,    -1,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,     6,     7,    -1,    -1,    -1,
-      -1,    -1,    -1,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,     6,
-       7,    -1,    -1,    -1,    11,    -1,    -1,    -1,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    -1,    -1,
-      -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,     6,     7,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,     6,     7,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
-      -1,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
-      35,    36,    37,    38,    39,     6,     7,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,
-       6,    -1,    33,    34,    35,    36,    37,    38,    39,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,     6,
-      -1,    -1,    -1,    -1,    -1,     6,    -1,    33,    34,    35,
-      36,    37,    38,    39,    15,    -1,    23,    24,    -1,    -1,
-      -1,    -1,    23,    24,    -1,    -1,    -1,    34,    35,    36,
-      37,    38,    39,    34,    35,    36,    37,    38,    39
+      40,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    -1,    -1,    -1,    29,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,     6,     7,     8,    -1,
+      -1,    -1,    -1,    -1,    -1,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
+      -1,    -1,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,     6,     7,     8,    -1,    -1,    -1,    12,    -1,    -1,
+      -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    -1,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,     6,     7,     8,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
+      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    -1,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,     6,     7,     8,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    33,    34,    35,    36,    37,    38,    39,
+      40,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    -1,    -1,    -1,    -1,    -1,     6,     7,    -1,    34,
+      35,    36,    37,    38,    39,    40,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
+      -1,     6,     7,    -1,    34,    35,    36,    37,    38,    39,
+      40,    16,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,
+      25,     6,     7,    -1,    -1,    -1,    -1,     6,     7,    -1,
+      35,    36,    37,    38,    39,    40,    -1,    -1,    -1,    24,
+      25,    -1,    -1,    -1,    -1,    24,    25,    -1,    -1,    -1,
+      35,    36,    37,    38,    39,    40,    35,    36,    37,    38,
+      39,    40
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     4,     5,     9,    10,    25,    40,    42,    44,    45,
-      47,    50,    51,    52,    53,    54,    58,    42,     4,    52,
-      54,    55,     4,     1,    52,     4,     1,    46,    52,     1,
-       4,    42,    53,    59,    60,     0,     6,     7,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    51,    52,     8,
-      44,    45,    52,    41,    42,     1,    11,    26,    27,    29,
-      43,    43,    46,    46,    32,    48,    41,     1,    52,    41,
-      48,    32,    52,    52,    52,    52,    52,    52,    52,    52,
-      52,    52,    52,    52,    52,    52,    52,    52,    52,    52,
-      52,    52,    52,    40,     4,     1,    46,    52,    43,    52,
-       4,    52,    52,     1,    59,    57,    58,    43,    43,    57,
-      59,     4,    46,    46,    30,    43,    12,    13,    56,    28,
-      31,    41,    41,    31,    41,    52,    52,    57,    57,    57,
-      52,    52,    14,    11,    30,    52,    56
+       0,     4,     5,    10,    11,    26,    41,    43,    45,    46,
+      48,    51,    52,    53,    54,    55,    59,    43,     4,    53,
+      55,    56,     4,     1,    53,     4,     1,    47,    53,     1,
+       4,    43,    54,    60,    61,     0,     6,     7,     8,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    52,    53,
+       9,    45,    46,    53,    42,    43,     1,    12,    27,    28,
+      30,    44,    44,    47,    47,    33,    49,    42,     1,    53,
+      42,    49,    33,    53,    53,    53,    53,    53,    53,    53,
+      53,    53,    53,    53,    53,    53,    53,    53,    53,    53,
+      53,    53,    53,    53,    53,    41,     4,     1,    47,    53,
+      44,    53,     4,    53,    53,     1,    60,    58,    59,    44,
+      44,    58,    60,     4,    47,    47,    31,    44,    13,    14,
+      57,    29,    32,    42,    42,    32,    42,    53,    53,    58,
+      58,    58,    53,    53,    15,    12,    31,    53,    57
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -953,17 +980,18 @@ static const yytype_uint8 yystos[] =
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                 \
-do                                                             \
-  if (yychar == YYEMPTY && yylen == 1)                         \
-    {                                                          \
-      yychar = (Token);                                                \
-      yylval = (Value);                                                \
-      YYPOPSTACK (1);                                          \
-      goto yybackup;                                           \
-    }                                                          \
-  else                                                         \
-    {                                                          \
+#define YYBACKUP(Token, Value)                                  \
+do                                                              \
+  if (yychar == YYEMPTY)                                        \
+    {                                                           \
+      yychar = (Token);                                         \
+      yylval = (Value);                                         \
+      YYPOPSTACK (yylen);                                       \
+      yystate = *yyssp;                                         \
+      goto yybackup;                                            \
+    }                                                           \
+  else                                                          \
+    {                                                           \
       yyerror (&yylloc, answer, errors, locations, lexer, YY_("syntax error: cannot back up")); \
       YYERROR;                                                 \
     }                                                          \
@@ -973,32 +1001,33 @@ while (YYID (0))
 #define YYTERROR       1
 #define YYERRCODE      256
 
-
 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    If N is 0, then set CURRENT to the empty location which ends
    the previous symbol: RHS[0] (always defined).  */
 
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
 #ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
-    do                                                                 \
-      if (YYID (N))                                                    \
-       {                                                               \
-         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
-         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
-         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
-         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
-       }                                                               \
-      else                                                             \
-       {                                                               \
-         (Current).first_line   = (Current).last_line   =              \
-           YYRHSLOC (Rhs, 0).last_line;                                \
-         (Current).first_column = (Current).last_column =              \
-           YYRHSLOC (Rhs, 0).last_column;                              \
-       }                                                               \
+# define YYLLOC_DEFAULT(Current, Rhs, N)                                \
+    do                                                                  \
+      if (YYID (N))                                                     \
+        {                                                               \
+          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
+          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
+          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
+          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
+        }                                                               \
+      else                                                              \
+        {                                                               \
+          (Current).first_line   = (Current).last_line   =              \
+            YYRHSLOC (Rhs, 0).last_line;                                \
+          (Current).first_column = (Current).last_column =              \
+            YYRHSLOC (Rhs, 0).last_column;                              \
+        }                                                               \
     while (YYID (0))
 #endif
 
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+
 
 /* YY_LOCATION_PRINT -- Print the location on the stream.
    This macro was not mandated originally: define only if we know
@@ -1072,6 +1101,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, answer, errors,
     yyscan_t lexer;
 #endif
 {
+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
   if (!yyvaluep)
     return;
   YYUSE (yylocationp);
@@ -1340,12 +1371,12 @@ static int
 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                 yytype_int16 *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
   YYSIZE_T yysize1;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
-  const char *yyformat = 0;
+  const char *yyformat = YY_NULL;
   /* Arguments of yyformat. */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   /* Number of reported tokens (one for the "unexpected", one per
@@ -1405,7 +1436,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                     break;
                   }
                 yyarg[yycount++] = yytname[yyx];
-                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+                yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
                 if (! (yysize <= yysize1
                        && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
                   return 2;
@@ -1500,122 +1531,96 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, answer, errors, locations, lex
 
   switch (yytype)
     {
-      case 4: /* "IDENT" */
-
-/* Line 1391 of yacc.c  */
-#line 29 "parser.y"
-       { jv_free((yyvaluep->literal)); };
-
-/* Line 1391 of yacc.c  */
-#line 1511 "parser.gen.c"
-       break;
-      case 5: /* "LITERAL" */
-
-/* Line 1391 of yacc.c  */
-#line 29 "parser.y"
-       { jv_free((yyvaluep->literal)); };
-
-/* Line 1391 of yacc.c  */
-#line 1520 "parser.gen.c"
+      case 4: /* IDENT */
+/* Line 1381 of yacc.c  */
+#line 32 "parser.y"
+       { jv_free(((*yyvaluep).literal)); };
+/* Line 1381 of yacc.c  */
+#line 1540 "parser.gen.c"
        break;
-      case 26: /* "QQSTRING_TEXT" */
-
-/* Line 1391 of yacc.c  */
-#line 29 "parser.y"
-       { jv_free((yyvaluep->literal)); };
-
-/* Line 1391 of yacc.c  */
-#line 1529 "parser.gen.c"
+      case 5: /* LITERAL */
+/* Line 1381 of yacc.c  */
+#line 32 "parser.y"
+       { jv_free(((*yyvaluep).literal)); };
+/* Line 1381 of yacc.c  */
+#line 1547 "parser.gen.c"
        break;
-      case 51: /* "FuncDefs" */
-
-/* Line 1391 of yacc.c  */
-#line 30 "parser.y"
-       { block_free((yyvaluep->blk)); };
-
-/* Line 1391 of yacc.c  */
-#line 1538 "parser.gen.c"
+      case 27: /* QQSTRING_TEXT */
+/* Line 1381 of yacc.c  */
+#line 32 "parser.y"
+       { jv_free(((*yyvaluep).literal)); };
+/* Line 1381 of yacc.c  */
+#line 1554 "parser.gen.c"
        break;
-      case 52: /* "Exp" */
-
-/* Line 1391 of yacc.c  */
-#line 30 "parser.y"
-       { block_free((yyvaluep->blk)); };
-
-/* Line 1391 of yacc.c  */
-#line 1547 "parser.gen.c"
+      case 52: /* FuncDefs */
+/* Line 1381 of yacc.c  */
+#line 33 "parser.y"
+       { block_free(((*yyvaluep).blk)); };
+/* Line 1381 of yacc.c  */
+#line 1561 "parser.gen.c"
        break;
-      case 53: /* "String" */
-
-/* Line 1391 of yacc.c  */
-#line 30 "parser.y"
-       { block_free((yyvaluep->blk)); };
-
-/* Line 1391 of yacc.c  */
-#line 1556 "parser.gen.c"
+      case 53: /* Exp */
+/* Line 1381 of yacc.c  */
+#line 33 "parser.y"
+       { block_free(((*yyvaluep).blk)); };
+/* Line 1381 of yacc.c  */
+#line 1568 "parser.gen.c"
        break;
-      case 54: /* "FuncDef" */
-
-/* Line 1391 of yacc.c  */
-#line 30 "parser.y"
-       { block_free((yyvaluep->blk)); };
-
-/* Line 1391 of yacc.c  */
-#line 1565 "parser.gen.c"
+      case 54: /* String */
+/* Line 1381 of yacc.c  */
+#line 33 "parser.y"
+       { block_free(((*yyvaluep).blk)); };
+/* Line 1381 of yacc.c  */
+#line 1575 "parser.gen.c"
        break;
-      case 55: /* "QQString" */
-
-/* Line 1391 of yacc.c  */
-#line 30 "parser.y"
-       { block_free((yyvaluep->blk)); };
-
-/* Line 1391 of yacc.c  */
-#line 1574 "parser.gen.c"
+      case 55: /* FuncDef */
+/* Line 1381 of yacc.c  */
+#line 33 "parser.y"
+       { block_free(((*yyvaluep).blk)); };
+/* Line 1381 of yacc.c  */
+#line 1582 "parser.gen.c"
        break;
-      case 56: /* "ElseBody" */
-
-/* Line 1391 of yacc.c  */
-#line 30 "parser.y"
-       { block_free((yyvaluep->blk)); };
-
-/* Line 1391 of yacc.c  */
-#line 1583 "parser.gen.c"
+      case 56: /* QQString */
+/* Line 1381 of yacc.c  */
+#line 33 "parser.y"
+       { block_free(((*yyvaluep).blk)); };
+/* Line 1381 of yacc.c  */
+#line 1589 "parser.gen.c"
        break;
-      case 57: /* "ExpD" */
-
-/* Line 1391 of yacc.c  */
-#line 30 "parser.y"
-       { block_free((yyvaluep->blk)); };
-
-/* Line 1391 of yacc.c  */
-#line 1592 "parser.gen.c"
+      case 57: /* ElseBody */
+/* Line 1381 of yacc.c  */
+#line 33 "parser.y"
+       { block_free(((*yyvaluep).blk)); };
+/* Line 1381 of yacc.c  */
+#line 1596 "parser.gen.c"
        break;
-      case 58: /* "Term" */
-
-/* Line 1391 of yacc.c  */
-#line 30 "parser.y"
-       { block_free((yyvaluep->blk)); };
-
-/* Line 1391 of yacc.c  */
-#line 1601 "parser.gen.c"
+      case 58: /* ExpD */
+/* Line 1381 of yacc.c  */
+#line 33 "parser.y"
+       { block_free(((*yyvaluep).blk)); };
+/* Line 1381 of yacc.c  */
+#line 1603 "parser.gen.c"
        break;
-      case 59: /* "MkDict" */
-
-/* Line 1391 of yacc.c  */
-#line 30 "parser.y"
-       { block_free((yyvaluep->blk)); };
-
-/* Line 1391 of yacc.c  */
+      case 59: /* Term */
+/* Line 1381 of yacc.c  */
+#line 33 "parser.y"
+       { block_free(((*yyvaluep).blk)); };
+/* Line 1381 of yacc.c  */
 #line 1610 "parser.gen.c"
        break;
-      case 60: /* "MkDictPair" */
-
-/* Line 1391 of yacc.c  */
-#line 30 "parser.y"
-       { block_free((yyvaluep->blk)); };
-
-/* Line 1391 of yacc.c  */
-#line 1619 "parser.gen.c"
+      case 60: /* MkDict */
+/* Line 1381 of yacc.c  */
+#line 33 "parser.y"
+       { block_free(((*yyvaluep).blk)); };
+/* Line 1381 of yacc.c  */
+#line 1617 "parser.gen.c"
+       break;
+      case 61: /* MkDictPair */
+/* Line 1381 of yacc.c  */
+#line 33 "parser.y"
+       { block_free(((*yyvaluep).blk)); };
+/* Line 1381 of yacc.c  */
+#line 1624 "parser.gen.c"
        break;
 
       default:
@@ -1624,20 +1629,6 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, answer, errors, locations, lex
 }
 
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (block* answer, int* errors, struct locfile* locations, yyscan_t lexer);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
 
 /*----------.
@@ -1690,7 +1681,7 @@ YYLTYPE yylloc;
        `yyvs': related to semantic values.
        `yyls': related to locations.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
     /* The state stack.  */
@@ -1761,7 +1752,6 @@ YYLTYPE yylloc;
   yylloc.first_line   = yylloc.last_line   = 1;
   yylloc.first_column = yylloc.last_column = 1;
 #endif
-
   goto yysetstate;
 
 /*------------------------------------------------------------.
@@ -1945,54 +1935,48 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-
-/* Line 1806 of yacc.c  */
-#line 174 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 179 "parser.y"
     {
   *answer = (yyvsp[(1) - (1)].blk);
 }
     break;
 
   case 3:
-
-/* Line 1806 of yacc.c  */
-#line 177 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 182 "parser.y"
     {
   *answer = (yyvsp[(1) - (1)].blk);
 }
     break;
 
   case 4:
-
-/* Line 1806 of yacc.c  */
-#line 182 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 187 "parser.y"
     {
   (yyval.blk) = gen_noop();
 }
     break;
 
   case 5:
-
-/* Line 1806 of yacc.c  */
-#line 185 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 190 "parser.y"
     {
   (yyval.blk) = block_join((yyvsp[(1) - (2)].blk), (yyvsp[(2) - (2)].blk));
 }
     break;
 
   case 6:
-
-/* Line 1806 of yacc.c  */
-#line 190 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 195 "parser.y"
     {
   (yyval.blk) = block_bind((yyvsp[(1) - (2)].blk), (yyvsp[(2) - (2)].blk), OP_IS_CALL_PSEUDO);
 }
     break;
 
   case 7:
-
-/* Line 1806 of yacc.c  */
-#line 194 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 199 "parser.y"
     {
   (yyval.blk) = gen_op_simple(DUP);
   block_append(&(yyval.blk), (yyvsp[(1) - (6)].blk));
@@ -2002,18 +1986,16 @@ yyreduce:
     break;
 
   case 8:
-
-/* Line 1806 of yacc.c  */
-#line 201 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 206 "parser.y"
     {
   (yyval.blk) = gen_cond((yyvsp[(2) - (5)].blk), (yyvsp[(4) - (5)].blk), (yyvsp[(5) - (5)].blk));
 }
     break;
 
   case 9:
-
-/* Line 1806 of yacc.c  */
-#line 204 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 209 "parser.y"
     {
   FAIL((yyloc), "Possibly unterminated 'if' statment");
   (yyval.blk) = (yyvsp[(2) - (3)].blk);
@@ -2021,9 +2003,8 @@ yyreduce:
     break;
 
   case 10:
-
-/* Line 1806 of yacc.c  */
-#line 209 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 214 "parser.y"
     {
   block assign = gen_op_simple(DUP);
   block_append(&assign, (yyvsp[(3) - (3)].blk));
@@ -2035,216 +2016,200 @@ yyreduce:
     break;
 
   case 11:
-
-/* Line 1806 of yacc.c  */
-#line 218 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 223 "parser.y"
     {
   (yyval.blk) = gen_or((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk));
 }
     break;
 
   case 12:
-
-/* Line 1806 of yacc.c  */
-#line 222 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 227 "parser.y"
     {
   (yyval.blk) = gen_and((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk));
 }
     break;
 
   case 13:
-
-/* Line 1806 of yacc.c  */
-#line 226 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 231 "parser.y"
     {
   (yyval.blk) = gen_definedor((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk));
 }
     break;
 
   case 14:
-
-/* Line 1806 of yacc.c  */
-#line 230 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 235 "parser.y"
     {
   (yyval.blk) = gen_update((yyvsp[(1) - (3)].blk), gen_definedor(gen_noop(), (yyvsp[(3) - (3)].blk)), 0);
 }
     break;
 
   case 15:
-
-/* Line 1806 of yacc.c  */
-#line 234 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 239 "parser.y"
     {
   (yyval.blk) = gen_update((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), 0);
 }
     break;
 
   case 16:
-
-/* Line 1806 of yacc.c  */
-#line 238 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 243 "parser.y"
     { 
   (yyval.blk) = block_join((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk)); 
 }
     break;
 
   case 17:
-
-/* Line 1806 of yacc.c  */
-#line 242 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 247 "parser.y"
     { 
   (yyval.blk) = gen_both((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk)); 
 }
     break;
 
   case 18:
-
-/* Line 1806 of yacc.c  */
-#line 246 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 251 "parser.y"
     {
   (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '+');
 }
     break;
 
   case 19:
-
-/* Line 1806 of yacc.c  */
-#line 250 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 255 "parser.y"
     {
   (yyval.blk) = gen_update((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '+');
 }
     break;
 
   case 20:
-
-/* Line 1806 of yacc.c  */
-#line 254 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 259 "parser.y"
     {
   (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '-');
 }
     break;
 
   case 21:
-
-/* Line 1806 of yacc.c  */
-#line 258 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 263 "parser.y"
     {
   (yyval.blk) = gen_update((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '-');
 }
     break;
 
   case 22:
-
-/* Line 1806 of yacc.c  */
-#line 262 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 267 "parser.y"
     {
   (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '*');
 }
     break;
 
   case 23:
-
-/* Line 1806 of yacc.c  */
-#line 266 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 271 "parser.y"
     {
   (yyval.blk) = gen_update((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '*');
 }
     break;
 
   case 24:
-
-/* Line 1806 of yacc.c  */
-#line 270 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 275 "parser.y"
     {
   (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '/');
 }
     break;
 
   case 25:
-
-/* Line 1806 of yacc.c  */
-#line 274 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 279 "parser.y"
     {
   (yyval.blk) = gen_update((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '/');
 }
     break;
 
   case 26:
-
-/* Line 1806 of yacc.c  */
-#line 278 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 283 "parser.y"
     {
   (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), EQ);
 }
     break;
 
   case 27:
-
-/* Line 1806 of yacc.c  */
-#line 282 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 287 "parser.y"
     {
-  (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '<');
+  (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), NEQ);
 }
     break;
 
   case 28:
-
-/* Line 1806 of yacc.c  */
-#line 286 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 291 "parser.y"
     {
-  (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '>');
+  (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '<');
 }
     break;
 
   case 29:
-
-/* Line 1806 of yacc.c  */
-#line 290 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 295 "parser.y"
     {
-  (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), LESSEQ);
+  (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), '>');
 }
     break;
 
   case 30:
-
-/* Line 1806 of yacc.c  */
-#line 294 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 299 "parser.y"
     {
-  (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), GREATEREQ);
+  (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), LESSEQ);
 }
     break;
 
   case 31:
-
-/* Line 1806 of yacc.c  */
-#line 298 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 303 "parser.y"
     {
-  (yyval.blk) = (yyvsp[(1) - (1)].blk);
+  (yyval.blk) = gen_binop((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk), GREATEREQ);
 }
     break;
 
   case 32:
+/* Line 1787 of yacc.c  */
+#line 307 "parser.y"
+    {
+  (yyval.blk) = (yyvsp[(1) - (1)].blk);
+}
+    break;
 
-/* Line 1806 of yacc.c  */
-#line 302 "parser.y"
+  case 33:
+/* Line 1787 of yacc.c  */
+#line 311 "parser.y"
     { 
   (yyval.blk) = (yyvsp[(1) - (1)].blk); 
 }
     break;
 
-  case 33:
-
-/* Line 1806 of yacc.c  */
-#line 307 "parser.y"
+  case 34:
+/* Line 1787 of yacc.c  */
+#line 316 "parser.y"
     {
   (yyval.blk) = (yyvsp[(2) - (3)].blk);
 }
     break;
 
-  case 34:
-
-/* Line 1806 of yacc.c  */
-#line 312 "parser.y"
+  case 35:
+/* Line 1787 of yacc.c  */
+#line 321 "parser.y"
     {
   block body = block_join((yyvsp[(4) - (5)].blk), gen_op_simple(RET));
   (yyval.blk) = gen_op_block_defn_rec(CLOSURE_CREATE, jv_string_value((yyvsp[(2) - (5)].literal)), body);
@@ -2252,10 +2217,9 @@ yyreduce:
 }
     break;
 
-  case 35:
-
-/* Line 1806 of yacc.c  */
-#line 318 "parser.y"
+  case 36:
+/* Line 1787 of yacc.c  */
+#line 327 "parser.y"
     {
   block body = block_bind(gen_op_block_unbound(CLOSURE_PARAM, jv_string_value((yyvsp[(4) - (8)].literal))), block_join((yyvsp[(7) - (8)].blk), gen_op_simple(RET)), OP_IS_CALL_PSEUDO);
   (yyval.blk) = gen_op_block_defn_rec(CLOSURE_CREATE, jv_string_value((yyvsp[(2) - (8)].literal)), body);
@@ -2264,154 +2228,137 @@ yyreduce:
 }
     break;
 
-  case 36:
-
-/* Line 1806 of yacc.c  */
-#line 326 "parser.y"
+  case 37:
+/* Line 1787 of yacc.c  */
+#line 335 "parser.y"
     {
   (yyval.blk) = gen_op_const(LOADK, jv_string(""));
 }
     break;
 
-  case 37:
-
-/* Line 1806 of yacc.c  */
-#line 329 "parser.y"
+  case 38:
+/* Line 1787 of yacc.c  */
+#line 338 "parser.y"
     {
   (yyval.blk) = gen_binop((yyvsp[(1) - (2)].blk), gen_op_const(LOADK, (yyvsp[(2) - (2)].literal)), '+');
 }
     break;
 
-  case 38:
-
-/* Line 1806 of yacc.c  */
-#line 332 "parser.y"
+  case 39:
+/* Line 1787 of yacc.c  */
+#line 341 "parser.y"
     {
   (yyval.blk) = gen_binop((yyvsp[(1) - (4)].blk), gen_format((yyvsp[(3) - (4)].blk)), '+');
 }
     break;
 
-  case 39:
-
-/* Line 1806 of yacc.c  */
-#line 338 "parser.y"
+  case 40:
+/* Line 1787 of yacc.c  */
+#line 347 "parser.y"
     {
   (yyval.blk) = gen_cond((yyvsp[(2) - (5)].blk), (yyvsp[(4) - (5)].blk), (yyvsp[(5) - (5)].blk));
 }
     break;
 
-  case 40:
-
-/* Line 1806 of yacc.c  */
-#line 341 "parser.y"
+  case 41:
+/* Line 1787 of yacc.c  */
+#line 350 "parser.y"
     {
   (yyval.blk) = (yyvsp[(2) - (3)].blk);
 }
     break;
 
-  case 41:
-
-/* Line 1806 of yacc.c  */
-#line 346 "parser.y"
+  case 42:
+/* Line 1787 of yacc.c  */
+#line 355 "parser.y"
     { 
   (yyval.blk) = block_join((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk));
 }
     break;
 
-  case 42:
-
-/* Line 1806 of yacc.c  */
-#line 350 "parser.y"
+  case 43:
+/* Line 1787 of yacc.c  */
+#line 359 "parser.y"
     {
   (yyval.blk) = (yyvsp[(1) - (1)].blk);
 }
     break;
 
-  case 43:
-
-/* Line 1806 of yacc.c  */
-#line 356 "parser.y"
+  case 44:
+/* Line 1787 of yacc.c  */
+#line 365 "parser.y"
     {
   (yyval.blk) = gen_noop(); 
 }
     break;
 
-  case 44:
-
-/* Line 1806 of yacc.c  */
-#line 359 "parser.y"
+  case 45:
+/* Line 1787 of yacc.c  */
+#line 368 "parser.y"
     {
   (yyval.blk) = gen_index((yyvsp[(1) - (3)].blk), gen_op_const(LOADK, (yyvsp[(3) - (3)].literal))); 
 }
     break;
 
-  case 45:
-
-/* Line 1806 of yacc.c  */
-#line 362 "parser.y"
+  case 46:
+/* Line 1787 of yacc.c  */
+#line 371 "parser.y"
     { 
   (yyval.blk) = gen_index(gen_noop(), gen_op_const(LOADK, (yyvsp[(2) - (2)].literal))); 
 }
     break;
 
-  case 46:
-
-/* Line 1806 of yacc.c  */
-#line 366 "parser.y"
+  case 47:
+/* Line 1787 of yacc.c  */
+#line 375 "parser.y"
     {
   (yyval.blk) = gen_index((yyvsp[(1) - (4)].blk), (yyvsp[(3) - (4)].blk)); 
 }
     break;
 
-  case 47:
-
-/* Line 1806 of yacc.c  */
-#line 369 "parser.y"
+  case 48:
+/* Line 1787 of yacc.c  */
+#line 378 "parser.y"
     {
   (yyval.blk) = block_join((yyvsp[(1) - (3)].blk), gen_op_simple(EACH)); 
 }
     break;
 
-  case 48:
-
-/* Line 1806 of yacc.c  */
-#line 372 "parser.y"
+  case 49:
+/* Line 1787 of yacc.c  */
+#line 381 "parser.y"
     {
   (yyval.blk) = gen_op_const(LOADK, (yyvsp[(1) - (1)].literal)); 
 }
     break;
 
-  case 49:
-
-/* Line 1806 of yacc.c  */
-#line 375 "parser.y"
+  case 50:
+/* Line 1787 of yacc.c  */
+#line 384 "parser.y"
     { 
   (yyval.blk) = (yyvsp[(2) - (3)].blk); 
 }
     break;
 
-  case 50:
-
-/* Line 1806 of yacc.c  */
-#line 378 "parser.y"
+  case 51:
+/* Line 1787 of yacc.c  */
+#line 387 "parser.y"
     { 
   (yyval.blk) = gen_collect((yyvsp[(2) - (3)].blk)); 
 }
     break;
 
-  case 51:
-
-/* Line 1806 of yacc.c  */
-#line 381 "parser.y"
+  case 52:
+/* Line 1787 of yacc.c  */
+#line 390 "parser.y"
     { 
   (yyval.blk) = gen_op_const(LOADK, jv_array()); 
 }
     break;
 
-  case 52:
-
-/* Line 1806 of yacc.c  */
-#line 384 "parser.y"
+  case 53:
+/* Line 1787 of yacc.c  */
+#line 393 "parser.y"
     { 
   (yyval.blk) = gen_subexp(gen_op_const(LOADK, jv_object()));
   block_append(&(yyval.blk), (yyvsp[(2) - (3)].blk));
@@ -2419,30 +2366,27 @@ yyreduce:
 }
     break;
 
-  case 53:
-
-/* Line 1806 of yacc.c  */
-#line 389 "parser.y"
+  case 54:
+/* Line 1787 of yacc.c  */
+#line 398 "parser.y"
     {
   (yyval.blk) = gen_location((yyloc), gen_op_var_unbound(LOADV, jv_string_value((yyvsp[(2) - (2)].literal))));
   jv_free((yyvsp[(2) - (2)].literal));
 }
     break;
 
-  case 54:
-
-/* Line 1806 of yacc.c  */
-#line 393 "parser.y"
+  case 55:
+/* Line 1787 of yacc.c  */
+#line 402 "parser.y"
     {
   (yyval.blk) = gen_location((yyloc), gen_op_call(CALL_1_1, gen_op_block_unbound(CLOSURE_REF, jv_string_value((yyvsp[(1) - (1)].literal)))));
   jv_free((yyvsp[(1) - (1)].literal));
 }
     break;
 
-  case 55:
-
-/* Line 1806 of yacc.c  */
-#line 397 "parser.y"
+  case 56:
+/* Line 1787 of yacc.c  */
+#line 406 "parser.y"
     {
   (yyval.blk) = gen_op_call(CALL_1_1, 
                    block_join(gen_op_block_unbound(CLOSURE_REF, jv_string_value((yyvsp[(1) - (4)].literal))),
@@ -2455,112 +2399,98 @@ yyreduce:
 }
     break;
 
-  case 56:
-
-/* Line 1806 of yacc.c  */
-#line 407 "parser.y"
-    { (yyval.blk) = gen_noop(); }
-    break;
-
   case 57:
-
-/* Line 1806 of yacc.c  */
-#line 408 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 416 "parser.y"
     { (yyval.blk) = gen_noop(); }
     break;
 
   case 58:
-
-/* Line 1806 of yacc.c  */
-#line 409 "parser.y"
-    { (yyval.blk) = (yyvsp[(1) - (4)].blk); }
+/* Line 1787 of yacc.c  */
+#line 417 "parser.y"
+    { (yyval.blk) = gen_noop(); }
     break;
 
   case 59:
-
-/* Line 1806 of yacc.c  */
-#line 410 "parser.y"
-    { (yyval.blk) = gen_noop(); }
+/* Line 1787 of yacc.c  */
+#line 418 "parser.y"
+    { (yyval.blk) = (yyvsp[(1) - (4)].blk); }
     break;
 
   case 60:
+/* Line 1787 of yacc.c  */
+#line 419 "parser.y"
+    { (yyval.blk) = gen_noop(); }
+    break;
 
-/* Line 1806 of yacc.c  */
-#line 413 "parser.y"
+  case 61:
+/* Line 1787 of yacc.c  */
+#line 422 "parser.y"
     { 
   (yyval.blk)=gen_noop(); 
 }
     break;
 
-  case 61:
-
-/* Line 1806 of yacc.c  */
-#line 416 "parser.y"
+  case 62:
+/* Line 1787 of yacc.c  */
+#line 425 "parser.y"
     { (yyval.blk) = (yyvsp[(1) - (1)].blk); }
     break;
 
-  case 62:
-
-/* Line 1806 of yacc.c  */
-#line 417 "parser.y"
+  case 63:
+/* Line 1787 of yacc.c  */
+#line 426 "parser.y"
     { (yyval.blk)=block_join((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk)); }
     break;
 
-  case 63:
-
-/* Line 1806 of yacc.c  */
-#line 418 "parser.y"
+  case 64:
+/* Line 1787 of yacc.c  */
+#line 427 "parser.y"
     { (yyval.blk) = (yyvsp[(3) - (3)].blk); }
     break;
 
-  case 64:
-
-/* Line 1806 of yacc.c  */
-#line 421 "parser.y"
+  case 65:
+/* Line 1787 of yacc.c  */
+#line 430 "parser.y"
     { 
   (yyval.blk) = gen_dictpair(gen_op_const(LOADK, (yyvsp[(1) - (3)].literal)), (yyvsp[(3) - (3)].blk));
  }
     break;
 
-  case 65:
-
-/* Line 1806 of yacc.c  */
-#line 424 "parser.y"
+  case 66:
+/* Line 1787 of yacc.c  */
+#line 433 "parser.y"
     {
   (yyval.blk) = gen_dictpair((yyvsp[(1) - (3)].blk), (yyvsp[(3) - (3)].blk));
   }
     break;
 
-  case 66:
-
-/* Line 1806 of yacc.c  */
-#line 427 "parser.y"
+  case 67:
+/* Line 1787 of yacc.c  */
+#line 436 "parser.y"
     {
   (yyval.blk) = gen_dictpair(gen_op_const(LOADK, jv_copy((yyvsp[(1) - (1)].literal))),
                     gen_index(gen_noop(), gen_op_const(LOADK, (yyvsp[(1) - (1)].literal))));
   }
     break;
 
-  case 67:
-
-/* Line 1806 of yacc.c  */
-#line 431 "parser.y"
+  case 68:
+/* Line 1787 of yacc.c  */
+#line 440 "parser.y"
     {
   (yyval.blk) = gen_dictpair((yyvsp[(2) - (5)].blk), (yyvsp[(5) - (5)].blk));
   }
     break;
 
-  case 68:
-
-/* Line 1806 of yacc.c  */
-#line 434 "parser.y"
+  case 69:
+/* Line 1787 of yacc.c  */
+#line 443 "parser.y"
     { (yyval.blk) = (yyvsp[(5) - (5)].blk); }
     break;
 
 
-
-/* Line 1806 of yacc.c  */
-#line 2564 "parser.gen.c"
+/* Line 1787 of yacc.c  */
+#line 2494 "parser.gen.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2754,7 +2684,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2796,9 +2726,8 @@ yyreturn:
 }
 
 
-
-/* Line 2067 of yacc.c  */
-#line 435 "parser.y"
+/* Line 2048 of yacc.c  */
+#line 444 "parser.y"
 
 
 int jq_parse(struct locfile* locations, block* answer) {
@@ -2827,4 +2756,3 @@ int jq_parse_library(struct locfile* locations, block* answer) {
   }
   return 0;
 }
-
index 49bf4cc7a8364e1250a887d9596fb348d711019c..d29c12a032a21a180d7f1e51335041a3ef3cd267 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.5.  */
+/* A Bison parser, made by GNU Bison 2.6.2.  */
 
 /* Bison interface for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+#ifndef YY_PARSER_GEN_H
+# define YY_PARSER_GEN_H
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
 /* "%code requires" blocks.  */
-
-/* Line 2068 of yacc.c  */
-#line 6 "parser.y"
+/* Line 2049 of yacc.c  */
+#line 9 "parser.y"
 
 #include "locfile.h"
 #define YYLTYPE location
@@ -49,9 +57,8 @@
   } while (0)
  
 
-
-/* Line 2068 of yacc.c  */
-#line 55 "parser.gen.h"
+/* Line 2049 of yacc.c  */
+#line 62 "parser.gen.h"
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
      IDENT = 259,
      LITERAL = 260,
      EQ = 261,
-     DEFINEDOR = 262,
-     AS = 263,
-     DEF = 264,
-     IF = 265,
-     THEN = 266,
-     ELSE = 267,
-     ELSE_IF = 268,
-     END = 269,
-     AND = 270,
-     OR = 271,
-     SETPIPE = 272,
-     SETPLUS = 273,
-     SETMINUS = 274,
-     SETMULT = 275,
-     SETDIV = 276,
-     SETDEFINEDOR = 277,
-     LESSEQ = 278,
-     GREATEREQ = 279,
-     QQSTRING_START = 280,
-     QQSTRING_TEXT = 281,
-     QQSTRING_INTERP_START = 282,
-     QQSTRING_INTERP_END = 283,
-     QQSTRING_END = 284
+     NEQ = 262,
+     DEFINEDOR = 263,
+     AS = 264,
+     DEF = 265,
+     IF = 266,
+     THEN = 267,
+     ELSE = 268,
+     ELSE_IF = 269,
+     END = 270,
+     AND = 271,
+     OR = 272,
+     SETPIPE = 273,
+     SETPLUS = 274,
+     SETMINUS = 275,
+     SETMULT = 276,
+     SETDIV = 277,
+     SETDEFINEDOR = 278,
+     LESSEQ = 279,
+     GREATEREQ = 280,
+     QQSTRING_START = 281,
+     QQSTRING_TEXT = 282,
+     QQSTRING_INTERP_START = 283,
+     QQSTRING_INTERP_END = 284,
+     QQSTRING_END = 285
    };
 #endif
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 2068 of yacc.c  */
-#line 24 "parser.y"
+/* Line 2049 of yacc.c  */
+#line 27 "parser.y"
 
   jv literal;
   block blk;
 
 
-
-/* Line 2068 of yacc.c  */
-#line 108 "parser.gen.h"
+/* Line 2049 of yacc.c  */
+#line 113 "parser.gen.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
-
-
 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
 typedef struct YYLTYPE
 {
@@ -127,4 +130,18 @@ typedef struct YYLTYPE
 #endif
 
 
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (block* answer, int* errors, struct locfile* locations, yyscan_t lexer);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
+#endif /* !YY_PARSER_GEN_H  */
index 6c84d9796e4bcfc681d891982d0e1ad683b37ffb..d2fb1fdf54613bc4e0070776c8a33c953d88f89a 100644 (file)
@@ -1,16 +1,16 @@
-Terminals unused in grammar
+Terminaux inutilisés dans la grammaire
 
    INVALID_CHARACTER
 
 
-Grammar
+Grammaire
 
     0 $accept: TopLevel $end
 
     1 TopLevel: Exp
     2         | FuncDefs
 
-    3 FuncDefs: /* empty */
+    3 FuncDefs: /* vide */
     4         | FuncDef FuncDefs
 
     5 Exp: FuncDef Exp
@@ -34,320 +34,322 @@ Grammar
    23    | Exp '/' Exp
    24    | Exp "/=" Exp
    25    | Exp "==" Exp
-   26    | Exp '<' Exp
-   27    | Exp '>' Exp
-   28    | Exp "<=" Exp
-   29    | Exp ">=" Exp
-   30    | String
-   31    | Term
-
-   32 String: QQSTRING_START QQString QQSTRING_END
-
-   33 FuncDef: "def" IDENT ':' Exp ';'
-   34        | "def" IDENT '(' IDENT ')' ':' Exp ';'
-
-   35 QQString: /* empty */
-   36         | QQString QQSTRING_TEXT
-   37         | QQString QQSTRING_INTERP_START Exp QQSTRING_INTERP_END
-
-   38 ElseBody: "elif" Exp "then" Exp ElseBody
-   39         | "else" Exp "end"
-
-   40 ExpD: ExpD '|' ExpD
-   41     | Term
-
-   42 Term: '.'
-   43     | Term '.' IDENT
-   44     | '.' IDENT
-   45     | Term '[' Exp ']'
-   46     | Term '[' ']'
-   47     | LITERAL
-   48     | '(' Exp ')'
-   49     | '[' Exp ']'
-   50     | '[' ']'
-   51     | '{' MkDict '}'
-   52     | '$' IDENT
-   53     | IDENT
-   54     | IDENT '(' Exp ')'
-   55     | '(' error ')'
-   56     | '[' error ']'
-   57     | Term '[' error ']'
-   58     | '{' error '}'
-
-   59 MkDict: /* empty */
-   60       | MkDictPair
-   61       | MkDictPair ',' MkDict
-   62       | error ',' MkDict
-
-   63 MkDictPair: IDENT ':' ExpD
-   64           | String ':' ExpD
-   65           | IDENT
-   66           | '(' Exp ')' ':' ExpD
-   67           | '(' error ')' ':' ExpD
-
-
-Terminals, with rules where they appear
+   26    | Exp "!=" Exp
+   27    | Exp '<' Exp
+   28    | Exp '>' Exp
+   29    | Exp "<=" Exp
+   30    | Exp ">=" Exp
+   31    | String
+   32    | Term
+
+   33 String: QQSTRING_START QQString QQSTRING_END
+
+   34 FuncDef: "def" IDENT ':' Exp ';'
+   35        | "def" IDENT '(' IDENT ')' ':' Exp ';'
+
+   36 QQString: /* vide */
+   37         | QQString QQSTRING_TEXT
+   38         | QQString QQSTRING_INTERP_START Exp QQSTRING_INTERP_END
+
+   39 ElseBody: "elif" Exp "then" Exp ElseBody
+   40         | "else" Exp "end"
+
+   41 ExpD: ExpD '|' ExpD
+   42     | Term
+
+   43 Term: '.'
+   44     | Term '.' IDENT
+   45     | '.' IDENT
+   46     | Term '[' Exp ']'
+   47     | Term '[' ']'
+   48     | LITERAL
+   49     | '(' Exp ')'
+   50     | '[' Exp ']'
+   51     | '[' ']'
+   52     | '{' MkDict '}'
+   53     | '$' IDENT
+   54     | IDENT
+   55     | IDENT '(' Exp ')'
+   56     | '(' error ')'
+   57     | '[' error ']'
+   58     | Term '[' error ']'
+   59     | '{' error '}'
+
+   60 MkDict: /* vide */
+   61       | MkDictPair
+   62       | MkDictPair ',' MkDict
+   63       | error ',' MkDict
+
+   64 MkDictPair: IDENT ':' ExpD
+   65           | String ':' ExpD
+   66           | IDENT
+   67           | '(' Exp ')' ':' ExpD
+   68           | '(' error ')' ':' ExpD
+
+
+Terminaux, suivis des règles où ils apparaissent
 
 $end (0) 0
-'$' (36) 6 52
-'(' (40) 34 48 54 55 66 67
-')' (41) 34 48 54 55 66 67
+'$' (36) 6 53
+'(' (40) 35 49 55 56 67 68
+')' (41) 35 49 55 56 67 68
 '*' (42) 21
 '+' (43) 17
-',' (44) 16 61 62
+',' (44) 16 62 63
 '-' (45) 19
-'.' (46) 42 43 44
+'.' (46) 43 44 45
 '/' (47) 23
-':' (58) 33 34 63 64 66 67
-';' (59) 33 34
-'<' (60) 26
+':' (58) 34 35 64 65 67 68
+';' (59) 34 35
+'<' (60) 27
 '=' (61) 9
-'>' (62) 27
-'[' (91) 45 46 49 50 56 57
-']' (93) 45 46 49 50 56 57
-'{' (123) 51 58
-'|' (124) 6 15 40
-'}' (125) 51 58
-error (256) 8 55 56 57 58 62 67
+'>' (62) 28
+'[' (91) 46 47 50 51 57 58
+']' (93) 46 47 50 51 57 58
+'{' (123) 52 59
+'|' (124) 6 15 41
+'}' (125) 52 59
+error (256) 8 56 57 58 59 63 68
 INVALID_CHARACTER (258)
-IDENT (259) 6 33 34 43 44 52 53 54 63 65
-LITERAL (260) 47
+IDENT (259) 6 34 35 44 45 53 54 55 64 66
+LITERAL (260) 48
 "==" (261) 25
-"//" (262) 12
-"as" (263) 6
-"def" (264) 33 34
-"if" (265) 7 8
-"then" (266) 7 38
-"else" (267) 39
-"elif" (268) 38
-"end" (269) 39
-"and" (270) 11
-"or" (271) 10
-"|=" (272) 14
-"+=" (273) 18
-"-=" (274) 20
-"*=" (275) 22
-"/=" (276) 24
-"//=" (277) 13
-"<=" (278) 28
-">=" (279) 29
-QQSTRING_START (280) 32
-QQSTRING_TEXT (281) 36
-QQSTRING_INTERP_START (282) 37
-QQSTRING_INTERP_END (283) 37
-QQSTRING_END (284) 32
-
-
-Nonterminals, with rules where they appear
-
-$accept (49)
-    on left: 0
-TopLevel (50)
-    on left: 1 2, on right: 0
-FuncDefs (51)
-    on left: 3 4, on right: 2 4
-Exp (52)
-    on left: 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
-    25 26 27 28 29 30 31, on right: 1 5 6 7 8 9 10 11 12 13 14 15 16
-    17 18 19 20 21 22 23 24 25 26 27 28 29 33 34 37 38 39 45 48 49
-    54 66
-String (53)
-    on left: 32, on right: 30 64
-FuncDef (54)
-    on left: 33 34, on right: 4 5
-QQString (55)
-    on left: 35 36 37, on right: 32 36 37
-ElseBody (56)
-    on left: 38 39, on right: 7 38
-ExpD (57)
-    on left: 40 41, on right: 40 63 64 66 67
-Term (58)
-    on left: 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58, on right:
-    6 31 41 43 45 46 57
-MkDict (59)
-    on left: 59 60 61 62, on right: 51 61 62
-MkDictPair (60)
-    on left: 63 64 65 66 67, on right: 60 61
-
-
-state 0
+"!=" (262) 26
+"//" (263) 12
+"as" (264) 6
+"def" (265) 34 35
+"if" (266) 7 8
+"then" (267) 7 39
+"else" (268) 40
+"elif" (269) 39
+"end" (270) 40
+"and" (271) 11
+"or" (272) 10
+"|=" (273) 14
+"+=" (274) 18
+"-=" (275) 20
+"*=" (276) 22
+"/=" (277) 24
+"//=" (278) 13
+"<=" (279) 29
+">=" (280) 30
+QQSTRING_START (281) 33
+QQSTRING_TEXT (282) 37
+QQSTRING_INTERP_START (283) 38
+QQSTRING_INTERP_END (284) 38
+QQSTRING_END (285) 33
+
+
+Non-terminaux, suivis des règles où ils apparaissent
+
+$accept (50)
+    à gauche: 0
+TopLevel (51)
+    à gauche: 1 2, à droite: 0
+FuncDefs (52)
+    à gauche: 3 4, à droite: 2 4
+Exp (53)
+    à gauche: 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
+    24 25 26 27 28 29 30 31 32, à droite: 1 5 6 7 8 9 10 11 12 13
+    14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 34 35 38 39
+    40 46 49 50 55 67
+String (54)
+    à gauche: 33, à droite: 31 65
+FuncDef (55)
+    à gauche: 34 35, à droite: 4 5
+QQString (56)
+    à gauche: 36 37 38, à droite: 33 37 38
+ElseBody (57)
+    à gauche: 39 40, à droite: 7 39
+ExpD (58)
+    à gauche: 41 42, à droite: 41 64 65 67 68
+Term (59)
+    à gauche: 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59,
+    à droite: 6 32 42 44 46 47 58
+MkDict (60)
+    à gauche: 60 61 62 63, à droite: 52 62 63
+MkDictPair (61)
+    à gauche: 64 65 66 67 68, à droite: 61 62
+
+
+état 0
 
     0 $accept: . TopLevel $end
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    $default  reduce using rule 3 (FuncDefs)
+    $défaut  réduction par utilisation de la règle 3 (FuncDefs)
 
-    TopLevel  go to state 11
-    FuncDefs  go to state 12
-    Exp       go to state 13
-    String    go to state 14
-    FuncDef   go to state 15
-    Term      go to state 16
+    TopLevel  aller à l'état 11
+    FuncDefs  aller à l'état 12
+    Exp       aller à l'état 13
+    String    aller à l'état 14
+    FuncDef   aller à l'état 15
+    Term      aller à l'état 16
 
 
-state 1
+état 1
 
-   53 Term: IDENT .
-   54     | IDENT . '(' Exp ')'
+   54 Term: IDENT .
+   55     | IDENT . '(' Exp ')'
 
-    '('  shift, and go to state 17
+    '('  décalage et aller à l'état 17
 
-    $default  reduce using rule 53 (Term)
+    $défaut  réduction par utilisation de la règle 54 (Term)
 
 
-state 2
+état 2
 
-   47 Term: LITERAL .
+   48 Term: LITERAL .
 
-    $default  reduce using rule 47 (Term)
+    $défaut  réduction par utilisation de la règle 48 (Term)
 
 
-state 3
+état 3
 
-   33 FuncDef: "def" . IDENT ':' Exp ';'
-   34        | "def" . IDENT '(' IDENT ')' ':' Exp ';'
+   34 FuncDef: "def" . IDENT ':' Exp ';'
+   35        | "def" . IDENT '(' IDENT ')' ':' Exp ';'
 
-    IDENT  shift, and go to state 18
+    IDENT  décalage et aller à l'état 18
 
 
-state 4
+état 4
 
     7 Exp: "if" . Exp "then" Exp ElseBody
     8    | "if" . Exp error
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 19
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 19
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 5
+état 5
 
-   32 String: QQSTRING_START . QQString QQSTRING_END
+   33 String: QQSTRING_START . QQString QQSTRING_END
 
-    $default  reduce using rule 35 (QQString)
+    $défaut  réduction par utilisation de la règle 36 (QQString)
 
-    QQString  go to state 21
+    QQString  aller à l'état 21
 
 
-state 6
+état 6
 
-   52 Term: '$' . IDENT
+   53 Term: '$' . IDENT
 
-    IDENT  shift, and go to state 22
+    IDENT  décalage et aller à l'état 22
 
 
-state 7
+état 7
 
-   48 Term: '(' . Exp ')'
-   55     | '(' . error ')'
+   49 Term: '(' . Exp ')'
+   56     | '(' . error ')'
 
-    error           shift, and go to state 23
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    error           décalage et aller à l'état 23
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 24
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 24
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 8
+état 8
 
-   42 Term: '.' .
-   44     | '.' . IDENT
+   43 Term: '.' .
+   45     | '.' . IDENT
 
-    IDENT  shift, and go to state 25
+    IDENT  décalage et aller à l'état 25
 
-    $default  reduce using rule 42 (Term)
+    $défaut  réduction par utilisation de la règle 43 (Term)
 
 
-state 9
+état 9
 
-   49 Term: '[' . Exp ']'
-   50     | '[' . ']'
-   56     | '[' . error ']'
+   50 Term: '[' . Exp ']'
+   51     | '[' . ']'
+   57     | '[' . error ']'
 
-    error           shift, and go to state 26
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    ']'             shift, and go to state 27
-    '{'             shift, and go to state 10
+    error           décalage et aller à l'état 26
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    ']'             décalage et aller à l'état 27
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 28
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 28
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 10
+état 10
 
-   51 Term: '{' . MkDict '}'
-   58     | '{' . error '}'
+   52 Term: '{' . MkDict '}'
+   59     | '{' . error '}'
 
-    error           shift, and go to state 29
-    IDENT           shift, and go to state 30
-    QQSTRING_START  shift, and go to state 5
-    '('             shift, and go to state 31
+    error           décalage et aller à l'état 29
+    IDENT           décalage et aller à l'état 30
+    QQSTRING_START  décalage et aller à l'état 5
+    '('             décalage et aller à l'état 31
 
-    '}'  reduce using rule 59 (MkDict)
+    '}'  réduction par utilisation de la règle 60 (MkDict)
 
-    String      go to state 32
-    MkDict      go to state 33
-    MkDictPair  go to state 34
+    String      aller à l'état 32
+    MkDict      aller à l'état 33
+    MkDictPair  aller à l'état 34
 
 
-state 11
+état 11
 
     0 $accept: TopLevel . $end
 
-    $end  shift, and go to state 35
+    $end  décalage et aller à l'état 35
 
 
-state 12
+état 12
 
     2 TopLevel: FuncDefs .
 
-    $default  reduce using rule 2 (TopLevel)
+    $défaut  réduction par utilisation de la règle 2 (TopLevel)
 
 
-state 13
+état 13
 
     1 TopLevel: Exp .
     9 Exp: Exp . '=' Exp
@@ -367,115 +369,117 @@ state 13
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '|'    shift, and go to state 48
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    $default  reduce using rule 1 (TopLevel)
-
-
-state 14
-
-   30 Exp: String .
-
-    $default  reduce using rule 30 (Exp)
-
-
-state 15
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '|'    décalage et aller à l'état 49
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    $défaut  réduction par utilisation de la règle 1 (TopLevel)
+
+
+état 14
+
+   31 Exp: String .
+
+    $défaut  réduction par utilisation de la règle 31 (Exp)
+
+
+état 15
 
     4 FuncDefs: FuncDef . FuncDefs
     5 Exp: FuncDef . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    $default  reduce using rule 3 (FuncDefs)
+    $défaut  réduction par utilisation de la règle 3 (FuncDefs)
 
-    FuncDefs  go to state 57
-    Exp       go to state 58
-    String    go to state 14
-    FuncDef   go to state 15
-    Term      go to state 16
+    FuncDefs  aller à l'état 58
+    Exp       aller à l'état 59
+    String    aller à l'état 14
+    FuncDef   aller à l'état 15
+    Term      aller à l'état 16
 
 
-state 16
+état 16
 
     6 Exp: Term . "as" '$' IDENT '|' Exp
-   31    | Term .
-   43 Term: Term . '.' IDENT
-   45     | Term . '[' Exp ']'
-   46     | Term . '[' ']'
-   57     | Term . '[' error ']'
+   32    | Term .
+   44 Term: Term . '.' IDENT
+   46     | Term . '[' Exp ']'
+   47     | Term . '[' ']'
+   58     | Term . '[' error ']'
 
-    "as"  shift, and go to state 59
-    '.'   shift, and go to state 60
-    '['   shift, and go to state 61
+    "as"  décalage et aller à l'état 60
+    '.'   décalage et aller à l'état 61
+    '['   décalage et aller à l'état 62
 
-    $default  reduce using rule 31 (Exp)
+    $défaut  réduction par utilisation de la règle 32 (Exp)
 
 
-state 17
+état 17
 
-   54 Term: IDENT '(' . Exp ')'
+   55 Term: IDENT '(' . Exp ')'
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 62
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 63
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 18
+état 18
 
-   33 FuncDef: "def" IDENT . ':' Exp ';'
-   34        | "def" IDENT . '(' IDENT ')' ':' Exp ';'
+   34 FuncDef: "def" IDENT . ':' Exp ';'
+   35        | "def" IDENT . '(' IDENT ')' ':' Exp ';'
 
-    ':'  shift, and go to state 63
-    '('  shift, and go to state 64
+    ':'  décalage et aller à l'état 64
+    '('  décalage et aller à l'état 65
 
 
-state 19
+état 19
 
     7 Exp: "if" Exp . "then" Exp ElseBody
     8    | "if" Exp . error
@@ -496,83 +500,85 @@ state 19
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    error   shift, and go to state 65
-    "=="    shift, and go to state 36
-    "//"    shift, and go to state 37
-    "then"  shift, and go to state 66
-    "and"   shift, and go to state 38
-    "or"    shift, and go to state 39
-    "|="    shift, and go to state 40
-    "+="    shift, and go to state 41
-    "-="    shift, and go to state 42
-    "*="    shift, and go to state 43
-    "/="    shift, and go to state 44
-    "//="   shift, and go to state 45
-    "<="    shift, and go to state 46
-    ">="    shift, and go to state 47
-    '|'     shift, and go to state 48
-    ','     shift, and go to state 49
-    '='     shift, and go to state 50
-    '<'     shift, and go to state 51
-    '>'     shift, and go to state 52
-    '+'     shift, and go to state 53
-    '-'     shift, and go to state 54
-    '*'     shift, and go to state 55
-    '/'     shift, and go to state 56
-
-
-state 20
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    error   décalage et aller à l'état 66
+    "=="    décalage et aller à l'état 36
+    "!="    décalage et aller à l'état 37
+    "//"    décalage et aller à l'état 38
+    "then"  décalage et aller à l'état 67
+    "and"   décalage et aller à l'état 39
+    "or"    décalage et aller à l'état 40
+    "|="    décalage et aller à l'état 41
+    "+="    décalage et aller à l'état 42
+    "-="    décalage et aller à l'état 43
+    "*="    décalage et aller à l'état 44
+    "/="    décalage et aller à l'état 45
+    "//="   décalage et aller à l'état 46
+    "<="    décalage et aller à l'état 47
+    ">="    décalage et aller à l'état 48
+    '|'     décalage et aller à l'état 49
+    ','     décalage et aller à l'état 50
+    '='     décalage et aller à l'état 51
+    '<'     décalage et aller à l'état 52
+    '>'     décalage et aller à l'état 53
+    '+'     décalage et aller à l'état 54
+    '-'     décalage et aller à l'état 55
+    '*'     décalage et aller à l'état 56
+    '/'     décalage et aller à l'état 57
+
+
+état 20
 
     5 Exp: FuncDef . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 58
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 59
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 21
+état 21
 
-   32 String: QQSTRING_START QQString . QQSTRING_END
-   36 QQString: QQString . QQSTRING_TEXT
-   37         | QQString . QQSTRING_INTERP_START Exp QQSTRING_INTERP_END
+   33 String: QQSTRING_START QQString . QQSTRING_END
+   37 QQString: QQString . QQSTRING_TEXT
+   38         | QQString . QQSTRING_INTERP_START Exp QQSTRING_INTERP_END
 
-    QQSTRING_TEXT          shift, and go to state 67
-    QQSTRING_INTERP_START  shift, and go to state 68
-    QQSTRING_END           shift, and go to state 69
+    QQSTRING_TEXT          décalage et aller à l'état 68
+    QQSTRING_INTERP_START  décalage et aller à l'état 69
+    QQSTRING_END           décalage et aller à l'état 70
 
 
-state 22
+état 22
 
-   52 Term: '$' IDENT .
+   53 Term: '$' IDENT .
 
-    $default  reduce using rule 52 (Term)
+    $défaut  réduction par utilisation de la règle 53 (Term)
 
 
-state 23
+état 23
 
-   55 Term: '(' error . ')'
+   56 Term: '(' error . ')'
 
-    ')'  shift, and go to state 70
+    ')'  décalage et aller à l'état 71
 
 
-state 24
+état 24
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -591,58 +597,60 @@ state 24
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   48 Term: '(' Exp . ')'
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   49 Term: '(' Exp . ')'
 
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '|'    shift, and go to state 48
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-    ')'    shift, and go to state 71
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '|'    décalage et aller à l'état 49
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+    ')'    décalage et aller à l'état 72
 
 
-state 25
+état 25
 
-   44 Term: '.' IDENT .
+   45 Term: '.' IDENT .
 
-    $default  reduce using rule 44 (Term)
+    $défaut  réduction par utilisation de la règle 45 (Term)
 
 
-state 26
+état 26
 
-   56 Term: '[' error . ']'
+   57 Term: '[' error . ']'
 
-    ']'  shift, and go to state 72
+    ']'  décalage et aller à l'état 73
 
 
-state 27
+état 27
 
-   50 Term: '[' ']' .
+   51 Term: '[' ']' .
 
-    $default  reduce using rule 50 (Term)
+    $défaut  réduction par utilisation de la règle 51 (Term)
 
 
-state 28
+état 28
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -661,558 +669,581 @@ state 28
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   49 Term: '[' Exp . ']'
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   50 Term: '[' Exp . ']'
 
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '|'    shift, and go to state 48
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-    ']'    shift, and go to state 73
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '|'    décalage et aller à l'état 49
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+    ']'    décalage et aller à l'état 74
 
 
-state 29
+état 29
 
-   58 Term: '{' error . '}'
-   62 MkDict: error . ',' MkDict
+   59 Term: '{' error . '}'
+   63 MkDict: error . ',' MkDict
 
-    ','  shift, and go to state 74
-    '}'  shift, and go to state 75
+    ','  décalage et aller à l'état 75
+    '}'  décalage et aller à l'état 76
 
 
-state 30
+état 30
 
-   63 MkDictPair: IDENT . ':' ExpD
-   65           | IDENT .
+   64 MkDictPair: IDENT . ':' ExpD
+   66           | IDENT .
 
-    ':'  shift, and go to state 76
+    ':'  décalage et aller à l'état 77
 
-    $default  reduce using rule 65 (MkDictPair)
+    $défaut  réduction par utilisation de la règle 66 (MkDictPair)
 
 
-state 31
+état 31
 
-   66 MkDictPair: '(' . Exp ')' ':' ExpD
-   67           | '(' . error ')' ':' ExpD
+   67 MkDictPair: '(' . Exp ')' ':' ExpD
+   68           | '(' . error ')' ':' ExpD
 
-    error           shift, and go to state 77
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    error           décalage et aller à l'état 78
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 78
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 79
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 32
+état 32
 
-   64 MkDictPair: String . ':' ExpD
+   65 MkDictPair: String . ':' ExpD
 
-    ':'  shift, and go to state 79
+    ':'  décalage et aller à l'état 80
 
 
-state 33
+état 33
 
-   51 Term: '{' MkDict . '}'
+   52 Term: '{' MkDict . '}'
 
-    '}'  shift, and go to state 80
+    '}'  décalage et aller à l'état 81
 
 
-state 34
+état 34
 
-   60 MkDict: MkDictPair .
-   61       | MkDictPair . ',' MkDict
+   61 MkDict: MkDictPair .
+   62       | MkDictPair . ',' MkDict
 
-    ','  shift, and go to state 81
+    ','  décalage et aller à l'état 82
 
-    $default  reduce using rule 60 (MkDict)
+    $défaut  réduction par utilisation de la règle 61 (MkDict)
 
 
-state 35
+état 35
 
     0 $accept: TopLevel $end .
 
-    $default  accept
+    $défaut  accepter
 
 
-state 36
+état 36
 
    25 Exp: Exp "==" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
+
+    Exp      aller à l'état 83
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
-    Exp      go to state 82
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
 
+état 37
 
-state 37
+   26 Exp: Exp "!=" . Exp
+
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
+
+    Exp      aller à l'état 84
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
+
+
+état 38
 
    12 Exp: Exp "//" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 83
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 85
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 38
+état 39
 
    11 Exp: Exp "and" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 84
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 86
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 39
+état 40
 
    10 Exp: Exp "or" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 85
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 87
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 40
+état 41
 
    14 Exp: Exp "|=" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 86
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 88
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 41
+état 42
 
    18 Exp: Exp "+=" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 87
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 89
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 42
+état 43
 
    20 Exp: Exp "-=" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 88
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 90
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 43
+état 44
 
    22 Exp: Exp "*=" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 89
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 91
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 44
+état 45
 
    24 Exp: Exp "/=" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 90
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 92
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 45
+état 46
 
    13 Exp: Exp "//=" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 91
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 93
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 46
+état 47
 
-   28 Exp: Exp "<=" . Exp
+   29 Exp: Exp "<=" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 92
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 94
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 47
+état 48
 
-   29 Exp: Exp ">=" . Exp
+   30 Exp: Exp ">=" . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 93
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 95
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 48
+état 49
 
    15 Exp: Exp '|' . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 94
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 96
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 49
+état 50
 
    16 Exp: Exp ',' . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 95
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 97
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 50
+état 51
 
     9 Exp: Exp '=' . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 96
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 98
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 51
+état 52
 
-   26 Exp: Exp '<' . Exp
+   27 Exp: Exp '<' . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 97
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 99
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 52
+état 53
 
-   27 Exp: Exp '>' . Exp
+   28 Exp: Exp '>' . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 98
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 100
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 53
+état 54
 
    17 Exp: Exp '+' . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 99
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 101
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 54
+état 55
 
    19 Exp: Exp '-' . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 100
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 102
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 55
+état 56
 
    21 Exp: Exp '*' . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 101
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 103
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 56
+état 57
 
    23 Exp: Exp '/' . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 102
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 104
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 57
+état 58
 
     4 FuncDefs: FuncDef FuncDefs .
 
-    $default  reduce using rule 4 (FuncDefs)
+    $défaut  réduction par utilisation de la règle 4 (FuncDefs)
 
 
-state 58
+état 59
 
     5 Exp: FuncDef Exp .
     9    | Exp . '=' Exp
@@ -1232,76 +1263,78 @@ state 58
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '|'    shift, and go to state 48
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    $default  reduce using rule 5 (Exp)
-
-
-state 59
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '|'    décalage et aller à l'état 49
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    $défaut  réduction par utilisation de la règle 5 (Exp)
+
+
+état 60
 
     6 Exp: Term "as" . '$' IDENT '|' Exp
 
-    '$'  shift, and go to state 103
+    '$'  décalage et aller à l'état 105
 
 
-state 60
+état 61
 
-   43 Term: Term '.' . IDENT
+   44 Term: Term '.' . IDENT
 
-    IDENT  shift, and go to state 104
+    IDENT  décalage et aller à l'état 106
 
 
-state 61
+état 62
 
-   45 Term: Term '[' . Exp ']'
-   46     | Term '[' . ']'
-   57     | Term '[' . error ']'
+   46 Term: Term '[' . Exp ']'
+   47     | Term '[' . ']'
+   58     | Term '[' . error ']'
 
-    error           shift, and go to state 105
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    ']'             shift, and go to state 106
-    '{'             shift, and go to state 10
+    error           décalage et aller à l'état 107
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    ']'             décalage et aller à l'état 108
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 107
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 109
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 62
+état 63
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1320,202 +1353,204 @@ state 62
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   54 Term: IDENT '(' Exp . ')'
-
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '|'    shift, and go to state 48
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-    ')'    shift, and go to state 108
-
-
-state 63
-
-   33 FuncDef: "def" IDENT ':' . Exp ';'
-
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
-
-    Exp      go to state 109
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
-
-
-state 64
-
-   34 FuncDef: "def" IDENT '(' . IDENT ')' ':' Exp ';'
-
-    IDENT  shift, and go to state 110
-
-
-state 65
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   55 Term: IDENT '(' Exp . ')'
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '|'    décalage et aller à l'état 49
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+    ')'    décalage et aller à l'état 110
+
+
+état 64
+
+   34 FuncDef: "def" IDENT ':' . Exp ';'
+
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
+
+    Exp      aller à l'état 111
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
+
+
+état 65
+
+   35 FuncDef: "def" IDENT '(' . IDENT ')' ':' Exp ';'
+
+    IDENT  décalage et aller à l'état 112
+
+
+état 66
 
     8 Exp: "if" Exp error .
 
-    $default  reduce using rule 8 (Exp)
+    $défaut  réduction par utilisation de la règle 8 (Exp)
 
 
-state 66
+état 67
 
     7 Exp: "if" Exp "then" . Exp ElseBody
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 111
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 113
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 67
+état 68
 
-   36 QQString: QQString QQSTRING_TEXT .
+   37 QQString: QQString QQSTRING_TEXT .
 
-    $default  reduce using rule 36 (QQString)
+    $défaut  réduction par utilisation de la règle 37 (QQString)
 
 
-state 68
+état 69
 
-   37 QQString: QQString QQSTRING_INTERP_START . Exp QQSTRING_INTERP_END
+   38 QQString: QQString QQSTRING_INTERP_START . Exp QQSTRING_INTERP_END
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 112
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 114
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 69
+état 70
 
-   32 String: QQSTRING_START QQString QQSTRING_END .
+   33 String: QQSTRING_START QQString QQSTRING_END .
 
-    $default  reduce using rule 32 (String)
+    $défaut  réduction par utilisation de la règle 33 (String)
 
 
-state 70
+état 71
 
-   55 Term: '(' error ')' .
+   56 Term: '(' error ')' .
 
-    $default  reduce using rule 55 (Term)
+    $défaut  réduction par utilisation de la règle 56 (Term)
 
 
-state 71
+état 72
 
-   48 Term: '(' Exp ')' .
+   49 Term: '(' Exp ')' .
 
-    $default  reduce using rule 48 (Term)
+    $défaut  réduction par utilisation de la règle 49 (Term)
 
 
-state 72
+état 73
 
-   56 Term: '[' error ']' .
+   57 Term: '[' error ']' .
 
-    $default  reduce using rule 56 (Term)
+    $défaut  réduction par utilisation de la règle 57 (Term)
 
 
-state 73
+état 74
 
-   49 Term: '[' Exp ']' .
+   50 Term: '[' Exp ']' .
 
-    $default  reduce using rule 49 (Term)
+    $défaut  réduction par utilisation de la règle 50 (Term)
 
 
-state 74
+état 75
 
-   62 MkDict: error ',' . MkDict
+   63 MkDict: error ',' . MkDict
 
-    error           shift, and go to state 113
-    IDENT           shift, and go to state 30
-    QQSTRING_START  shift, and go to state 5
-    '('             shift, and go to state 31
+    error           décalage et aller à l'état 115
+    IDENT           décalage et aller à l'état 30
+    QQSTRING_START  décalage et aller à l'état 5
+    '('             décalage et aller à l'état 31
 
-    '}'  reduce using rule 59 (MkDict)
+    '}'  réduction par utilisation de la règle 60 (MkDict)
 
-    String      go to state 32
-    MkDict      go to state 114
-    MkDictPair  go to state 34
+    String      aller à l'état 32
+    MkDict      aller à l'état 116
+    MkDictPair  aller à l'état 34
 
 
-state 75
+état 76
 
-   58 Term: '{' error '}' .
+   59 Term: '{' error '}' .
 
-    $default  reduce using rule 58 (Term)
+    $défaut  réduction par utilisation de la règle 59 (Term)
 
 
-state 76
+état 77
 
-   63 MkDictPair: IDENT ':' . ExpD
+   64 MkDictPair: IDENT ':' . ExpD
 
-    IDENT    shift, and go to state 1
-    LITERAL  shift, and go to state 2
-    '$'      shift, and go to state 6
-    '('      shift, and go to state 7
-    '.'      shift, and go to state 8
-    '['      shift, and go to state 9
-    '{'      shift, and go to state 10
+    IDENT    décalage et aller à l'état 1
+    LITERAL  décalage et aller à l'état 2
+    '$'      décalage et aller à l'état 6
+    '('      décalage et aller à l'état 7
+    '.'      décalage et aller à l'état 8
+    '['      décalage et aller à l'état 9
+    '{'      décalage et aller à l'état 10
 
-    ExpD  go to state 115
-    Term  go to state 116
+    ExpD  aller à l'état 117
+    Term  aller à l'état 118
 
 
-state 77
+état 78
 
-   67 MkDictPair: '(' error . ')' ':' ExpD
+   68 MkDictPair: '(' error . ')' ':' ExpD
 
-    ')'  shift, and go to state 117
+    ')'  décalage et aller à l'état 119
 
 
-state 78
+état 79
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1534,76 +1569,78 @@ state 78
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   66 MkDictPair: '(' Exp . ')' ':' ExpD
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   67 MkDictPair: '(' Exp . ')' ':' ExpD
 
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '|'    shift, and go to state 48
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-    ')'    shift, and go to state 118
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '|'    décalage et aller à l'état 49
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+    ')'    décalage et aller à l'état 120
 
 
-state 79
+état 80
 
-   64 MkDictPair: String ':' . ExpD
+   65 MkDictPair: String ':' . ExpD
 
-    IDENT    shift, and go to state 1
-    LITERAL  shift, and go to state 2
-    '$'      shift, and go to state 6
-    '('      shift, and go to state 7
-    '.'      shift, and go to state 8
-    '['      shift, and go to state 9
-    '{'      shift, and go to state 10
+    IDENT    décalage et aller à l'état 1
+    LITERAL  décalage et aller à l'état 2
+    '$'      décalage et aller à l'état 6
+    '('      décalage et aller à l'état 7
+    '.'      décalage et aller à l'état 8
+    '['      décalage et aller à l'état 9
+    '{'      décalage et aller à l'état 10
 
-    ExpD  go to state 119
-    Term  go to state 116
+    ExpD  aller à l'état 121
+    Term  aller à l'état 118
 
 
-state 80
+état 81
 
-   51 Term: '{' MkDict '}' .
+   52 Term: '{' MkDict '}' .
 
-    $default  reduce using rule 51 (Term)
+    $défaut  réduction par utilisation de la règle 52 (Term)
 
 
-state 81
+état 82
 
-   61 MkDict: MkDictPair ',' . MkDict
+   62 MkDict: MkDictPair ',' . MkDict
 
-    error           shift, and go to state 113
-    IDENT           shift, and go to state 30
-    QQSTRING_START  shift, and go to state 5
-    '('             shift, and go to state 31
+    error           décalage et aller à l'état 115
+    IDENT           décalage et aller à l'état 30
+    QQSTRING_START  décalage et aller à l'état 5
+    '('             décalage et aller à l'état 31
 
-    '}'  reduce using rule 59 (MkDict)
+    '}'  réduction par utilisation de la règle 60 (MkDict)
 
-    String      go to state 32
-    MkDict      go to state 120
-    MkDictPair  go to state 34
+    String      aller à l'état 32
+    MkDict      aller à l'état 122
+    MkDictPair  aller à l'état 34
 
 
-state 82
+état 83
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1623,26 +1660,69 @@ state 82
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
    25    | Exp "==" Exp .
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    '+'  décalage et aller à l'état 54
+    '-'  décalage et aller à l'état 55
+    '*'  décalage et aller à l'état 56
+    '/'  décalage et aller à l'état 57
+
+    "=="  erreur (non-associative)
+    "!="  erreur (non-associative)
+    "<="  erreur (non-associative)
+    ">="  erreur (non-associative)
+    '<'   erreur (non-associative)
+    '>'   erreur (non-associative)
+
+    $défaut  réduction par utilisation de la règle 25 (Exp)
+
+
+état 84
+
+    9 Exp: Exp . '=' Exp
+   10    | Exp . "or" Exp
+   11    | Exp . "and" Exp
+   12    | Exp . "//" Exp
+   13    | Exp . "//=" Exp
+   14    | Exp . "|=" Exp
+   15    | Exp . '|' Exp
+   16    | Exp . ',' Exp
+   17    | Exp . '+' Exp
+   18    | Exp . "+=" Exp
+   19    | Exp . '-' Exp
+   20    | Exp . "-=" Exp
+   21    | Exp . '*' Exp
+   22    | Exp . "*=" Exp
+   23    | Exp . '/' Exp
+   24    | Exp . "/=" Exp
+   25    | Exp . "==" Exp
+   26    | Exp . "!=" Exp
+   26    | Exp "!=" Exp .
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
 
-    '+'  shift, and go to state 53
-    '-'  shift, and go to state 54
-    '*'  shift, and go to state 55
-    '/'  shift, and go to state 56
+    '+'  décalage et aller à l'état 54
+    '-'  décalage et aller à l'état 55
+    '*'  décalage et aller à l'état 56
+    '/'  décalage et aller à l'état 57
 
-    "=="  error (nonassociative)
-    "<="  error (nonassociative)
-    ">="  error (nonassociative)
-    '<'   error (nonassociative)
-    '>'   error (nonassociative)
+    "=="  erreur (non-associative)
+    "!="  erreur (non-associative)
+    "<="  erreur (non-associative)
+    ">="  erreur (non-associative)
+    '<'   erreur (non-associative)
+    '>'   erreur (non-associative)
 
-    $default  reduce using rule 25 (Exp)
+    $défaut  réduction par utilisation de la règle 26 (Exp)
 
 
-state 83
+état 85
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1662,35 +1742,37 @@ state 83
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    $default  reduce using rule 12 (Exp)
-
-
-state 84
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    $défaut  réduction par utilisation de la règle 12 (Exp)
+
+
+état 86
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1710,25 +1792,27 @@ state 84
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
 
-    "=="  shift, and go to state 36
-    "<="  shift, and go to state 46
-    ">="  shift, and go to state 47
-    '<'   shift, and go to state 51
-    '>'   shift, and go to state 52
-    '+'   shift, and go to state 53
-    '-'   shift, and go to state 54
-    '*'   shift, and go to state 55
-    '/'   shift, and go to state 56
+    "=="  décalage et aller à l'état 36
+    "!="  décalage et aller à l'état 37
+    "<="  décalage et aller à l'état 47
+    ">="  décalage et aller à l'état 48
+    '<'   décalage et aller à l'état 52
+    '>'   décalage et aller à l'état 53
+    '+'   décalage et aller à l'état 54
+    '-'   décalage et aller à l'état 55
+    '*'   décalage et aller à l'état 56
+    '/'   décalage et aller à l'état 57
 
-    $default  reduce using rule 11 (Exp)
+    $défaut  réduction par utilisation de la règle 11 (Exp)
 
 
-state 85
+état 87
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1748,26 +1832,28 @@ state 85
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
 
-    "=="   shift, and go to state 36
-    "and"  shift, and go to state 38
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "and"  décalage et aller à l'état 39
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
 
-    $default  reduce using rule 10 (Exp)
+    $défaut  réduction par utilisation de la règle 10 (Exp)
 
 
-state 86
+état 88
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1787,35 +1873,37 @@ state 86
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    "|="   error (nonassociative)
-    "+="   error (nonassociative)
-    "-="   error (nonassociative)
-    "*="   error (nonassociative)
-    "/="   error (nonassociative)
-    "//="  error (nonassociative)
-    '='    error (nonassociative)
-
-    $default  reduce using rule 14 (Exp)
-
-
-state 87
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    "|="   erreur (non-associative)
+    "+="   erreur (non-associative)
+    "-="   erreur (non-associative)
+    "*="   erreur (non-associative)
+    "/="   erreur (non-associative)
+    "//="  erreur (non-associative)
+    '='    erreur (non-associative)
+
+    $défaut  réduction par utilisation de la règle 14 (Exp)
+
+
+état 89
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1835,35 +1923,37 @@ state 87
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    "|="   error (nonassociative)
-    "+="   error (nonassociative)
-    "-="   error (nonassociative)
-    "*="   error (nonassociative)
-    "/="   error (nonassociative)
-    "//="  error (nonassociative)
-    '='    error (nonassociative)
-
-    $default  reduce using rule 18 (Exp)
-
-
-state 88
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    "|="   erreur (non-associative)
+    "+="   erreur (non-associative)
+    "-="   erreur (non-associative)
+    "*="   erreur (non-associative)
+    "/="   erreur (non-associative)
+    "//="  erreur (non-associative)
+    '='    erreur (non-associative)
+
+    $défaut  réduction par utilisation de la règle 18 (Exp)
+
+
+état 90
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1883,35 +1973,37 @@ state 88
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    "|="   error (nonassociative)
-    "+="   error (nonassociative)
-    "-="   error (nonassociative)
-    "*="   error (nonassociative)
-    "/="   error (nonassociative)
-    "//="  error (nonassociative)
-    '='    error (nonassociative)
-
-    $default  reduce using rule 20 (Exp)
-
-
-state 89
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    "|="   erreur (non-associative)
+    "+="   erreur (non-associative)
+    "-="   erreur (non-associative)
+    "*="   erreur (non-associative)
+    "/="   erreur (non-associative)
+    "//="  erreur (non-associative)
+    '='    erreur (non-associative)
+
+    $défaut  réduction par utilisation de la règle 20 (Exp)
+
+
+état 91
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1931,35 +2023,37 @@ state 89
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    "|="   error (nonassociative)
-    "+="   error (nonassociative)
-    "-="   error (nonassociative)
-    "*="   error (nonassociative)
-    "/="   error (nonassociative)
-    "//="  error (nonassociative)
-    '='    error (nonassociative)
-
-    $default  reduce using rule 22 (Exp)
-
-
-state 90
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    "|="   erreur (non-associative)
+    "+="   erreur (non-associative)
+    "-="   erreur (non-associative)
+    "*="   erreur (non-associative)
+    "/="   erreur (non-associative)
+    "//="  erreur (non-associative)
+    '='    erreur (non-associative)
+
+    $défaut  réduction par utilisation de la règle 22 (Exp)
+
+
+état 92
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -1979,35 +2073,37 @@ state 90
    24    | Exp . "/=" Exp
    24    | Exp "/=" Exp .
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    "|="   error (nonassociative)
-    "+="   error (nonassociative)
-    "-="   error (nonassociative)
-    "*="   error (nonassociative)
-    "/="   error (nonassociative)
-    "//="  error (nonassociative)
-    '='    error (nonassociative)
-
-    $default  reduce using rule 24 (Exp)
-
-
-state 91
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    "|="   erreur (non-associative)
+    "+="   erreur (non-associative)
+    "-="   erreur (non-associative)
+    "*="   erreur (non-associative)
+    "/="   erreur (non-associative)
+    "//="  erreur (non-associative)
+    '='    erreur (non-associative)
+
+    $défaut  réduction par utilisation de la règle 24 (Exp)
+
+
+état 93
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2027,35 +2123,37 @@ state 91
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    "|="   error (nonassociative)
-    "+="   error (nonassociative)
-    "-="   error (nonassociative)
-    "*="   error (nonassociative)
-    "/="   error (nonassociative)
-    "//="  error (nonassociative)
-    '='    error (nonassociative)
-
-    $default  reduce using rule 13 (Exp)
-
-
-state 92
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    "|="   erreur (non-associative)
+    "+="   erreur (non-associative)
+    "-="   erreur (non-associative)
+    "*="   erreur (non-associative)
+    "/="   erreur (non-associative)
+    "//="  erreur (non-associative)
+    '='    erreur (non-associative)
+
+    $défaut  réduction par utilisation de la règle 13 (Exp)
+
+
+état 94
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2074,27 +2172,29 @@ state 92
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   28    | Exp "<=" Exp .
-   29    | Exp . ">=" Exp
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   29    | Exp "<=" Exp .
+   30    | Exp . ">=" Exp
 
-    '+'  shift, and go to state 53
-    '-'  shift, and go to state 54
-    '*'  shift, and go to state 55
-    '/'  shift, and go to state 56
+    '+'  décalage et aller à l'état 54
+    '-'  décalage et aller à l'état 55
+    '*'  décalage et aller à l'état 56
+    '/'  décalage et aller à l'état 57
 
-    "=="  error (nonassociative)
-    "<="  error (nonassociative)
-    ">="  error (nonassociative)
-    '<'   error (nonassociative)
-    '>'   error (nonassociative)
+    "=="  erreur (non-associative)
+    "!="  erreur (non-associative)
+    "<="  erreur (non-associative)
+    ">="  erreur (non-associative)
+    '<'   erreur (non-associative)
+    '>'   erreur (non-associative)
 
-    $default  reduce using rule 28 (Exp)
+    $défaut  réduction par utilisation de la règle 29 (Exp)
 
 
-state 93
+état 95
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2113,27 +2213,29 @@ state 93
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   29    | Exp ">=" Exp .
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   30    | Exp ">=" Exp .
 
-    '+'  shift, and go to state 53
-    '-'  shift, and go to state 54
-    '*'  shift, and go to state 55
-    '/'  shift, and go to state 56
+    '+'  décalage et aller à l'état 54
+    '-'  décalage et aller à l'état 55
+    '*'  décalage et aller à l'état 56
+    '/'  décalage et aller à l'état 57
 
-    "=="  error (nonassociative)
-    "<="  error (nonassociative)
-    ">="  error (nonassociative)
-    '<'   error (nonassociative)
-    '>'   error (nonassociative)
+    "=="  erreur (non-associative)
+    "!="  erreur (non-associative)
+    "<="  erreur (non-associative)
+    ">="  erreur (non-associative)
+    '<'   erreur (non-associative)
+    '>'   erreur (non-associative)
 
-    $default  reduce using rule 29 (Exp)
+    $défaut  réduction par utilisation de la règle 30 (Exp)
 
 
-state 94
+état 96
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2153,36 +2255,38 @@ state 94
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    $default  reduce using rule 15 (Exp)
-
-
-state 95
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    $défaut  réduction par utilisation de la règle 15 (Exp)
+
+
+état 97
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2202,35 +2306,37 @@ state 95
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    $default  reduce using rule 16 (Exp)
-
-
-state 96
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    $défaut  réduction par utilisation de la règle 16 (Exp)
+
+
+état 98
 
     9 Exp: Exp . '=' Exp
     9    | Exp '=' Exp .
@@ -2250,35 +2356,37 @@ state 96
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    "|="   error (nonassociative)
-    "+="   error (nonassociative)
-    "-="   error (nonassociative)
-    "*="   error (nonassociative)
-    "/="   error (nonassociative)
-    "//="  error (nonassociative)
-    '='    error (nonassociative)
-
-    $default  reduce using rule 9 (Exp)
-
-
-state 97
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    "|="   erreur (non-associative)
+    "+="   erreur (non-associative)
+    "-="   erreur (non-associative)
+    "*="   erreur (non-associative)
+    "/="   erreur (non-associative)
+    "//="  erreur (non-associative)
+    '='    erreur (non-associative)
+
+    $défaut  réduction par utilisation de la règle 9 (Exp)
+
+
+état 99
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2297,27 +2405,29 @@ state 97
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   26    | Exp '<' Exp .
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   27    | Exp '<' Exp .
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
 
-    '+'  shift, and go to state 53
-    '-'  shift, and go to state 54
-    '*'  shift, and go to state 55
-    '/'  shift, and go to state 56
+    '+'  décalage et aller à l'état 54
+    '-'  décalage et aller à l'état 55
+    '*'  décalage et aller à l'état 56
+    '/'  décalage et aller à l'état 57
 
-    "=="  error (nonassociative)
-    "<="  error (nonassociative)
-    ">="  error (nonassociative)
-    '<'   error (nonassociative)
-    '>'   error (nonassociative)
+    "=="  erreur (non-associative)
+    "!="  erreur (non-associative)
+    "<="  erreur (non-associative)
+    ">="  erreur (non-associative)
+    '<'   erreur (non-associative)
+    '>'   erreur (non-associative)
 
-    $default  reduce using rule 26 (Exp)
+    $défaut  réduction par utilisation de la règle 27 (Exp)
 
 
-state 98
+état 100
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2336,27 +2446,29 @@ state 98
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   27    | Exp '>' Exp .
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   28    | Exp '>' Exp .
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
 
-    '+'  shift, and go to state 53
-    '-'  shift, and go to state 54
-    '*'  shift, and go to state 55
-    '/'  shift, and go to state 56
+    '+'  décalage et aller à l'état 54
+    '-'  décalage et aller à l'état 55
+    '*'  décalage et aller à l'état 56
+    '/'  décalage et aller à l'état 57
 
-    "=="  error (nonassociative)
-    "<="  error (nonassociative)
-    ">="  error (nonassociative)
-    '<'   error (nonassociative)
-    '>'   error (nonassociative)
+    "=="  erreur (non-associative)
+    "!="  erreur (non-associative)
+    "<="  erreur (non-associative)
+    ">="  erreur (non-associative)
+    '<'   erreur (non-associative)
+    '>'   erreur (non-associative)
 
-    $default  reduce using rule 27 (Exp)
+    $défaut  réduction par utilisation de la règle 28 (Exp)
 
 
-state 99
+état 101
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2376,18 +2488,19 @@ state 99
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
 
-    '*'  shift, and go to state 55
-    '/'  shift, and go to state 56
+    '*'  décalage et aller à l'état 56
+    '/'  décalage et aller à l'état 57
 
-    $default  reduce using rule 17 (Exp)
+    $défaut  réduction par utilisation de la règle 17 (Exp)
 
 
-state 100
+état 102
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2407,18 +2520,19 @@ state 100
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
 
-    '*'  shift, and go to state 55
-    '/'  shift, and go to state 56
+    '*'  décalage et aller à l'état 56
+    '/'  décalage et aller à l'état 57
 
-    $default  reduce using rule 19 (Exp)
+    $défaut  réduction par utilisation de la règle 19 (Exp)
 
 
-state 101
+état 103
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2438,15 +2552,16 @@ state 101
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
 
-    $default  reduce using rule 21 (Exp)
+    $défaut  réduction par utilisation de la règle 21 (Exp)
 
 
-state 102
+état 104
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2466,43 +2581,44 @@ state 102
    23    | Exp '/' Exp .
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
 
-    $default  reduce using rule 23 (Exp)
+    $défaut  réduction par utilisation de la règle 23 (Exp)
 
 
-state 103
+état 105
 
     6 Exp: Term "as" '$' . IDENT '|' Exp
 
-    IDENT  shift, and go to state 121
+    IDENT  décalage et aller à l'état 123
 
 
-state 104
+état 106
 
-   43 Term: Term '.' IDENT .
+   44 Term: Term '.' IDENT .
 
-    $default  reduce using rule 43 (Term)
+    $défaut  réduction par utilisation de la règle 44 (Term)
 
 
-state 105
+état 107
 
-   57 Term: Term '[' error . ']'
+   58 Term: Term '[' error . ']'
 
-    ']'  shift, and go to state 122
+    ']'  décalage et aller à l'état 124
 
 
-state 106
+état 108
 
-   46 Term: Term '[' ']' .
+   47 Term: Term '[' ']' .
 
-    $default  reduce using rule 46 (Term)
+    $défaut  réduction par utilisation de la règle 47 (Term)
 
 
-state 107
+état 109
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2521,44 +2637,46 @@ state 107
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   45 Term: Term '[' Exp . ']'
-
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '|'    shift, and go to state 48
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-    ']'    shift, and go to state 123
-
-
-state 108
-
-   54 Term: IDENT '(' Exp ')' .
-
-    $default  reduce using rule 54 (Term)
-
-
-state 109
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   46 Term: Term '[' Exp . ']'
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '|'    décalage et aller à l'état 49
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+    ']'    décalage et aller à l'état 125
+
+
+état 110
+
+   55 Term: IDENT '(' Exp ')' .
+
+    $défaut  réduction par utilisation de la règle 55 (Term)
+
+
+état 111
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2577,44 +2695,46 @@ state 109
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   33 FuncDef: "def" IDENT ':' Exp . ';'
-
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    ';'    shift, and go to state 124
-    '|'    shift, and go to state 48
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-
-state 110
-
-   34 FuncDef: "def" IDENT '(' IDENT . ')' ':' Exp ';'
-
-    ')'  shift, and go to state 125
-
-
-state 111
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   34 FuncDef: "def" IDENT ':' Exp . ';'
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    ';'    décalage et aller à l'état 126
+    '|'    décalage et aller à l'état 49
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+
+état 112
+
+   35 FuncDef: "def" IDENT '(' IDENT . ')' ':' Exp ';'
+
+    ')'  décalage et aller à l'état 127
+
+
+état 113
 
     7 Exp: "if" Exp "then" Exp . ElseBody
     9    | Exp . '=' Exp
@@ -2634,39 +2754,41 @@ state 111
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="    shift, and go to state 36
-    "//"    shift, and go to state 37
-    "else"  shift, and go to state 126
-    "elif"  shift, and go to state 127
-    "and"   shift, and go to state 38
-    "or"    shift, and go to state 39
-    "|="    shift, and go to state 40
-    "+="    shift, and go to state 41
-    "-="    shift, and go to state 42
-    "*="    shift, and go to state 43
-    "/="    shift, and go to state 44
-    "//="   shift, and go to state 45
-    "<="    shift, and go to state 46
-    ">="    shift, and go to state 47
-    '|'     shift, and go to state 48
-    ','     shift, and go to state 49
-    '='     shift, and go to state 50
-    '<'     shift, and go to state 51
-    '>'     shift, and go to state 52
-    '+'     shift, and go to state 53
-    '-'     shift, and go to state 54
-    '*'     shift, and go to state 55
-    '/'     shift, and go to state 56
-
-    ElseBody  go to state 128
-
-
-state 112
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="    décalage et aller à l'état 36
+    "!="    décalage et aller à l'état 37
+    "//"    décalage et aller à l'état 38
+    "else"  décalage et aller à l'état 128
+    "elif"  décalage et aller à l'état 129
+    "and"   décalage et aller à l'état 39
+    "or"    décalage et aller à l'état 40
+    "|="    décalage et aller à l'état 41
+    "+="    décalage et aller à l'état 42
+    "-="    décalage et aller à l'état 43
+    "*="    décalage et aller à l'état 44
+    "/="    décalage et aller à l'état 45
+    "//="   décalage et aller à l'état 46
+    "<="    décalage et aller à l'état 47
+    ">="    décalage et aller à l'état 48
+    '|'     décalage et aller à l'état 49
+    ','     décalage et aller à l'état 50
+    '='     décalage et aller à l'état 51
+    '<'     décalage et aller à l'état 52
+    '>'     décalage et aller à l'état 53
+    '+'     décalage et aller à l'état 54
+    '-'     décalage et aller à l'état 55
+    '*'     décalage et aller à l'état 56
+    '/'     décalage et aller à l'état 57
+
+    ElseBody  aller à l'état 130
+
+
+état 114
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2685,287 +2807,289 @@ state 112
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   37 QQString: QQString QQSTRING_INTERP_START Exp . QQSTRING_INTERP_END
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   38 QQString: QQString QQSTRING_INTERP_START Exp . QQSTRING_INTERP_END
 
-    "=="                 shift, and go to state 36
-    "//"                 shift, and go to state 37
-    "and"                shift, and go to state 38
-    "or"                 shift, and go to state 39
-    "|="                 shift, and go to state 40
-    "+="                 shift, and go to state 41
-    "-="                 shift, and go to state 42
-    "*="                 shift, and go to state 43
-    "/="                 shift, and go to state 44
-    "//="                shift, and go to state 45
-    "<="                 shift, and go to state 46
-    ">="                 shift, and go to state 47
-    QQSTRING_INTERP_END  shift, and go to state 129
-    '|'                  shift, and go to state 48
-    ','                  shift, and go to state 49
-    '='                  shift, and go to state 50
-    '<'                  shift, and go to state 51
-    '>'                  shift, and go to state 52
-    '+'                  shift, and go to state 53
-    '-'                  shift, and go to state 54
-    '*'                  shift, and go to state 55
-    '/'                  shift, and go to state 56
+    "=="                 décalage et aller à l'état 36
+    "!="                 décalage et aller à l'état 37
+    "//"                 décalage et aller à l'état 38
+    "and"                décalage et aller à l'état 39
+    "or"                 décalage et aller à l'état 40
+    "|="                 décalage et aller à l'état 41
+    "+="                 décalage et aller à l'état 42
+    "-="                 décalage et aller à l'état 43
+    "*="                 décalage et aller à l'état 44
+    "/="                 décalage et aller à l'état 45
+    "//="                décalage et aller à l'état 46
+    "<="                 décalage et aller à l'état 47
+    ">="                 décalage et aller à l'état 48
+    QQSTRING_INTERP_END  décalage et aller à l'état 131
+    '|'                  décalage et aller à l'état 49
+    ','                  décalage et aller à l'état 50
+    '='                  décalage et aller à l'état 51
+    '<'                  décalage et aller à l'état 52
+    '>'                  décalage et aller à l'état 53
+    '+'                  décalage et aller à l'état 54
+    '-'                  décalage et aller à l'état 55
+    '*'                  décalage et aller à l'état 56
+    '/'                  décalage et aller à l'état 57
 
 
-state 113
+état 115
 
-   62 MkDict: error . ',' MkDict
+   63 MkDict: error . ',' MkDict
 
-    ','  shift, and go to state 74
+    ','  décalage et aller à l'état 75
 
 
-state 114
+état 116
 
-   62 MkDict: error ',' MkDict .
+   63 MkDict: error ',' MkDict .
 
-    $default  reduce using rule 62 (MkDict)
+    $défaut  réduction par utilisation de la règle 63 (MkDict)
 
 
-state 115
+état 117
 
-   40 ExpD: ExpD . '|' ExpD
-   63 MkDictPair: IDENT ':' ExpD .
+   41 ExpD: ExpD . '|' ExpD
+   64 MkDictPair: IDENT ':' ExpD .
 
-    '|'  shift, and go to state 130
+    '|'  décalage et aller à l'état 132
 
-    $default  reduce using rule 63 (MkDictPair)
+    $défaut  réduction par utilisation de la règle 64 (MkDictPair)
 
 
-state 116
+état 118
 
-   41 ExpD: Term .
-   43 Term: Term . '.' IDENT
-   45     | Term . '[' Exp ']'
-   46     | Term . '[' ']'
-   57     | Term . '[' error ']'
+   42 ExpD: Term .
+   44 Term: Term . '.' IDENT
+   46     | Term . '[' Exp ']'
+   47     | Term . '[' ']'
+   58     | Term . '[' error ']'
 
-    '.'  shift, and go to state 60
-    '['  shift, and go to state 61
+    '.'  décalage et aller à l'état 61
+    '['  décalage et aller à l'état 62
 
-    $default  reduce using rule 41 (ExpD)
+    $défaut  réduction par utilisation de la règle 42 (ExpD)
 
 
-state 117
+état 119
 
-   67 MkDictPair: '(' error ')' . ':' ExpD
+   68 MkDictPair: '(' error ')' . ':' ExpD
 
-    ':'  shift, and go to state 131
+    ':'  décalage et aller à l'état 133
 
 
-state 118
+état 120
 
-   66 MkDictPair: '(' Exp ')' . ':' ExpD
+   67 MkDictPair: '(' Exp ')' . ':' ExpD
 
-    ':'  shift, and go to state 132
+    ':'  décalage et aller à l'état 134
 
 
-state 119
+état 121
 
-   40 ExpD: ExpD . '|' ExpD
-   64 MkDictPair: String ':' ExpD .
+   41 ExpD: ExpD . '|' ExpD
+   65 MkDictPair: String ':' ExpD .
 
-    '|'  shift, and go to state 130
+    '|'  décalage et aller à l'état 132
 
-    $default  reduce using rule 64 (MkDictPair)
+    $défaut  réduction par utilisation de la règle 65 (MkDictPair)
 
 
-state 120
+état 122
 
-   61 MkDict: MkDictPair ',' MkDict .
+   62 MkDict: MkDictPair ',' MkDict .
 
-    $default  reduce using rule 61 (MkDict)
+    $défaut  réduction par utilisation de la règle 62 (MkDict)
 
 
-state 121
+état 123
 
     6 Exp: Term "as" '$' IDENT . '|' Exp
 
-    '|'  shift, and go to state 133
+    '|'  décalage et aller à l'état 135
 
 
-state 122
+état 124
 
-   57 Term: Term '[' error ']' .
+   58 Term: Term '[' error ']' .
 
-    $default  reduce using rule 57 (Term)
+    $défaut  réduction par utilisation de la règle 58 (Term)
 
 
-state 123
+état 125
 
-   45 Term: Term '[' Exp ']' .
+   46 Term: Term '[' Exp ']' .
 
-    $default  reduce using rule 45 (Term)
+    $défaut  réduction par utilisation de la règle 46 (Term)
 
 
-state 124
+état 126
 
-   33 FuncDef: "def" IDENT ':' Exp ';' .
+   34 FuncDef: "def" IDENT ':' Exp ';' .
 
-    $default  reduce using rule 33 (FuncDef)
+    $défaut  réduction par utilisation de la règle 34 (FuncDef)
 
 
-state 125
+état 127
 
-   34 FuncDef: "def" IDENT '(' IDENT ')' . ':' Exp ';'
+   35 FuncDef: "def" IDENT '(' IDENT ')' . ':' Exp ';'
 
-    ':'  shift, and go to state 134
+    ':'  décalage et aller à l'état 136
 
 
-state 126
+état 128
 
-   39 ElseBody: "else" . Exp "end"
+   40 ElseBody: "else" . Exp "end"
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 135
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 137
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 127
+état 129
 
-   38 ElseBody: "elif" . Exp "then" Exp ElseBody
+   39 ElseBody: "elif" . Exp "then" Exp ElseBody
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 136
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 138
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 128
+état 130
 
     7 Exp: "if" Exp "then" Exp ElseBody .
 
-    $default  reduce using rule 7 (Exp)
+    $défaut  réduction par utilisation de la règle 7 (Exp)
 
 
-state 129
+état 131
 
-   37 QQString: QQString QQSTRING_INTERP_START Exp QQSTRING_INTERP_END .
+   38 QQString: QQString QQSTRING_INTERP_START Exp QQSTRING_INTERP_END .
 
-    $default  reduce using rule 37 (QQString)
+    $défaut  réduction par utilisation de la règle 38 (QQString)
 
 
-state 130
+état 132
 
-   40 ExpD: ExpD '|' . ExpD
+   41 ExpD: ExpD '|' . ExpD
 
-    IDENT    shift, and go to state 1
-    LITERAL  shift, and go to state 2
-    '$'      shift, and go to state 6
-    '('      shift, and go to state 7
-    '.'      shift, and go to state 8
-    '['      shift, and go to state 9
-    '{'      shift, and go to state 10
+    IDENT    décalage et aller à l'état 1
+    LITERAL  décalage et aller à l'état 2
+    '$'      décalage et aller à l'état 6
+    '('      décalage et aller à l'état 7
+    '.'      décalage et aller à l'état 8
+    '['      décalage et aller à l'état 9
+    '{'      décalage et aller à l'état 10
 
-    ExpD  go to state 137
-    Term  go to state 116
+    ExpD  aller à l'état 139
+    Term  aller à l'état 118
 
 
-state 131
+état 133
 
-   67 MkDictPair: '(' error ')' ':' . ExpD
+   68 MkDictPair: '(' error ')' ':' . ExpD
 
-    IDENT    shift, and go to state 1
-    LITERAL  shift, and go to state 2
-    '$'      shift, and go to state 6
-    '('      shift, and go to state 7
-    '.'      shift, and go to state 8
-    '['      shift, and go to state 9
-    '{'      shift, and go to state 10
+    IDENT    décalage et aller à l'état 1
+    LITERAL  décalage et aller à l'état 2
+    '$'      décalage et aller à l'état 6
+    '('      décalage et aller à l'état 7
+    '.'      décalage et aller à l'état 8
+    '['      décalage et aller à l'état 9
+    '{'      décalage et aller à l'état 10
 
-    ExpD  go to state 138
-    Term  go to state 116
+    ExpD  aller à l'état 140
+    Term  aller à l'état 118
 
 
-state 132
+état 134
 
-   66 MkDictPair: '(' Exp ')' ':' . ExpD
+   67 MkDictPair: '(' Exp ')' ':' . ExpD
 
-    IDENT    shift, and go to state 1
-    LITERAL  shift, and go to state 2
-    '$'      shift, and go to state 6
-    '('      shift, and go to state 7
-    '.'      shift, and go to state 8
-    '['      shift, and go to state 9
-    '{'      shift, and go to state 10
+    IDENT    décalage et aller à l'état 1
+    LITERAL  décalage et aller à l'état 2
+    '$'      décalage et aller à l'état 6
+    '('      décalage et aller à l'état 7
+    '.'      décalage et aller à l'état 8
+    '['      décalage et aller à l'état 9
+    '{'      décalage et aller à l'état 10
 
-    ExpD  go to state 139
-    Term  go to state 116
+    ExpD  aller à l'état 141
+    Term  aller à l'état 118
 
 
-state 133
+état 135
 
     6 Exp: Term "as" '$' IDENT '|' . Exp
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 140
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 142
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 134
+état 136
 
-   34 FuncDef: "def" IDENT '(' IDENT ')' ':' . Exp ';'
+   35 FuncDef: "def" IDENT '(' IDENT ')' ':' . Exp ';'
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 141
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 143
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 135
+état 137
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -2984,37 +3108,39 @@ state 135
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   39 ElseBody: "else" Exp . "end"
-
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "end"  shift, and go to state 142
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    '|'    shift, and go to state 48
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-
-state 136
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   40 ElseBody: "else" Exp . "end"
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "end"  décalage et aller à l'état 144
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    '|'    décalage et aller à l'état 49
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+
+état 138
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -3033,65 +3159,67 @@ state 136
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   38 ElseBody: "elif" Exp . "then" Exp ElseBody
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   39 ElseBody: "elif" Exp . "then" Exp ElseBody
 
-    "=="    shift, and go to state 36
-    "//"    shift, and go to state 37
-    "then"  shift, and go to state 143
-    "and"   shift, and go to state 38
-    "or"    shift, and go to state 39
-    "|="    shift, and go to state 40
-    "+="    shift, and go to state 41
-    "-="    shift, and go to state 42
-    "*="    shift, and go to state 43
-    "/="    shift, and go to state 44
-    "//="   shift, and go to state 45
-    "<="    shift, and go to state 46
-    ">="    shift, and go to state 47
-    '|'     shift, and go to state 48
-    ','     shift, and go to state 49
-    '='     shift, and go to state 50
-    '<'     shift, and go to state 51
-    '>'     shift, and go to state 52
-    '+'     shift, and go to state 53
-    '-'     shift, and go to state 54
-    '*'     shift, and go to state 55
-    '/'     shift, and go to state 56
+    "=="    décalage et aller à l'état 36
+    "!="    décalage et aller à l'état 37
+    "//"    décalage et aller à l'état 38
+    "then"  décalage et aller à l'état 145
+    "and"   décalage et aller à l'état 39
+    "or"    décalage et aller à l'état 40
+    "|="    décalage et aller à l'état 41
+    "+="    décalage et aller à l'état 42
+    "-="    décalage et aller à l'état 43
+    "*="    décalage et aller à l'état 44
+    "/="    décalage et aller à l'état 45
+    "//="   décalage et aller à l'état 46
+    "<="    décalage et aller à l'état 47
+    ">="    décalage et aller à l'état 48
+    '|'     décalage et aller à l'état 49
+    ','     décalage et aller à l'état 50
+    '='     décalage et aller à l'état 51
+    '<'     décalage et aller à l'état 52
+    '>'     décalage et aller à l'état 53
+    '+'     décalage et aller à l'état 54
+    '-'     décalage et aller à l'état 55
+    '*'     décalage et aller à l'état 56
+    '/'     décalage et aller à l'état 57
 
 
-state 137
+état 139
 
-   40 ExpD: ExpD . '|' ExpD
-   40     | ExpD '|' ExpD .
+   41 ExpD: ExpD . '|' ExpD
+   41     | ExpD '|' ExpD .
 
-    $default  reduce using rule 40 (ExpD)
+    $défaut  réduction par utilisation de la règle 41 (ExpD)
 
 
-state 138
+état 140
 
-   40 ExpD: ExpD . '|' ExpD
-   67 MkDictPair: '(' error ')' ':' ExpD .
+   41 ExpD: ExpD . '|' ExpD
+   68 MkDictPair: '(' error ')' ':' ExpD .
 
-    '|'  shift, and go to state 130
+    '|'  décalage et aller à l'état 132
 
-    $default  reduce using rule 67 (MkDictPair)
+    $défaut  réduction par utilisation de la règle 68 (MkDictPair)
 
 
-state 139
+état 141
 
-   40 ExpD: ExpD . '|' ExpD
-   66 MkDictPair: '(' Exp ')' ':' ExpD .
+   41 ExpD: ExpD . '|' ExpD
+   67 MkDictPair: '(' Exp ')' ':' ExpD .
 
-    '|'  shift, and go to state 130
+    '|'  décalage et aller à l'état 132
 
-    $default  reduce using rule 66 (MkDictPair)
+    $défaut  réduction par utilisation de la règle 67 (MkDictPair)
 
 
-state 140
+état 142
 
     6 Exp: Term "as" '$' IDENT '|' Exp .
     9    | Exp . '=' Exp
@@ -3111,36 +3239,38 @@ state 140
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
-
-    $default  reduce using rule 6 (Exp)
-
-
-state 141
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
+
+    $défaut  réduction par utilisation de la règle 6 (Exp)
+
+
+état 143
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -3159,72 +3289,74 @@ state 141
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   34 FuncDef: "def" IDENT '(' IDENT ')' ':' Exp . ';'
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   35 FuncDef: "def" IDENT '(' IDENT ')' ':' Exp . ';'
 
-    "=="   shift, and go to state 36
-    "//"   shift, and go to state 37
-    "and"  shift, and go to state 38
-    "or"   shift, and go to state 39
-    "|="   shift, and go to state 40
-    "+="   shift, and go to state 41
-    "-="   shift, and go to state 42
-    "*="   shift, and go to state 43
-    "/="   shift, and go to state 44
-    "//="  shift, and go to state 45
-    "<="   shift, and go to state 46
-    ">="   shift, and go to state 47
-    ';'    shift, and go to state 144
-    '|'    shift, and go to state 48
-    ','    shift, and go to state 49
-    '='    shift, and go to state 50
-    '<'    shift, and go to state 51
-    '>'    shift, and go to state 52
-    '+'    shift, and go to state 53
-    '-'    shift, and go to state 54
-    '*'    shift, and go to state 55
-    '/'    shift, and go to state 56
+    "=="   décalage et aller à l'état 36
+    "!="   décalage et aller à l'état 37
+    "//"   décalage et aller à l'état 38
+    "and"  décalage et aller à l'état 39
+    "or"   décalage et aller à l'état 40
+    "|="   décalage et aller à l'état 41
+    "+="   décalage et aller à l'état 42
+    "-="   décalage et aller à l'état 43
+    "*="   décalage et aller à l'état 44
+    "/="   décalage et aller à l'état 45
+    "//="  décalage et aller à l'état 46
+    "<="   décalage et aller à l'état 47
+    ">="   décalage et aller à l'état 48
+    ';'    décalage et aller à l'état 146
+    '|'    décalage et aller à l'état 49
+    ','    décalage et aller à l'état 50
+    '='    décalage et aller à l'état 51
+    '<'    décalage et aller à l'état 52
+    '>'    décalage et aller à l'état 53
+    '+'    décalage et aller à l'état 54
+    '-'    décalage et aller à l'état 55
+    '*'    décalage et aller à l'état 56
+    '/'    décalage et aller à l'état 57
 
 
-state 142
+état 144
 
-   39 ElseBody: "else" Exp "end" .
+   40 ElseBody: "else" Exp "end" .
 
-    $default  reduce using rule 39 (ElseBody)
+    $défaut  réduction par utilisation de la règle 40 (ElseBody)
 
 
-state 143
+état 145
 
-   38 ElseBody: "elif" Exp "then" . Exp ElseBody
+   39 ElseBody: "elif" Exp "then" . Exp ElseBody
 
-    IDENT           shift, and go to state 1
-    LITERAL         shift, and go to state 2
-    "def"           shift, and go to state 3
-    "if"            shift, and go to state 4
-    QQSTRING_START  shift, and go to state 5
-    '$'             shift, and go to state 6
-    '('             shift, and go to state 7
-    '.'             shift, and go to state 8
-    '['             shift, and go to state 9
-    '{'             shift, and go to state 10
+    IDENT           décalage et aller à l'état 1
+    LITERAL         décalage et aller à l'état 2
+    "def"           décalage et aller à l'état 3
+    "if"            décalage et aller à l'état 4
+    QQSTRING_START  décalage et aller à l'état 5
+    '$'             décalage et aller à l'état 6
+    '('             décalage et aller à l'état 7
+    '.'             décalage et aller à l'état 8
+    '['             décalage et aller à l'état 9
+    '{'             décalage et aller à l'état 10
 
-    Exp      go to state 145
-    String   go to state 14
-    FuncDef  go to state 20
-    Term     go to state 16
+    Exp      aller à l'état 147
+    String   aller à l'état 14
+    FuncDef  aller à l'état 20
+    Term     aller à l'état 16
 
 
-state 144
+état 146
 
-   34 FuncDef: "def" IDENT '(' IDENT ')' ':' Exp ';' .
+   35 FuncDef: "def" IDENT '(' IDENT ')' ':' Exp ';' .
 
-    $default  reduce using rule 34 (FuncDef)
+    $défaut  réduction par utilisation de la règle 35 (FuncDef)
 
 
-state 145
+état 147
 
     9 Exp: Exp . '=' Exp
    10    | Exp . "or" Exp
@@ -3243,41 +3375,43 @@ state 145
    23    | Exp . '/' Exp
    24    | Exp . "/=" Exp
    25    | Exp . "==" Exp
-   26    | Exp . '<' Exp
-   27    | Exp . '>' Exp
-   28    | Exp . "<=" Exp
-   29    | Exp . ">=" Exp
-   38 ElseBody: "elif" Exp "then" Exp . ElseBody
-
-    "=="    shift, and go to state 36
-    "//"    shift, and go to state 37
-    "else"  shift, and go to state 126
-    "elif"  shift, and go to state 127
-    "and"   shift, and go to state 38
-    "or"    shift, and go to state 39
-    "|="    shift, and go to state 40
-    "+="    shift, and go to state 41
-    "-="    shift, and go to state 42
-    "*="    shift, and go to state 43
-    "/="    shift, and go to state 44
-    "//="   shift, and go to state 45
-    "<="    shift, and go to state 46
-    ">="    shift, and go to state 47
-    '|'     shift, and go to state 48
-    ','     shift, and go to state 49
-    '='     shift, and go to state 50
-    '<'     shift, and go to state 51
-    '>'     shift, and go to state 52
-    '+'     shift, and go to state 53
-    '-'     shift, and go to state 54
-    '*'     shift, and go to state 55
-    '/'     shift, and go to state 56
-
-    ElseBody  go to state 146
-
-
-state 146
-
-   38 ElseBody: "elif" Exp "then" Exp ElseBody .
-
-    $default  reduce using rule 38 (ElseBody)
+   26    | Exp . "!=" Exp
+   27    | Exp . '<' Exp
+   28    | Exp . '>' Exp
+   29    | Exp . "<=" Exp
+   30    | Exp . ">=" Exp
+   39 ElseBody: "elif" Exp "then" Exp . ElseBody
+
+    "=="    décalage et aller à l'état 36
+    "!="    décalage et aller à l'état 37
+    "//"    décalage et aller à l'état 38
+    "else"  décalage et aller à l'état 128
+    "elif"  décalage et aller à l'état 129
+    "and"   décalage et aller à l'état 39
+    "or"    décalage et aller à l'état 40
+    "|="    décalage et aller à l'état 41
+    "+="    décalage et aller à l'état 42
+    "-="    décalage et aller à l'état 43
+    "*="    décalage et aller à l'état 44
+    "/="    décalage et aller à l'état 45
+    "//="   décalage et aller à l'état 46
+    "<="    décalage et aller à l'état 47
+    ">="    décalage et aller à l'état 48
+    '|'     décalage et aller à l'état 49
+    ','     décalage et aller à l'état 50
+    '='     décalage et aller à l'état 51
+    '<'     décalage et aller à l'état 52
+    '>'     décalage et aller à l'état 53
+    '+'     décalage et aller à l'état 54
+    '-'     décalage et aller à l'état 55
+    '*'     décalage et aller à l'état 56
+    '/'     décalage et aller à l'état 57
+
+    ElseBody  aller à l'état 148
+
+
+état 148
+
+   39 ElseBody: "elif" Exp "then" Exp ElseBody .
+
+    $défaut  réduction par utilisation de la règle 39 (ElseBody)