ferret 0.9.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +6 -5
 - data/Rakefile +34 -13
 - data/TODO +1 -0
 - data/TUTORIAL +1 -1
 - data/ext/analysis.c +87 -70
 - data/ext/analysis.h +18 -6
 - data/ext/array.c +1 -2
 - data/ext/array.h +1 -1
 - data/ext/bitvector.c +10 -6
 - data/ext/bitvector.h +2 -2
 - data/ext/compound_io.c +30 -27
 - data/ext/document.c +15 -15
 - data/ext/document.h +5 -5
 - data/ext/except.c +2 -0
 - data/ext/except.h +25 -23
 - data/ext/extconf.rb +1 -0
 - data/ext/ferret.c +10 -8
 - data/ext/ferret.h +9 -8
 - data/ext/field.c +29 -25
 - data/ext/filter.c +52 -14
 - data/ext/frtio.h +13 -0
 - data/ext/fs_store.c +115 -170
 - data/ext/global.c +9 -8
 - data/ext/global.h +17 -13
 - data/ext/hash.c +13 -19
 - data/ext/hash.h +11 -11
 - data/ext/hashset.c +5 -7
 - data/ext/hashset.h +9 -8
 - data/ext/helper.c +1 -1
 - data/ext/helper.h +2 -1
 - data/ext/inc/except.h +25 -23
 - data/ext/inc/lang.h +11 -1
 - data/ext/ind.c +33 -21
 - data/ext/index.h +44 -39
 - data/ext/index_io.c +61 -57
 - data/ext/index_rw.c +418 -361
 - data/ext/lang.c +10 -0
 - data/ext/lang.h +11 -1
 - data/ext/nix_io.c +135 -0
 - data/ext/priorityqueue.c +16 -16
 - data/ext/priorityqueue.h +9 -6
 - data/ext/q_boolean.c +128 -76
 - data/ext/q_const_score.c +20 -20
 - data/ext/q_filtered_query.c +20 -20
 - data/ext/q_fuzzy.c +37 -23
 - data/ext/q_match_all.c +15 -19
 - data/ext/q_multi_phrase.c +87 -46
 - data/ext/q_parser.c +247 -119
 - data/ext/q_phrase.c +86 -52
 - data/ext/q_prefix.c +25 -14
 - data/ext/q_range.c +59 -14
 - data/ext/q_span.c +263 -172
 - data/ext/q_term.c +62 -51
 - data/ext/q_wildcard.c +24 -13
 - data/ext/r_analysis.c +328 -80
 - data/ext/r_doc.c +11 -6
 - data/ext/r_index_io.c +40 -32
 - data/ext/r_qparser.c +15 -14
 - data/ext/r_search.c +270 -152
 - data/ext/r_store.c +32 -17
 - data/ext/ram_store.c +38 -22
 - data/ext/search.c +617 -87
 - data/ext/search.h +227 -163
 - data/ext/similarity.c +54 -45
 - data/ext/similarity.h +3 -3
 - data/ext/sort.c +132 -53
 - data/ext/store.c +21 -2
 - data/ext/store.h +14 -14
 - data/ext/tags +4322 -232
 - data/ext/term.c +140 -109
 - data/ext/termdocs.c +74 -60
 - data/ext/vector.c +181 -152
 - data/ext/w32_io.c +150 -0
 - data/lib/ferret.rb +1 -1
 - data/lib/ferret/analysis/standard_tokenizer.rb +4 -3
 - data/lib/ferret/document/field.rb +1 -1
 - data/lib/ferret/index/field_infos.rb +1 -1
 - data/lib/ferret/index/term.rb +1 -1
 - data/lib/ferret/query_parser/query_parser.tab.rb +8 -24
 - data/lib/ferret/search.rb +1 -0
 - data/lib/ferret/search/boolean_query.rb +0 -4
 - data/lib/ferret/search/index_searcher.rb +21 -8
 - data/lib/ferret/search/multi_phrase_query.rb +7 -0
 - data/lib/ferret/search/multi_searcher.rb +261 -0
 - data/lib/ferret/search/phrase_query.rb +1 -1
 - data/lib/ferret/search/query.rb +34 -5
 - data/lib/ferret/search/sort.rb +7 -3
 - data/lib/ferret/search/sort_field.rb +8 -4
 - data/lib/ferret/store/fs_store.rb +13 -6
 - data/lib/ferret/store/index_io.rb +0 -14
 - data/lib/ferret/store/ram_store.rb +3 -2
 - data/lib/rferret.rb +1 -1
 - data/test/unit/analysis/ctc_analyzer.rb +131 -0
 - data/test/unit/analysis/ctc_tokenstream.rb +98 -9
 - data/test/unit/index/tc_index.rb +40 -1
 - data/test/unit/index/tc_term.rb +7 -0
 - data/test/unit/index/th_doc.rb +8 -0
 - data/test/unit/query_parser/tc_query_parser.rb +6 -4
 - data/test/unit/search/rtc_sort_field.rb +6 -6
 - data/test/unit/search/tc_index_searcher.rb +8 -0
 - data/test/unit/search/tc_multi_searcher.rb +275 -0
 - data/test/unit/search/tc_multi_searcher2.rb +126 -0
 - data/test/unit/search/tc_search_and_sort.rb +66 -0
 - metadata +31 -26
 - data/test/unit/query_parser/rtc_query_parser.rb +0 -138
 
    
        data/ext/q_parser.c
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /* A Bison parser, made by GNU Bison 2. 
     | 
| 
      
 1 
     | 
    
         
            +
            /* A Bison parser, made by GNU Bison 2.1.  */
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            /* Skeleton parser for Yacc-like parsing with Bison,
         
     | 
| 
       4 
     | 
    
         
            -
               Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
         
     | 
| 
      
 4 
     | 
    
         
            +
               Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
               This program is free software; you can redistribute it and/or modify
         
     | 
| 
       7 
7 
     | 
    
         
             
               it under the terms of the GNU General Public License as published by
         
     | 
| 
         @@ -15,8 +15,8 @@ 
     | 
|
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
               You should have received a copy of the GNU General Public License
         
     | 
| 
       17 
17 
     | 
    
         
             
               along with this program; if not, write to the Free Software
         
     | 
| 
       18 
     | 
    
         
            -
               Foundation, Inc.,  
     | 
| 
       19 
     | 
    
         
            -
               Boston, MA  
     | 
| 
      
 18 
     | 
    
         
            +
               Foundation, Inc., 51 Franklin Street, Fifth Floor,
         
     | 
| 
      
 19 
     | 
    
         
            +
               Boston, MA 02110-1301, USA.  */
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
            /* As a special exception, when this file is copied by Bison into a
         
     | 
| 
       22 
22 
     | 
    
         
             
               Bison output file, you may use that output file without restriction.
         
     | 
| 
         @@ -36,6 +36,9 @@ 
     | 
|
| 
       36 
36 
     | 
    
         
             
            /* Identify Bison output.  */
         
     | 
| 
       37 
37 
     | 
    
         
             
            #define YYBISON 1
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
      
 39 
     | 
    
         
            +
            /* Bison version.  */
         
     | 
| 
      
 40 
     | 
    
         
            +
            #define YYBISON_VERSION "2.1"
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       39 
42 
     | 
    
         
             
            /* Skeleton name.  */
         
     | 
| 
       40 
43 
     | 
    
         
             
            #define YYSKELETON_NAME "yacc.c"
         
     | 
| 
       41 
44 
     | 
    
         | 
| 
         @@ -63,6 +66,7 @@ 
     | 
|
| 
       63 
66 
     | 
    
         
             
                 HIGH = 265
         
     | 
| 
       64 
67 
     | 
    
         
             
               };
         
     | 
| 
       65 
68 
     | 
    
         
             
            #endif
         
     | 
| 
      
 69 
     | 
    
         
            +
            /* Tokens.  */
         
     | 
| 
       66 
70 
     | 
    
         
             
            #define WORD 258
         
     | 
| 
       67 
71 
     | 
    
         
             
            #define WILD_STR 259
         
     | 
| 
       68 
72 
     | 
    
         
             
            #define LOW 260
         
     | 
| 
         @@ -104,6 +108,11 @@ typedef struct Phrase { 
     | 
|
| 
       104 
108 
     | 
    
         
             
            # define YYERROR_VERBOSE 0
         
     | 
| 
       105 
109 
     | 
    
         
             
            #endif
         
     | 
| 
       106 
110 
     | 
    
         | 
| 
      
 111 
     | 
    
         
            +
            /* Enabling the token table.  */
         
     | 
| 
      
 112 
     | 
    
         
            +
            #ifndef YYTOKEN_TABLE
         
     | 
| 
      
 113 
     | 
    
         
            +
            # define YYTOKEN_TABLE 0
         
     | 
| 
      
 114 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
       107 
116 
     | 
    
         
             
            #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
         
     | 
| 
       108 
117 
     | 
    
         
             
            #line 14 "src/query_parser/q_parser.y"
         
     | 
| 
       109 
118 
     | 
    
         
             
            typedef union YYSTYPE {
         
     | 
| 
         @@ -114,8 +123,8 @@ typedef union YYSTYPE { 
     | 
|
| 
       114 
123 
     | 
    
         
             
              Phrase *phrase;
         
     | 
| 
       115 
124 
     | 
    
         
             
              char *str;
         
     | 
| 
       116 
125 
     | 
    
         
             
            } YYSTYPE;
         
     | 
| 
       117 
     | 
    
         
            -
            /* Line  
     | 
| 
       118 
     | 
    
         
            -
            #line  
     | 
| 
      
 126 
     | 
    
         
            +
            /* Line 196 of yacc.c.  */
         
     | 
| 
      
 127 
     | 
    
         
            +
            #line 128 "y.tab.c"
         
     | 
| 
       119 
128 
     | 
    
         
             
            # define yystype YYSTYPE /* obsolescent; will be withdrawn */
         
     | 
| 
       120 
129 
     | 
    
         
             
            # define YYSTYPE_IS_DECLARED 1
         
     | 
| 
       121 
130 
     | 
    
         
             
            # define YYSTYPE_IS_TRIVIAL 1
         
     | 
| 
         @@ -174,17 +183,36 @@ Query *get_range_q(char *field, char *from, char *to, 
     | 
|
| 
       174 
183 
     | 
    
         
             
            } while (0)
         
     | 
| 
       175 
184 
     | 
    
         | 
| 
       176 
185 
     | 
    
         | 
| 
       177 
     | 
    
         
            -
            /* Line  
     | 
| 
       178 
     | 
    
         
            -
            #line  
     | 
| 
      
 186 
     | 
    
         
            +
            /* Line 219 of yacc.c.  */
         
     | 
| 
      
 187 
     | 
    
         
            +
            #line 188 "y.tab.c"
         
     | 
| 
       179 
188 
     | 
    
         | 
| 
       180 
     | 
    
         
            -
            #if ! defined ( 
     | 
| 
      
 189 
     | 
    
         
            +
            #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
         
     | 
| 
      
 190 
     | 
    
         
            +
            # define YYSIZE_T __SIZE_TYPE__
         
     | 
| 
      
 191 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 192 
     | 
    
         
            +
            #if ! defined (YYSIZE_T) && defined (size_t)
         
     | 
| 
      
 193 
     | 
    
         
            +
            # define YYSIZE_T size_t
         
     | 
| 
      
 194 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 195 
     | 
    
         
            +
            #if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
         
     | 
| 
      
 196 
     | 
    
         
            +
            # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
         
     | 
| 
      
 197 
     | 
    
         
            +
            # define YYSIZE_T size_t
         
     | 
| 
      
 198 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 199 
     | 
    
         
            +
            #if ! defined (YYSIZE_T)
         
     | 
| 
      
 200 
     | 
    
         
            +
            # define YYSIZE_T unsigned int
         
     | 
| 
      
 201 
     | 
    
         
            +
            #endif
         
     | 
| 
       181 
202 
     | 
    
         | 
| 
       182 
     | 
    
         
            -
            # 
     | 
| 
       183 
     | 
    
         
            -
            # 
     | 
| 
      
 203 
     | 
    
         
            +
            #ifndef YY_
         
     | 
| 
      
 204 
     | 
    
         
            +
            # if YYENABLE_NLS
         
     | 
| 
      
 205 
     | 
    
         
            +
            #  if ENABLE_NLS
         
     | 
| 
      
 206 
     | 
    
         
            +
            #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
         
     | 
| 
      
 207 
     | 
    
         
            +
            #   define YY_(msgid) dgettext ("bison-runtime", msgid)
         
     | 
| 
      
 208 
     | 
    
         
            +
            #  endif
         
     | 
| 
       184 
209 
     | 
    
         
             
            # endif
         
     | 
| 
       185 
     | 
    
         
            -
            # ifndef  
     | 
| 
       186 
     | 
    
         
            -
            #  define  
     | 
| 
      
 210 
     | 
    
         
            +
            # ifndef YY_
         
     | 
| 
      
 211 
     | 
    
         
            +
            #  define YY_(msgid) msgid
         
     | 
| 
       187 
212 
     | 
    
         
             
            # endif
         
     | 
| 
      
 213 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 214 
     | 
    
         
            +
             
     | 
| 
      
 215 
     | 
    
         
            +
            #if ! defined (yyoverflow) || YYERROR_VERBOSE
         
     | 
| 
       188 
216 
     | 
    
         | 
| 
       189 
217 
     | 
    
         
             
            /* The parser invokes alloca or malloc; define the necessary symbols.  */
         
     | 
| 
       190 
218 
     | 
    
         | 
| 
         @@ -194,6 +222,10 @@ Query *get_range_q(char *field, char *from, char *to, 
     | 
|
| 
       194 
222 
     | 
    
         
             
            #    define YYSTACK_ALLOC __builtin_alloca
         
     | 
| 
       195 
223 
     | 
    
         
             
            #   else
         
     | 
| 
       196 
224 
     | 
    
         
             
            #    define YYSTACK_ALLOC alloca
         
     | 
| 
      
 225 
     | 
    
         
            +
            #    if defined (__STDC__) || defined (__cplusplus)
         
     | 
| 
      
 226 
     | 
    
         
            +
            #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
         
     | 
| 
      
 227 
     | 
    
         
            +
            #     define YYINCLUDED_STDLIB_H
         
     | 
| 
      
 228 
     | 
    
         
            +
            #    endif
         
     | 
| 
       197 
229 
     | 
    
         
             
            #   endif
         
     | 
| 
       198 
230 
     | 
    
         
             
            #  endif
         
     | 
| 
       199 
231 
     | 
    
         
             
            # endif
         
     | 
| 
         @@ -201,13 +233,39 @@ Query *get_range_q(char *field, char *from, char *to, 
     | 
|
| 
       201 
233 
     | 
    
         
             
            # ifdef YYSTACK_ALLOC
         
     | 
| 
       202 
234 
     | 
    
         
             
               /* Pacify GCC's `empty if-body' warning. */
         
     | 
| 
       203 
235 
     | 
    
         
             
            #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
         
     | 
| 
       204 
     | 
    
         
            -
            #  
     | 
| 
       205 
     | 
    
         
            -
             
     | 
| 
       206 
     | 
    
         
            -
             
     | 
| 
       207 
     | 
    
         
            -
             
     | 
| 
      
 236 
     | 
    
         
            +
            #  ifndef YYSTACK_ALLOC_MAXIMUM
         
     | 
| 
      
 237 
     | 
    
         
            +
                /* The OS might guarantee only one guard page at the bottom of the stack,
         
     | 
| 
      
 238 
     | 
    
         
            +
                   and a page size can be as small as 4096 bytes.  So we cannot safely
         
     | 
| 
      
 239 
     | 
    
         
            +
                   invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
         
     | 
| 
      
 240 
     | 
    
         
            +
                   to allow for a few compiler-allocated temporary stack slots.  */
         
     | 
| 
      
 241 
     | 
    
         
            +
            #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
         
     | 
| 
       208 
242 
     | 
    
         
             
            #  endif
         
     | 
| 
      
 243 
     | 
    
         
            +
            # else
         
     | 
| 
       209 
244 
     | 
    
         
             
            #  define YYSTACK_ALLOC YYMALLOC
         
     | 
| 
       210 
245 
     | 
    
         
             
            #  define YYSTACK_FREE YYFREE
         
     | 
| 
      
 246 
     | 
    
         
            +
            #  ifndef YYSTACK_ALLOC_MAXIMUM
         
     | 
| 
      
 247 
     | 
    
         
            +
            #   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
         
     | 
| 
      
 248 
     | 
    
         
            +
            #  endif
         
     | 
| 
      
 249 
     | 
    
         
            +
            #  ifdef __cplusplus
         
     | 
| 
      
 250 
     | 
    
         
            +
            extern "C" {
         
     | 
| 
      
 251 
     | 
    
         
            +
            #  endif
         
     | 
| 
      
 252 
     | 
    
         
            +
            #  ifndef YYMALLOC
         
     | 
| 
      
 253 
     | 
    
         
            +
            #   define YYMALLOC malloc
         
     | 
| 
      
 254 
     | 
    
         
            +
            #   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
         
     | 
| 
      
 255 
     | 
    
         
            +
            	&& (defined (__STDC__) || defined (__cplusplus)))
         
     | 
| 
      
 256 
     | 
    
         
            +
            void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
         
     | 
| 
      
 257 
     | 
    
         
            +
            #   endif
         
     | 
| 
      
 258 
     | 
    
         
            +
            #  endif
         
     | 
| 
      
 259 
     | 
    
         
            +
            #  ifndef YYFREE
         
     | 
| 
      
 260 
     | 
    
         
            +
            #   define YYFREE free
         
     | 
| 
      
 261 
     | 
    
         
            +
            #   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
         
     | 
| 
      
 262 
     | 
    
         
            +
            	&& (defined (__STDC__) || defined (__cplusplus)))
         
     | 
| 
      
 263 
     | 
    
         
            +
            void free (void *); /* INFRINGES ON USER NAME SPACE */
         
     | 
| 
      
 264 
     | 
    
         
            +
            #   endif
         
     | 
| 
      
 265 
     | 
    
         
            +
            #  endif
         
     | 
| 
      
 266 
     | 
    
         
            +
            #  ifdef __cplusplus
         
     | 
| 
      
 267 
     | 
    
         
            +
            }
         
     | 
| 
      
 268 
     | 
    
         
            +
            #  endif
         
     | 
| 
       211 
269 
     | 
    
         
             
            # endif
         
     | 
| 
       212 
270 
     | 
    
         
             
            #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
         
     | 
| 
       213 
271 
     | 
    
         | 
| 
         @@ -242,7 +300,7 @@ union yyalloc 
     | 
|
| 
       242 
300 
     | 
    
         
             
            #   define YYCOPY(To, From, Count)		\
         
     | 
| 
       243 
301 
     | 
    
         
             
                  do					\
         
     | 
| 
       244 
302 
     | 
    
         
             
            	{					\
         
     | 
| 
       245 
     | 
    
         
            -
            	   
     | 
| 
      
 303 
     | 
    
         
            +
            	  YYSIZE_T yyi;				\
         
     | 
| 
       246 
304 
     | 
    
         
             
            	  for (yyi = 0; yyi < (Count); yyi++)	\
         
     | 
| 
       247 
305 
     | 
    
         
             
            	    (To)[yyi] = (From)[yyi];		\
         
     | 
| 
       248 
306 
     | 
    
         
             
            	}					\
         
     | 
| 
         @@ -292,7 +350,7 @@ union yyalloc 
     | 
|
| 
       292 
350 
     | 
    
         
             
            #define YYUNDEFTOK  2
         
     | 
| 
       293 
351 
     | 
    
         
             
            #define YYMAXUTOK   265
         
     | 
| 
       294 
352 
     | 
    
         | 
| 
       295 
     | 
    
         
            -
            #define YYTRANSLATE(YYX) 
     | 
| 
      
 353 
     | 
    
         
            +
            #define YYTRANSLATE(YYX)						\
         
     | 
| 
       296 
354 
     | 
    
         
             
              ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
         
     | 
| 
       297 
355 
     | 
    
         | 
| 
       298 
356 
     | 
    
         
             
            /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
         
     | 
| 
         @@ -374,8 +432,8 @@ static const unsigned char yyrline[] = 
     | 
|
| 
       374 
432 
     | 
    
         
             
            };
         
     | 
| 
       375 
433 
     | 
    
         
             
            #endif
         
     | 
| 
       376 
434 
     | 
    
         | 
| 
       377 
     | 
    
         
            -
            #if YYDEBUG || YYERROR_VERBOSE
         
     | 
| 
       378 
     | 
    
         
            -
            /*  
     | 
| 
      
 435 
     | 
    
         
            +
            #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
         
     | 
| 
      
 436 
     | 
    
         
            +
            /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
         
     | 
| 
       379 
437 
     | 
    
         
             
               First, the terminals, then, starting at YYNTOKENS, nonterminals. */
         
     | 
| 
       380 
438 
     | 
    
         
             
            static const char *const yytname[] =
         
     | 
| 
       381 
439 
     | 
    
         
             
            {
         
     | 
| 
         @@ -511,22 +569,6 @@ static const unsigned char yystos[] = 
     | 
|
| 
       511 
569 
     | 
    
         
             
                  15,    20,    22,    23,    22,    23,    35,    37,     3
         
     | 
| 
       512 
570 
     | 
    
         
             
            };
         
     | 
| 
       513 
571 
     | 
    
         | 
| 
       514 
     | 
    
         
            -
            #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
         
     | 
| 
       515 
     | 
    
         
            -
            # define YYSIZE_T __SIZE_TYPE__
         
     | 
| 
       516 
     | 
    
         
            -
            #endif
         
     | 
| 
       517 
     | 
    
         
            -
            #if ! defined (YYSIZE_T) && defined (size_t)
         
     | 
| 
       518 
     | 
    
         
            -
            # define YYSIZE_T size_t
         
     | 
| 
       519 
     | 
    
         
            -
            #endif
         
     | 
| 
       520 
     | 
    
         
            -
            #if ! defined (YYSIZE_T)
         
     | 
| 
       521 
     | 
    
         
            -
            # if defined (__STDC__) || defined (__cplusplus)
         
     | 
| 
       522 
     | 
    
         
            -
            #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
         
     | 
| 
       523 
     | 
    
         
            -
            #  define YYSIZE_T size_t
         
     | 
| 
       524 
     | 
    
         
            -
            # endif
         
     | 
| 
       525 
     | 
    
         
            -
            #endif
         
     | 
| 
       526 
     | 
    
         
            -
            #if ! defined (YYSIZE_T)
         
     | 
| 
       527 
     | 
    
         
            -
            # define YYSIZE_T unsigned int
         
     | 
| 
       528 
     | 
    
         
            -
            #endif
         
     | 
| 
       529 
     | 
    
         
            -
             
     | 
| 
       530 
572 
     | 
    
         
             
            #define yyerrok		(yyerrstatus = 0)
         
     | 
| 
       531 
573 
     | 
    
         
             
            #define yyclearin	(yychar = YYEMPTY)
         
     | 
| 
       532 
574 
     | 
    
         
             
            #define YYEMPTY		(-2)
         
     | 
| 
         @@ -556,8 +598,8 @@ do								\ 
     | 
|
| 
       556 
598 
     | 
    
         
             
                  goto yybackup;						\
         
     | 
| 
       557 
599 
     | 
    
         
             
                }								\
         
     | 
| 
       558 
600 
     | 
    
         
             
              else								\
         
     | 
| 
       559 
     | 
    
         
            -
                { 
     | 
| 
       560 
     | 
    
         
            -
                  yyerror (qp, "syntax error: cannot back up") 
     | 
| 
      
 601 
     | 
    
         
            +
                {								\
         
     | 
| 
      
 602 
     | 
    
         
            +
                  yyerror (qp, YY_("syntax error: cannot back up")); \
         
     | 
| 
       561 
603 
     | 
    
         
             
                  YYERROR;							\
         
     | 
| 
       562 
604 
     | 
    
         
             
                }								\
         
     | 
| 
       563 
605 
     | 
    
         
             
            while (0)
         
     | 
| 
         @@ -636,7 +678,7 @@ do {								\ 
     | 
|
| 
       636 
678 
     | 
    
         
             
              if (yydebug)							\
         
     | 
| 
       637 
679 
     | 
    
         
             
                {								\
         
     | 
| 
       638 
680 
     | 
    
         
             
                  YYFPRINTF (stderr, "%s ", Title);				\
         
     | 
| 
       639 
     | 
    
         
            -
                  yysymprint (stderr, 
     | 
| 
      
 681 
     | 
    
         
            +
                  yysymprint (stderr,					\
         
     | 
| 
       640 
682 
     | 
    
         
             
                              Type, Value);	\
         
     | 
| 
       641 
683 
     | 
    
         
             
                  YYFPRINTF (stderr, "\n");					\
         
     | 
| 
       642 
684 
     | 
    
         
             
                }								\
         
     | 
| 
         @@ -684,13 +726,13 @@ yy_reduce_print (yyrule) 
     | 
|
| 
       684 
726 
     | 
    
         
             
            #endif
         
     | 
| 
       685 
727 
     | 
    
         
             
            {
         
     | 
| 
       686 
728 
     | 
    
         
             
              int yyi;
         
     | 
| 
       687 
     | 
    
         
            -
              unsigned int yylno = yyrline[yyrule];
         
     | 
| 
       688 
     | 
    
         
            -
              YYFPRINTF (stderr, "Reducing stack by rule %d (line % 
     | 
| 
      
 729 
     | 
    
         
            +
              unsigned long int yylno = yyrline[yyrule];
         
     | 
| 
      
 730 
     | 
    
         
            +
              YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
         
     | 
| 
       689 
731 
     | 
    
         
             
                         yyrule - 1, yylno);
         
     | 
| 
       690 
732 
     | 
    
         
             
              /* Print the symbols being reduced, and their result.  */
         
     | 
| 
       691 
733 
     | 
    
         
             
              for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
         
     | 
| 
       692 
     | 
    
         
            -
                YYFPRINTF (stderr, "%s ", yytname 
     | 
| 
       693 
     | 
    
         
            -
              YYFPRINTF (stderr, "-> %s\n", yytname 
     | 
| 
      
 734 
     | 
    
         
            +
                YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
         
     | 
| 
      
 735 
     | 
    
         
            +
              YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
         
     | 
| 
       694 
736 
     | 
    
         
             
            }
         
     | 
| 
       695 
737 
     | 
    
         | 
| 
       696 
738 
     | 
    
         
             
            # define YY_REDUCE_PRINT(Rule)		\
         
     | 
| 
         @@ -719,7 +761,7 @@ int yydebug; 
     | 
|
| 
       719 
761 
     | 
    
         
             
               if the built-in stack extension method is used).
         
     | 
| 
       720 
762 
     | 
    
         | 
| 
       721 
763 
     | 
    
         
             
               Do not make this value too large; the results are undefined if
         
     | 
| 
       722 
     | 
    
         
            -
                
     | 
| 
      
 764 
     | 
    
         
            +
               YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
         
     | 
| 
       723 
765 
     | 
    
         
             
               evaluated with infinite-precision integer arithmetic.  */
         
     | 
| 
       724 
766 
     | 
    
         | 
| 
       725 
767 
     | 
    
         
             
            #ifndef YYMAXDEPTH
         
     | 
| 
         @@ -743,7 +785,7 @@ yystrlen (yystr) 
     | 
|
| 
       743 
785 
     | 
    
         
             
                 const char *yystr;
         
     | 
| 
       744 
786 
     | 
    
         
             
            #   endif
         
     | 
| 
       745 
787 
     | 
    
         
             
            {
         
     | 
| 
       746 
     | 
    
         
            -
               
     | 
| 
      
 788 
     | 
    
         
            +
              const char *yys = yystr;
         
     | 
| 
       747 
789 
     | 
    
         | 
| 
       748 
790 
     | 
    
         
             
              while (*yys++ != '\0')
         
     | 
| 
       749 
791 
     | 
    
         
             
                continue;
         
     | 
| 
         @@ -768,8 +810,8 @@ yystpcpy (yydest, yysrc) 
     | 
|
| 
       768 
810 
     | 
    
         
             
                 const char *yysrc;
         
     | 
| 
       769 
811 
     | 
    
         
             
            #   endif
         
     | 
| 
       770 
812 
     | 
    
         
             
            {
         
     | 
| 
       771 
     | 
    
         
            -
               
     | 
| 
       772 
     | 
    
         
            -
               
     | 
| 
      
 813 
     | 
    
         
            +
              char *yyd = yydest;
         
     | 
| 
      
 814 
     | 
    
         
            +
              const char *yys = yysrc;
         
     | 
| 
       773 
815 
     | 
    
         | 
| 
       774 
816 
     | 
    
         
             
              while ((*yyd++ = *yys++) != '\0')
         
     | 
| 
       775 
817 
     | 
    
         
             
                continue;
         
     | 
| 
         @@ -779,7 +821,55 @@ yystpcpy (yydest, yysrc) 
     | 
|
| 
       779 
821 
     | 
    
         
             
            #  endif
         
     | 
| 
       780 
822 
     | 
    
         
             
            # endif
         
     | 
| 
       781 
823 
     | 
    
         | 
| 
       782 
     | 
    
         
            -
            # 
     | 
| 
      
 824 
     | 
    
         
            +
            # ifndef yytnamerr
         
     | 
| 
      
 825 
     | 
    
         
            +
            /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
         
     | 
| 
      
 826 
     | 
    
         
            +
               quotes and backslashes, so that it's suitable for yyerror.  The
         
     | 
| 
      
 827 
     | 
    
         
            +
               heuristic is that double-quoting is unnecessary unless the string
         
     | 
| 
      
 828 
     | 
    
         
            +
               contains an apostrophe, a comma, or backslash (other than
         
     | 
| 
      
 829 
     | 
    
         
            +
               backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
         
     | 
| 
      
 830 
     | 
    
         
            +
               null, do not copy; instead, return the length of what the result
         
     | 
| 
      
 831 
     | 
    
         
            +
               would have been.  */
         
     | 
| 
      
 832 
     | 
    
         
            +
            static YYSIZE_T
         
     | 
| 
      
 833 
     | 
    
         
            +
            yytnamerr (char *yyres, const char *yystr)
         
     | 
| 
      
 834 
     | 
    
         
            +
            {
         
     | 
| 
      
 835 
     | 
    
         
            +
              if (*yystr == '"')
         
     | 
| 
      
 836 
     | 
    
         
            +
                {
         
     | 
| 
      
 837 
     | 
    
         
            +
                  size_t yyn = 0;
         
     | 
| 
      
 838 
     | 
    
         
            +
                  char const *yyp = yystr;
         
     | 
| 
      
 839 
     | 
    
         
            +
             
     | 
| 
      
 840 
     | 
    
         
            +
                  for (;;)
         
     | 
| 
      
 841 
     | 
    
         
            +
            	switch (*++yyp)
         
     | 
| 
      
 842 
     | 
    
         
            +
            	  {
         
     | 
| 
      
 843 
     | 
    
         
            +
            	  case '\'':
         
     | 
| 
      
 844 
     | 
    
         
            +
            	  case ',':
         
     | 
| 
      
 845 
     | 
    
         
            +
            	    goto do_not_strip_quotes;
         
     | 
| 
      
 846 
     | 
    
         
            +
             
     | 
| 
      
 847 
     | 
    
         
            +
            	  case '\\':
         
     | 
| 
      
 848 
     | 
    
         
            +
            	    if (*++yyp != '\\')
         
     | 
| 
      
 849 
     | 
    
         
            +
            	      goto do_not_strip_quotes;
         
     | 
| 
      
 850 
     | 
    
         
            +
            	    /* Fall through.  */
         
     | 
| 
      
 851 
     | 
    
         
            +
            	  default:
         
     | 
| 
      
 852 
     | 
    
         
            +
            	    if (yyres)
         
     | 
| 
      
 853 
     | 
    
         
            +
            	      yyres[yyn] = *yyp;
         
     | 
| 
      
 854 
     | 
    
         
            +
            	    yyn++;
         
     | 
| 
      
 855 
     | 
    
         
            +
            	    break;
         
     | 
| 
      
 856 
     | 
    
         
            +
             
     | 
| 
      
 857 
     | 
    
         
            +
            	  case '"':
         
     | 
| 
      
 858 
     | 
    
         
            +
            	    if (yyres)
         
     | 
| 
      
 859 
     | 
    
         
            +
            	      yyres[yyn] = '\0';
         
     | 
| 
      
 860 
     | 
    
         
            +
            	    return yyn;
         
     | 
| 
      
 861 
     | 
    
         
            +
            	  }
         
     | 
| 
      
 862 
     | 
    
         
            +
                do_not_strip_quotes: ;
         
     | 
| 
      
 863 
     | 
    
         
            +
                }
         
     | 
| 
      
 864 
     | 
    
         
            +
             
     | 
| 
      
 865 
     | 
    
         
            +
              if (! yyres)
         
     | 
| 
      
 866 
     | 
    
         
            +
                return yystrlen (yystr);
         
     | 
| 
      
 867 
     | 
    
         
            +
             
     | 
| 
      
 868 
     | 
    
         
            +
              return yystpcpy (yyres, yystr) - yyres;
         
     | 
| 
      
 869 
     | 
    
         
            +
            }
         
     | 
| 
      
 870 
     | 
    
         
            +
            # endif
         
     | 
| 
      
 871 
     | 
    
         
            +
             
     | 
| 
      
 872 
     | 
    
         
            +
            #endif /* YYERROR_VERBOSE */
         
     | 
| 
       783 
873 
     | 
    
         | 
| 
       784 
874 
     | 
    
         | 
| 
       785 
875 
     | 
    
         | 
| 
         @@ -904,8 +994,8 @@ YYSTYPE yylval; 
     | 
|
| 
       904 
994 
     | 
    
         
             
            /* Number of syntax errors so far.  */
         
     | 
| 
       905 
995 
     | 
    
         
             
            int yynerrs;
         
     | 
| 
       906 
996 
     | 
    
         | 
| 
       907 
     | 
    
         
            -
               
     | 
| 
       908 
     | 
    
         
            -
               
     | 
| 
      
 997 
     | 
    
         
            +
              int yystate;
         
     | 
| 
      
 998 
     | 
    
         
            +
              int yyn;
         
     | 
| 
       909 
999 
     | 
    
         
             
              int yyresult;
         
     | 
| 
       910 
1000 
     | 
    
         
             
              /* Number of tokens to shift before error messages enabled.  */
         
     | 
| 
       911 
1001 
     | 
    
         
             
              int yyerrstatus;
         
     | 
| 
         @@ -923,12 +1013,12 @@ int yynerrs; 
     | 
|
| 
       923 
1013 
     | 
    
         
             
              /* The state stack.  */
         
     | 
| 
       924 
1014 
     | 
    
         
             
              short int yyssa[YYINITDEPTH];
         
     | 
| 
       925 
1015 
     | 
    
         
             
              short int *yyss = yyssa;
         
     | 
| 
       926 
     | 
    
         
            -
               
     | 
| 
      
 1016 
     | 
    
         
            +
              short int *yyssp;
         
     | 
| 
       927 
1017 
     | 
    
         | 
| 
       928 
1018 
     | 
    
         
             
              /* The semantic value stack.  */
         
     | 
| 
       929 
1019 
     | 
    
         
             
              YYSTYPE yyvsa[YYINITDEPTH];
         
     | 
| 
       930 
1020 
     | 
    
         
             
              YYSTYPE *yyvs = yyvsa;
         
     | 
| 
       931 
     | 
    
         
            -
               
     | 
| 
      
 1021 
     | 
    
         
            +
              YYSTYPE *yyvsp;
         
     | 
| 
       932 
1022 
     | 
    
         | 
| 
       933 
1023 
     | 
    
         | 
| 
       934 
1024 
     | 
    
         | 
| 
         @@ -960,9 +1050,6 @@ int yynerrs; 
     | 
|
| 
       960 
1050 
     | 
    
         
             
              yyssp = yyss;
         
     | 
| 
       961 
1051 
     | 
    
         
             
              yyvsp = yyvs;
         
     | 
| 
       962 
1052 
     | 
    
         | 
| 
       963 
     | 
    
         
            -
             
     | 
| 
       964 
     | 
    
         
            -
              yyvsp[0] = yylval;
         
     | 
| 
       965 
     | 
    
         
            -
             
     | 
| 
       966 
1053 
     | 
    
         
             
              goto yysetstate;
         
     | 
| 
       967 
1054 
     | 
    
         | 
| 
       968 
1055 
     | 
    
         
             
            /*------------------------------------------------------------.
         
     | 
| 
         @@ -995,7 +1082,7 @@ int yynerrs; 
     | 
|
| 
       995 
1082 
     | 
    
         
             
            	   data in use in that stack, in bytes.  This used to be a
         
     | 
| 
       996 
1083 
     | 
    
         
             
            	   conditional around just the two extra args, but that might
         
     | 
| 
       997 
1084 
     | 
    
         
             
            	   be undefined if yyoverflow is a macro.  */
         
     | 
| 
       998 
     | 
    
         
            -
            	yyoverflow (" 
     | 
| 
      
 1085 
     | 
    
         
            +
            	yyoverflow (YY_("memory exhausted"),
         
     | 
| 
       999 
1086 
     | 
    
         
             
            		    &yyss1, yysize * sizeof (*yyssp),
         
     | 
| 
       1000 
1087 
     | 
    
         
             
            		    &yyvs1, yysize * sizeof (*yyvsp),
         
     | 
| 
       1001 
1088 
     | 
    
         | 
| 
         @@ -1006,11 +1093,11 @@ int yynerrs; 
     | 
|
| 
       1006 
1093 
     | 
    
         
             
                  }
         
     | 
| 
       1007 
1094 
     | 
    
         
             
            #else /* no yyoverflow */
         
     | 
| 
       1008 
1095 
     | 
    
         
             
            # ifndef YYSTACK_RELOCATE
         
     | 
| 
       1009 
     | 
    
         
            -
                  goto  
     | 
| 
      
 1096 
     | 
    
         
            +
                  goto yyexhaustedlab;
         
     | 
| 
       1010 
1097 
     | 
    
         
             
            # else
         
     | 
| 
       1011 
1098 
     | 
    
         
             
                  /* Extend the stack our own way.  */
         
     | 
| 
       1012 
1099 
     | 
    
         
             
                  if (YYMAXDEPTH <= yystacksize)
         
     | 
| 
       1013 
     | 
    
         
            -
            	goto  
     | 
| 
      
 1100 
     | 
    
         
            +
            	goto yyexhaustedlab;
         
     | 
| 
       1014 
1101 
     | 
    
         
             
                  yystacksize *= 2;
         
     | 
| 
       1015 
1102 
     | 
    
         
             
                  if (YYMAXDEPTH < yystacksize)
         
     | 
| 
       1016 
1103 
     | 
    
         
             
            	yystacksize = YYMAXDEPTH;
         
     | 
| 
         @@ -1020,7 +1107,7 @@ int yynerrs; 
     | 
|
| 
       1020 
1107 
     | 
    
         
             
            	union yyalloc *yyptr =
         
     | 
| 
       1021 
1108 
     | 
    
         
             
            	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
         
     | 
| 
       1022 
1109 
     | 
    
         
             
            	if (! yyptr)
         
     | 
| 
       1023 
     | 
    
         
            -
            	  goto  
     | 
| 
      
 1110 
     | 
    
         
            +
            	  goto yyexhaustedlab;
         
     | 
| 
       1024 
1111 
     | 
    
         
             
            	YYSTACK_RELOCATE (yyss);
         
     | 
| 
       1025 
1112 
     | 
    
         
             
            	YYSTACK_RELOCATE (yyvs);
         
     | 
| 
       1026 
1113 
     | 
    
         | 
| 
         @@ -1364,10 +1451,11 @@ yyreduce: 
     | 
|
| 
       1364 
1451 
     | 
    
         
             
                break;
         
     | 
| 
       1365 
1452 
     | 
    
         | 
| 
       1366 
1453 
     | 
    
         | 
| 
      
 1454 
     | 
    
         
            +
                  default: break;
         
     | 
| 
       1367 
1455 
     | 
    
         
             
                }
         
     | 
| 
       1368 
1456 
     | 
    
         | 
| 
       1369 
     | 
    
         
            -
            /* Line  
     | 
| 
       1370 
     | 
    
         
            -
            #line  
     | 
| 
      
 1457 
     | 
    
         
            +
            /* Line 1126 of yacc.c.  */
         
     | 
| 
      
 1458 
     | 
    
         
            +
            #line 1459 "y.tab.c"
         
     | 
| 
       1371 
1459 
     | 
    
         | 
| 
       1372 
1460 
     | 
    
         
             
              yyvsp -= yylen;
         
     | 
| 
       1373 
1461 
     | 
    
         
             
              yyssp -= yylen;
         
     | 
| 
         @@ -1406,12 +1494,36 @@ yyerrlab: 
     | 
|
| 
       1406 
1494 
     | 
    
         | 
| 
       1407 
1495 
     | 
    
         
             
                  if (YYPACT_NINF < yyn && yyn < YYLAST)
         
     | 
| 
       1408 
1496 
     | 
    
         
             
            	{
         
     | 
| 
       1409 
     | 
    
         
            -
            	  YYSIZE_T yysize = 0;
         
     | 
| 
       1410 
1497 
     | 
    
         
             
            	  int yytype = YYTRANSLATE (yychar);
         
     | 
| 
       1411 
     | 
    
         
            -
            	   
     | 
| 
       1412 
     | 
    
         
            -
            	   
     | 
| 
      
 1498 
     | 
    
         
            +
            	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
         
     | 
| 
      
 1499 
     | 
    
         
            +
            	  YYSIZE_T yysize = yysize0;
         
     | 
| 
      
 1500 
     | 
    
         
            +
            	  YYSIZE_T yysize1;
         
     | 
| 
      
 1501 
     | 
    
         
            +
            	  int yysize_overflow = 0;
         
     | 
| 
      
 1502 
     | 
    
         
            +
            	  char *yymsg = 0;
         
     | 
| 
      
 1503 
     | 
    
         
            +
            #	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
         
     | 
| 
      
 1504 
     | 
    
         
            +
            	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
         
     | 
| 
       1413 
1505 
     | 
    
         
             
            	  int yyx;
         
     | 
| 
       1414 
1506 
     | 
    
         | 
| 
      
 1507 
     | 
    
         
            +
            #if 0
         
     | 
| 
      
 1508 
     | 
    
         
            +
            	  /* This is so xgettext sees the translatable formats that are
         
     | 
| 
      
 1509 
     | 
    
         
            +
            	     constructed on the fly.  */
         
     | 
| 
      
 1510 
     | 
    
         
            +
            	  YY_("syntax error, unexpected %s");
         
     | 
| 
      
 1511 
     | 
    
         
            +
            	  YY_("syntax error, unexpected %s, expecting %s");
         
     | 
| 
      
 1512 
     | 
    
         
            +
            	  YY_("syntax error, unexpected %s, expecting %s or %s");
         
     | 
| 
      
 1513 
     | 
    
         
            +
            	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
         
     | 
| 
      
 1514 
     | 
    
         
            +
            	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
         
     | 
| 
      
 1515 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1516 
     | 
    
         
            +
            	  char *yyfmt;
         
     | 
| 
      
 1517 
     | 
    
         
            +
            	  char const *yyf;
         
     | 
| 
      
 1518 
     | 
    
         
            +
            	  static char const yyunexpected[] = "syntax error, unexpected %s";
         
     | 
| 
      
 1519 
     | 
    
         
            +
            	  static char const yyexpecting[] = ", expecting %s";
         
     | 
| 
      
 1520 
     | 
    
         
            +
            	  static char const yyor[] = " or %s";
         
     | 
| 
      
 1521 
     | 
    
         
            +
            	  char yyformat[sizeof yyunexpected
         
     | 
| 
      
 1522 
     | 
    
         
            +
            			+ sizeof yyexpecting - 1
         
     | 
| 
      
 1523 
     | 
    
         
            +
            			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
         
     | 
| 
      
 1524 
     | 
    
         
            +
            			   * (sizeof yyor - 1))];
         
     | 
| 
      
 1525 
     | 
    
         
            +
            	  char const *yyprefix = yyexpecting;
         
     | 
| 
      
 1526 
     | 
    
         
            +
             
     | 
| 
       1415 
1527 
     | 
    
         
             
            	  /* Start YYX at -YYN if negative to avoid negative indexes in
         
     | 
| 
       1416 
1528 
     | 
    
         
             
            	     YYCHECK.  */
         
     | 
| 
       1417 
1529 
     | 
    
         
             
            	  int yyxbegin = yyn < 0 ? -yyn : 0;
         
     | 
| 
         @@ -1419,48 +1531,68 @@ yyerrlab: 
     | 
|
| 
       1419 
1531 
     | 
    
         
             
            	  /* Stay within bounds of both yycheck and yytname.  */
         
     | 
| 
       1420 
1532 
     | 
    
         
             
            	  int yychecklim = YYLAST - yyn;
         
     | 
| 
       1421 
1533 
     | 
    
         
             
            	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
         
     | 
| 
       1422 
     | 
    
         
            -
            	  int yycount =  
     | 
| 
      
 1534 
     | 
    
         
            +
            	  int yycount = 1;
         
     | 
| 
      
 1535 
     | 
    
         
            +
             
     | 
| 
      
 1536 
     | 
    
         
            +
            	  yyarg[0] = yytname[yytype];
         
     | 
| 
      
 1537 
     | 
    
         
            +
            	  yyfmt = yystpcpy (yyformat, yyunexpected);
         
     | 
| 
       1423 
1538 
     | 
    
         | 
| 
       1424 
     | 
    
         
            -
            	  yyprefix = ", expecting ";
         
     | 
| 
       1425 
1539 
     | 
    
         
             
            	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
         
     | 
| 
       1426 
1540 
     | 
    
         
             
            	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
         
     | 
| 
       1427 
1541 
     | 
    
         
             
            	      {
         
     | 
| 
       1428 
     | 
    
         
            -
            		 
     | 
| 
       1429 
     | 
    
         
            -
            		yycount += 1;
         
     | 
| 
       1430 
     | 
    
         
            -
            		if (yycount == 5)
         
     | 
| 
      
 1542 
     | 
    
         
            +
            		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
         
     | 
| 
       1431 
1543 
     | 
    
         
             
            		  {
         
     | 
| 
       1432 
     | 
    
         
            -
            		     
     | 
| 
      
 1544 
     | 
    
         
            +
            		    yycount = 1;
         
     | 
| 
      
 1545 
     | 
    
         
            +
            		    yysize = yysize0;
         
     | 
| 
      
 1546 
     | 
    
         
            +
            		    yyformat[sizeof yyunexpected - 1] = '\0';
         
     | 
| 
       1433 
1547 
     | 
    
         
             
            		    break;
         
     | 
| 
       1434 
1548 
     | 
    
         
             
            		  }
         
     | 
| 
      
 1549 
     | 
    
         
            +
            		yyarg[yycount++] = yytname[yyx];
         
     | 
| 
      
 1550 
     | 
    
         
            +
            		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
         
     | 
| 
      
 1551 
     | 
    
         
            +
            		yysize_overflow |= yysize1 < yysize;
         
     | 
| 
      
 1552 
     | 
    
         
            +
            		yysize = yysize1;
         
     | 
| 
      
 1553 
     | 
    
         
            +
            		yyfmt = yystpcpy (yyfmt, yyprefix);
         
     | 
| 
      
 1554 
     | 
    
         
            +
            		yyprefix = yyor;
         
     | 
| 
       1435 
1555 
     | 
    
         
             
            	      }
         
     | 
| 
       1436 
     | 
    
         
            -
            	  yysize += (sizeof ("syntax error, unexpected ")
         
     | 
| 
       1437 
     | 
    
         
            -
            		     + yystrlen (yytname[yytype]));
         
     | 
| 
       1438 
     | 
    
         
            -
            	  yymsg = (char *) YYSTACK_ALLOC (yysize);
         
     | 
| 
       1439 
     | 
    
         
            -
            	  if (yymsg != 0)
         
     | 
| 
       1440 
     | 
    
         
            -
            	    {
         
     | 
| 
       1441 
     | 
    
         
            -
            	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
         
     | 
| 
       1442 
     | 
    
         
            -
            	      yyp = yystpcpy (yyp, yytname[yytype]);
         
     | 
| 
       1443 
1556 
     | 
    
         | 
| 
       1444 
     | 
    
         
            -
             
     | 
| 
      
 1557 
     | 
    
         
            +
            	  yyf = YY_(yyformat);
         
     | 
| 
      
 1558 
     | 
    
         
            +
            	  yysize1 = yysize + yystrlen (yyf);
         
     | 
| 
      
 1559 
     | 
    
         
            +
            	  yysize_overflow |= yysize1 < yysize;
         
     | 
| 
      
 1560 
     | 
    
         
            +
            	  yysize = yysize1;
         
     | 
| 
      
 1561 
     | 
    
         
            +
             
     | 
| 
      
 1562 
     | 
    
         
            +
            	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
         
     | 
| 
      
 1563 
     | 
    
         
            +
            	    yymsg = (char *) YYSTACK_ALLOC (yysize);
         
     | 
| 
      
 1564 
     | 
    
         
            +
            	  if (yymsg)
         
     | 
| 
      
 1565 
     | 
    
         
            +
            	    {
         
     | 
| 
      
 1566 
     | 
    
         
            +
            	      /* Avoid sprintf, as that infringes on the user's name space.
         
     | 
| 
      
 1567 
     | 
    
         
            +
            		 Don't have undefined behavior even if the translation
         
     | 
| 
      
 1568 
     | 
    
         
            +
            		 produced a string with the wrong number of "%s"s.  */
         
     | 
| 
      
 1569 
     | 
    
         
            +
            	      char *yyp = yymsg;
         
     | 
| 
      
 1570 
     | 
    
         
            +
            	      int yyi = 0;
         
     | 
| 
      
 1571 
     | 
    
         
            +
            	      while ((*yyp = *yyf))
         
     | 
| 
       1445 
1572 
     | 
    
         
             
            		{
         
     | 
| 
       1446 
     | 
    
         
            -
            		   
     | 
| 
       1447 
     | 
    
         
            -
             
     | 
| 
       1448 
     | 
    
         
            -
             
     | 
| 
       1449 
     | 
    
         
            -
            		       
     | 
| 
       1450 
     | 
    
         
            -
             
     | 
| 
       1451 
     | 
    
         
            -
             
     | 
| 
       1452 
     | 
    
         
            -
             
     | 
| 
       1453 
     | 
    
         
            -
            		       
     | 
| 
      
 1573 
     | 
    
         
            +
            		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
         
     | 
| 
      
 1574 
     | 
    
         
            +
            		    {
         
     | 
| 
      
 1575 
     | 
    
         
            +
            		      yyp += yytnamerr (yyp, yyarg[yyi++]);
         
     | 
| 
      
 1576 
     | 
    
         
            +
            		      yyf += 2;
         
     | 
| 
      
 1577 
     | 
    
         
            +
            		    }
         
     | 
| 
      
 1578 
     | 
    
         
            +
            		  else
         
     | 
| 
      
 1579 
     | 
    
         
            +
            		    {
         
     | 
| 
      
 1580 
     | 
    
         
            +
            		      yyp++;
         
     | 
| 
      
 1581 
     | 
    
         
            +
            		      yyf++;
         
     | 
| 
      
 1582 
     | 
    
         
            +
            		    }
         
     | 
| 
       1454 
1583 
     | 
    
         
             
            		}
         
     | 
| 
       1455 
1584 
     | 
    
         
             
            	      yyerror (qp, yymsg);
         
     | 
| 
       1456 
1585 
     | 
    
         
             
            	      YYSTACK_FREE (yymsg);
         
     | 
| 
       1457 
1586 
     | 
    
         
             
            	    }
         
     | 
| 
       1458 
1587 
     | 
    
         
             
            	  else
         
     | 
| 
       1459 
     | 
    
         
            -
            	     
     | 
| 
      
 1588 
     | 
    
         
            +
            	    {
         
     | 
| 
      
 1589 
     | 
    
         
            +
            	      yyerror (qp, YY_("syntax error"));
         
     | 
| 
      
 1590 
     | 
    
         
            +
            	      goto yyexhaustedlab;
         
     | 
| 
      
 1591 
     | 
    
         
            +
            	    }
         
     | 
| 
       1460 
1592 
     | 
    
         
             
            	}
         
     | 
| 
       1461 
1593 
     | 
    
         
             
                  else
         
     | 
| 
       1462 
1594 
     | 
    
         
             
            #endif /* YYERROR_VERBOSE */
         
     | 
| 
       1463 
     | 
    
         
            -
            	yyerror (qp, "syntax error");
         
     | 
| 
      
 1595 
     | 
    
         
            +
            	yyerror (qp, YY_("syntax error"));
         
     | 
| 
       1464 
1596 
     | 
    
         
             
                }
         
     | 
| 
       1465 
1597 
     | 
    
         | 
| 
       1466 
1598 
     | 
    
         | 
| 
         @@ -1472,18 +1604,9 @@ yyerrlab: 
     | 
|
| 
       1472 
1604 
     | 
    
         | 
| 
       1473 
1605 
     | 
    
         
             
                  if (yychar <= YYEOF)
         
     | 
| 
       1474 
1606 
     | 
    
         
             
                    {
         
     | 
| 
       1475 
     | 
    
         
            -
             
     | 
| 
       1476 
     | 
    
         
            -
            	     then the rest of the stack, then return failure.  */
         
     | 
| 
      
 1607 
     | 
    
         
            +
            	  /* Return failure if at end of input.  */
         
     | 
| 
       1477 
1608 
     | 
    
         
             
            	  if (yychar == YYEOF)
         
     | 
| 
       1478 
     | 
    
         
            -
             
     | 
| 
       1479 
     | 
    
         
            -
            	       {
         
     | 
| 
       1480 
     | 
    
         
            -
             
     | 
| 
       1481 
     | 
    
         
            -
            		 YYPOPSTACK;
         
     | 
| 
       1482 
     | 
    
         
            -
            		 if (yyssp == yyss)
         
     | 
| 
       1483 
     | 
    
         
            -
            		   YYABORT;
         
     | 
| 
       1484 
     | 
    
         
            -
            		 yydestruct ("Error: popping",
         
     | 
| 
       1485 
     | 
    
         
            -
                                         yystos[*yyssp], yyvsp);
         
     | 
| 
       1486 
     | 
    
         
            -
            	       }
         
     | 
| 
      
 1609 
     | 
    
         
            +
            	    YYABORT;
         
     | 
| 
       1487 
1610 
     | 
    
         
             
                    }
         
     | 
| 
       1488 
1611 
     | 
    
         
             
                  else
         
     | 
| 
       1489 
1612 
     | 
    
         
             
            	{
         
     | 
| 
         @@ -1502,12 +1625,11 @@ yyerrlab: 
     | 
|
| 
       1502 
1625 
     | 
    
         
             
            `---------------------------------------------------*/
         
     | 
| 
       1503 
1626 
     | 
    
         
             
            yyerrorlab:
         
     | 
| 
       1504 
1627 
     | 
    
         | 
| 
       1505 
     | 
    
         
            -
             
     | 
| 
       1506 
     | 
    
         
            -
             
     | 
| 
       1507 
     | 
    
         
            -
                  
     | 
| 
      
 1628 
     | 
    
         
            +
              /* Pacify compilers like GCC when the user code never invokes
         
     | 
| 
      
 1629 
     | 
    
         
            +
                 YYERROR and the label yyerrorlab therefore never appears in user
         
     | 
| 
      
 1630 
     | 
    
         
            +
                 code.  */
         
     | 
| 
       1508 
1631 
     | 
    
         
             
              if (0)
         
     | 
| 
       1509 
1632 
     | 
    
         
             
                 goto yyerrorlab;
         
     | 
| 
       1510 
     | 
    
         
            -
            #endif
         
     | 
| 
       1511 
1633 
     | 
    
         | 
| 
       1512 
1634 
     | 
    
         
             
            yyvsp -= yylen;
         
     | 
| 
       1513 
1635 
     | 
    
         
             
              yyssp -= yylen;
         
     | 
| 
         @@ -1570,23 +1692,29 @@ yyacceptlab: 
     | 
|
| 
       1570 
1692 
     | 
    
         
             
            | yyabortlab -- YYABORT comes here.  |
         
     | 
| 
       1571 
1693 
     | 
    
         
             
            `-----------------------------------*/
         
     | 
| 
       1572 
1694 
     | 
    
         
             
            yyabortlab:
         
     | 
| 
       1573 
     | 
    
         
            -
              yydestruct ("Error: discarding lookahead",
         
     | 
| 
       1574 
     | 
    
         
            -
                          yytoken, &yylval);
         
     | 
| 
       1575 
     | 
    
         
            -
              yychar = YYEMPTY;
         
     | 
| 
       1576 
1695 
     | 
    
         
             
              yyresult = 1;
         
     | 
| 
       1577 
1696 
     | 
    
         
             
              goto yyreturn;
         
     | 
| 
       1578 
1697 
     | 
    
         | 
| 
       1579 
1698 
     | 
    
         
             
            #ifndef yyoverflow
         
     | 
| 
       1580 
     | 
    
         
            -
             
     | 
| 
       1581 
     | 
    
         
            -
            |  
     | 
| 
       1582 
     | 
    
         
            -
             
     | 
| 
       1583 
     | 
    
         
            -
             
     | 
| 
       1584 
     | 
    
         
            -
              yyerror (qp, " 
     | 
| 
      
 1699 
     | 
    
         
            +
            /*-------------------------------------------------.
         
     | 
| 
      
 1700 
     | 
    
         
            +
            | yyexhaustedlab -- memory exhaustion comes here.  |
         
     | 
| 
      
 1701 
     | 
    
         
            +
            `-------------------------------------------------*/
         
     | 
| 
      
 1702 
     | 
    
         
            +
            yyexhaustedlab:
         
     | 
| 
      
 1703 
     | 
    
         
            +
              yyerror (qp, YY_("memory exhausted"));
         
     | 
| 
       1585 
1704 
     | 
    
         
             
              yyresult = 2;
         
     | 
| 
       1586 
1705 
     | 
    
         
             
              /* Fall through.  */
         
     | 
| 
       1587 
1706 
     | 
    
         
             
            #endif
         
     | 
| 
       1588 
1707 
     | 
    
         | 
| 
       1589 
1708 
     | 
    
         
             
            yyreturn:
         
     | 
| 
      
 1709 
     | 
    
         
            +
              if (yychar != YYEOF && yychar != YYEMPTY)
         
     | 
| 
      
 1710 
     | 
    
         
            +
                 yydestruct ("Cleanup: discarding lookahead",
         
     | 
| 
      
 1711 
     | 
    
         
            +
            		 yytoken, &yylval);
         
     | 
| 
      
 1712 
     | 
    
         
            +
              while (yyssp != yyss)
         
     | 
| 
      
 1713 
     | 
    
         
            +
                {
         
     | 
| 
      
 1714 
     | 
    
         
            +
                  yydestruct ("Cleanup: popping",
         
     | 
| 
      
 1715 
     | 
    
         
            +
            		  yystos[*yyssp], yyvsp);
         
     | 
| 
      
 1716 
     | 
    
         
            +
                  YYPOPSTACK;
         
     | 
| 
      
 1717 
     | 
    
         
            +
                }
         
     | 
| 
       1590 
1718 
     | 
    
         
             
            #ifndef yyoverflow
         
     | 
| 
       1591 
1719 
     | 
    
         
             
              if (yyss != yyssa)
         
     | 
| 
       1592 
1720 
     | 
    
         
             
                YYSTACK_FREE (yyss);
         
     | 
| 
         @@ -1632,7 +1760,7 @@ int get_word(YYSTYPE *lvalp, QParser *qp) 
     | 
|
| 
       1632 
1760 
     | 
    
         
             
              /* check for keywords. There are only four so we have a bit of a hack which
         
     | 
| 
       1633 
1761 
     | 
    
         
             
               * just checks for all of them. */
         
     | 
| 
       1634 
1762 
     | 
    
         
             
              *bufp = '\0';
         
     | 
| 
       1635 
     | 
    
         
            -
              len = bufp - buf;
         
     | 
| 
      
 1763 
     | 
    
         
            +
              len = (int)(bufp - buf);
         
     | 
| 
       1636 
1764 
     | 
    
         
             
              if (len == 3) {
         
     | 
| 
       1637 
1765 
     | 
    
         
             
                if (buf[0] == 'A' && buf[1] == 'N' && buf[2] == 'D') return AND;
         
     | 
| 
       1638 
1766 
     | 
    
         
             
                if (buf[0] == 'N' && buf[1] == 'O' && buf[2] == 'T') return NOT;
         
     | 
| 
         @@ -1814,7 +1942,7 @@ Query *get_wild_q(QParser *qp, char *field, char *pattern) 
     | 
|
| 
       1814 
1942 
     | 
    
         
             
              Query *q;
         
     | 
| 
       1815 
1943 
     | 
    
         
             
              bool is_prefix = false;
         
     | 
| 
       1816 
1944 
     | 
    
         
             
              char *p;
         
     | 
| 
       1817 
     | 
    
         
            -
              int len = strlen(pattern);
         
     | 
| 
      
 1945 
     | 
    
         
            +
              int len = (int)strlen(pattern);
         
     | 
| 
       1818 
1946 
     | 
    
         | 
| 
       1819 
1947 
     | 
    
         
             
              if (qp->wild_lower) lower_str(pattern);
         
     | 
| 
       1820 
1948 
     | 
    
         | 
| 
         @@ -2048,12 +2176,12 @@ Query *get_range_q(char *field, char *from, char *to, bool inc_lower, bool inc_u 
     | 
|
| 
       2048 
2176 
     | 
    
         
             
              return rq_create(field, from, to, inc_lower, inc_upper);
         
     | 
| 
       2049 
2177 
     | 
    
         
             
            }
         
     | 
| 
       2050 
2178 
     | 
    
         | 
| 
       2051 
     | 
    
         
            -
            void qp_destroy( 
     | 
| 
      
 2179 
     | 
    
         
            +
            void qp_destroy(QParser *self)
         
     | 
| 
       2052 
2180 
     | 
    
         
             
            {
         
     | 
| 
       2053 
     | 
    
         
            -
              QParser *self = (QParser *)p;
         
     | 
| 
       2054 
2181 
     | 
    
         
             
              if (self->close_def_fields) hs_destroy_all(self->def_fields);
         
     | 
| 
       2055 
2182 
     | 
    
         
             
              hs_destroy_all(self->all_fields);
         
     | 
| 
       2056 
2183 
     | 
    
         
             
              hs_destroy(self->fields_buf);
         
     | 
| 
      
 2184 
     | 
    
         
            +
              a_deref(self->analyzer);
         
     | 
| 
       2057 
2185 
     | 
    
         
             
              free(self);
         
     | 
| 
       2058 
2186 
     | 
    
         
             
            }
         
     | 
| 
       2059 
2187 
     | 
    
         | 
| 
         @@ -2111,7 +2239,7 @@ char *qp_clean_str(char *str) 
     | 
|
| 
       2111 
2239 
     | 
    
         
             
                b = *sp;
         
     | 
| 
       2112 
2240 
     | 
    
         
             
                /* ignore escaped characters */
         
     | 
| 
       2113 
2241 
     | 
    
         
             
                if (pb == '\\') {
         
     | 
| 
       2114 
     | 
    
         
            -
                  if (quote_open &&  
     | 
| 
      
 2242 
     | 
    
         
            +
                  if (quote_open && strrchr(PHRASE_CHARS, b)) {
         
     | 
| 
       2115 
2243 
     | 
    
         
             
                    *nsp++ = '\\'; /* this was left off the first time through */
         
     | 
| 
       2116 
2244 
     | 
    
         
             
                  }
         
     | 
| 
       2117 
2245 
     | 
    
         | 
| 
         @@ -2140,7 +2268,7 @@ char *qp_clean_str(char *str) 
     | 
|
| 
       2140 
2268 
     | 
    
         
             
                  case ')':
         
     | 
| 
       2141 
2269 
     | 
    
         
             
                    if (!quote_open) {
         
     | 
| 
       2142 
2270 
     | 
    
         
             
                      if (br_cnt == 0) {
         
     | 
| 
       2143 
     | 
    
         
            -
                        str_insert(new_str, nsp - new_str, '(');
         
     | 
| 
      
 2271 
     | 
    
         
            +
                        str_insert(new_str, (int)(nsp - new_str), '(');
         
     | 
| 
       2144 
2272 
     | 
    
         
             
                        nsp++;
         
     | 
| 
       2145 
2273 
     | 
    
         
             
                      } else {
         
     | 
| 
       2146 
2274 
     | 
    
         
             
                        br_cnt--;
         
     | 
| 
         @@ -2164,7 +2292,7 @@ char *qp_clean_str(char *str) 
     | 
|
| 
       2164 
2292 
     | 
    
         
             
                    break;
         
     | 
| 
       2165 
2293 
     | 
    
         
             
                  default:
         
     | 
| 
       2166 
2294 
     | 
    
         
             
                    if (quote_open) {
         
     | 
| 
       2167 
     | 
    
         
            -
                      if ( 
     | 
| 
      
 2295 
     | 
    
         
            +
                      if (strrchr(special_char, b) && b != '|') {
         
     | 
| 
       2168 
2296 
     | 
    
         
             
                        *nsp++ = '\\';
         
     | 
| 
       2169 
2297 
     | 
    
         
             
                      }
         
     | 
| 
       2170 
2298 
     | 
    
         
             
                    }
         
     |