~ubuntu-branches/ubuntu/vivid/sphinxsearch/vivid

« back to all changes in this revision

Viewing changes to src/yysphinxquery.c

  • Committer: Package Import Robot
  • Author(s): Clint Byrum
  • Date: 2012-04-05 09:25:55 UTC
  • mfrom: (1.2.1) (7.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20120405092555-65tc91rowhls3kob
Tags: 2.0.4-0ubuntu1
* New upstream release (LP: #930747)
* Remove explicit depends on libmysqlcient16 (LP: #974427)

Show diffs side-by-side

added added

removed removed

Lines of Context:
222
222
#endif
223
223
 
224
224
/* YYFINAL -- State number of the termination state. */
225
 
#define YYFINAL  38
 
225
#define YYFINAL  9
226
226
/* YYLAST -- Last index in YYTABLE.  */
227
 
#define YYLAST   136
 
227
#define YYLAST   110
228
228
 
229
229
/* YYNTOKENS -- Number of terminals. */
230
230
#define YYNTOKENS  20
231
231
/* YYNNTS -- Number of nonterminals. */
232
232
#define YYNNTS  15
233
233
/* YYNRULES -- Number of rules. */
234
 
#define YYNRULES  46
 
234
#define YYNRULES  45
235
235
/* YYNRULES -- Number of states. */
236
 
#define YYNSTATES  72
 
236
#define YYNSTATES  69
237
237
 
238
238
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
239
239
#define YYUNDEFTOK  2
248
248
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
249
249
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
250
250
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
251
 
       2,     2,     2,     2,    19,     2,    11,     2,     2,     2,
252
 
      13,    14,     2,     2,     2,    15,     2,    18,     2,     2,
253
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
254
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
255
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
256
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
257
 
       2,     2,     2,     2,    12,     2,     2,     2,     2,     2,
258
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
259
 
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
260
 
       2,     2,     2,     2,    16,     2,    17,     2,     2,     2,
 
251
       2,     2,     2,     2,    13,     2,    18,     2,     2,     2,
 
252
      16,    17,     2,     2,     2,    11,     2,    15,     2,     2,
 
253
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
254
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
255
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
256
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
257
       2,     2,     2,     2,    19,     2,     2,     2,     2,     2,
 
258
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
259
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
260
       2,     2,     2,     2,    12,     2,    14,     2,     2,     2,
261
261
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
262
262
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
263
263
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
279
279
   YYRHS.  */
280
280
static const unsigned char yyprhs[] =
281
281
{
282
 
       0,     0,     3,     5,     7,     9,    11,    14,    17,    21,
283
 
      23,    25,    27,    29,    31,    33,    35,    37,    40,    42,
284
 
      46,    50,    54,    58,    62,    64,    66,    68,    71,    76,
285
 
      81,    85,    91,    97,   101,   103,   106,   109,   111,   115,
286
 
     117,   120,   124,   126,   130,   134,   136
 
282
       0,     0,     3,     5,     7,    10,    11,    13,    15,    17,
 
283
      21,    25,    27,    31,    34,    39,    41,    43,    45,    48,
 
284
      53,    58,    62,    68,    74,    78,    80,    83,    86,    90,
 
285
      92,    94,    98,   102,   106,   110,   112,   116,   118,   121,
 
286
     123,   125,   127,   129,   131,   133
287
287
};
288
288
 
289
289
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
290
290
static const yysigned_char yyrhs[] =
291
291
{
292
 
      21,     0,    -1,    34,    -1,     3,    -1,     5,    -1,    22,
293
 
      -1,    22,    11,    -1,    12,    22,    -1,    12,    22,    11,
294
 
      -1,    23,    -1,    13,    -1,    14,    -1,    15,    -1,    16,
295
 
      -1,    17,    -1,    18,    -1,    24,    -1,    25,    24,    -1,
296
 
      23,    -1,    19,    25,    19,    -1,    26,     9,    26,    -1,
297
 
      27,     9,    26,    -1,    26,    10,    26,    -1,    28,    10,
298
 
      26,    -1,    23,    -1,    27,    -1,    28,    -1,    19,    19,
299
 
      -1,    19,    19,    17,     5,    -1,    19,    19,    18,     5,
300
 
      -1,    19,    25,    19,    -1,    19,    25,    19,    17,     5,
301
 
      -1,    19,    25,    19,    18,     5,    -1,    13,    34,    14,
302
 
      -1,    29,    -1,     6,    29,    -1,     7,    29,    -1,    30,
303
 
      -1,    31,    16,    30,    -1,    31,    -1,    15,    31,    -1,
304
 
       6,    15,    31,    -1,    32,    -1,    33,     8,    32,    -1,
305
 
      33,     4,    32,    -1,    33,    -1,    34,    33,    -1
 
292
      21,     0,    -1,    22,    -1,    24,    -1,    22,    24,    -1,
 
293
      -1,     6,    -1,     7,    -1,    25,    -1,    24,     8,    25,
 
294
      -1,    24,     4,    25,    -1,    26,    -1,    23,    11,    26,
 
295
      -1,    23,    27,    -1,    26,    12,    23,    27,    -1,    28,
 
296
      -1,    30,    -1,    31,    -1,    13,    13,    -1,    13,    13,
 
297
      14,     5,    -1,    13,    13,    15,     5,    -1,    13,    33,
 
298
      13,    -1,    13,    33,    13,    14,     5,    -1,    13,    33,
 
299
      13,    15,     5,    -1,    16,    22,    17,    -1,    29,    -1,
 
300
      29,    18,    -1,    19,    29,    -1,    19,    29,    18,    -1,
 
301
       3,    -1,     5,    -1,    32,     9,    32,    -1,    30,     9,
 
302
      32,    -1,    32,    10,    32,    -1,    31,    10,    32,    -1,
 
303
      28,    -1,    13,    33,    13,    -1,    34,    -1,    33,    34,
 
304
      -1,    28,    -1,    16,    -1,    17,    -1,    11,    -1,    12,
 
305
      -1,    14,    -1,    15,    -1
306
306
};
307
307
 
308
308
/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
309
309
static const unsigned char yyrline[] =
310
310
{
311
 
       0,    54,    54,    58,    59,    63,    64,    65,    66,    70,
312
 
      71,    72,    73,    74,    75,    76,    80,    81,    85,    86,
313
 
      90,    91,    95,    96,   100,   101,   102,   103,   104,   105,
314
 
     106,   107,   108,   109,   113,   114,   115,   119,   120,   124,
315
 
     125,   126,   130,   131,   132,   136,   137
 
311
       0,    53,    53,    57,    58,    61,    63,    64,    68,    69,
 
312
      70,    74,    75,    79,    80,    84,    85,    86,    87,    88,
 
313
      89,    90,    91,    92,    93,    98,    99,   100,   101,   105,
 
314
     106,   110,   111,   115,   116,   120,   121,   125,   126,   130,
 
315
     131,   132,   133,   134,   135,   136
316
316
};
317
317
#endif
318
318
 
323
323
{
324
324
  "$end", "error", "$undefined", "TOK_KEYWORD", "TOK_NEAR", "TOK_INT", 
325
325
  "TOK_FIELDLIMIT", "TOK_ZONE", "TOK_BEFORE", "TOK_SENTENCE", 
326
 
  "TOK_PARAGRAPH", "'$'", "'^'", "'('", "')'", "'-'", "'|'", "'~'", "'/'", 
327
 
  "'\"'", "$accept", "query", "rawkeyword", "keyword", "phrasetoken", 
328
 
  "phrase", "sp_item", "sentence", "paragraph", "atom", "atomf", "orlist", 
329
 
  "orlistf", "beforelist", "expr", 0
 
326
  "TOK_PARAGRAPH", "'-'", "'|'", "'\"'", "'~'", "'/'", "'('", "')'", 
 
327
  "'$'", "'^'", "$accept", "query", "expr", "tok_limiter", "beforelist", 
 
328
  "orlistf", "orlist", "atom", "keyword", "rawkeyword", "sentence", 
 
329
  "paragraph", "sp_item", "phrase", "phrasetoken", 0
330
330
};
331
331
#endif
332
332
 
336
336
static const unsigned short yytoknum[] =
337
337
{
338
338
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
339
 
     265,    36,    94,    40,    41,    45,   124,   126,    47,    34
 
339
     265,    45,   124,    34,   126,    47,    40,    41,    36,    94
340
340
};
341
341
# endif
342
342
 
343
343
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
344
344
static const unsigned char yyr1[] =
345
345
{
346
 
       0,    20,    21,    22,    22,    23,    23,    23,    23,    24,
347
 
      24,    24,    24,    24,    24,    24,    25,    25,    26,    26,
348
 
      27,    27,    28,    28,    29,    29,    29,    29,    29,    29,
349
 
      29,    29,    29,    29,    30,    30,    30,    31,    31,    32,
350
 
      32,    32,    33,    33,    33,    34,    34
 
346
       0,    20,    21,    22,    22,    23,    23,    23,    24,    24,
 
347
      24,    25,    25,    26,    26,    27,    27,    27,    27,    27,
 
348
      27,    27,    27,    27,    27,    28,    28,    28,    28,    29,
 
349
      29,    30,    30,    31,    31,    32,    32,    33,    33,    34,
 
350
      34,    34,    34,    34,    34,    34
351
351
};
352
352
 
353
353
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
354
354
static const unsigned char yyr2[] =
355
355
{
356
 
       0,     2,     1,     1,     1,     1,     2,     2,     3,     1,
357
 
       1,     1,     1,     1,     1,     1,     1,     2,     1,     3,
358
 
       3,     3,     3,     3,     1,     1,     1,     2,     4,     4,
359
 
       3,     5,     5,     3,     1,     2,     2,     1,     3,     1,
360
 
       2,     3,     1,     3,     3,     1,     2
 
356
       0,     2,     1,     1,     2,     0,     1,     1,     1,     3,
 
357
       3,     1,     3,     2,     4,     1,     1,     1,     2,     4,
 
358
       4,     3,     5,     5,     3,     1,     2,     2,     3,     1,
 
359
       1,     3,     3,     3,     3,     1,     3,     1,     2,     1,
 
360
       1,     1,     1,     1,     1,     1
361
361
};
362
362
 
363
363
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
365
365
   means the default is an error.  */
366
366
static const unsigned char yydefact[] =
367
367
{
368
 
       0,     3,     4,     0,     0,     0,     0,     0,     0,     0,
369
 
       5,    24,     0,    25,    26,    34,    37,    39,    42,    45,
370
 
       2,     0,    35,    36,     7,     0,     0,    40,    10,    11,
371
 
      12,    13,    14,    15,    27,     9,    16,     0,     1,     6,
372
 
       0,     0,     0,     0,     0,     0,     0,    46,    41,     8,
373
 
      33,     0,     0,    30,    17,     0,    18,    20,    22,    21,
374
 
      23,    38,    44,    43,    28,    29,     0,     0,     0,    31,
375
 
      32,    19
 
368
       5,     6,     7,     0,     5,     0,     3,     8,    11,     1,
 
369
       4,    29,    30,     5,     0,     5,     0,    13,    15,    25,
 
370
      16,    17,     0,     5,     5,     5,     0,    12,    42,    43,
 
371
      18,    44,    45,    40,    41,    39,     0,    37,     5,    27,
 
372
      26,     0,     0,     0,     0,    10,     9,     0,     0,     0,
 
373
      21,    38,    24,    28,     0,    35,    32,    34,    31,    33,
 
374
      14,    19,    20,     0,     0,     0,    22,    23,    36
376
375
};
377
376
 
378
377
/* YYDEFGOTO[NTERM-NUM]. */
379
378
static const yysigned_char yydefgoto[] =
380
379
{
381
 
      -1,     9,    10,    11,    36,    37,    12,    13,    14,    15,
382
 
      16,    17,    18,    19,    20
 
380
      -1,     3,     4,     5,     6,     7,     8,    17,    35,    19,
 
381
      20,    21,    22,    36,    37
383
382
};
384
383
 
385
384
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
386
385
   STATE-NUM.  */
387
 
#define YYPACT_NINF -33
 
386
#define YYPACT_NINF -35
388
387
static const yysigned_char yypact[] =
389
388
{
390
 
      81,   -33,   -33,   103,   107,    20,    81,    92,     1,    27,
391
 
      42,    36,    41,    22,    45,   -33,   -33,    54,   -33,    18,
392
 
      81,    92,   -33,   -33,    64,    66,   107,    54,   -33,   -33,
393
 
     -33,   -33,   -33,   -33,    74,   -33,   -33,    25,   -33,   -33,
394
 
      71,    71,    71,    71,    92,    81,    81,    18,    54,   -33,
395
 
     -33,    72,    77,    39,   -33,   118,   -33,   -33,   -33,   -33,
396
 
     -33,   -33,   -33,   -33,   -33,   -33,    84,    96,    49,   -33,
397
 
     -33,   -33
 
389
      20,   -35,   -35,     9,    40,    83,    21,   -35,    22,   -35,
 
390
      21,   -35,   -35,    20,     0,    20,     1,   -35,    35,   -11,
 
391
      19,    71,    65,    20,    20,    20,    87,    22,   -35,   -35,
 
392
      62,   -35,   -35,   -35,   -35,   -35,    38,   -35,    16,    12,
 
393
     -35,     5,     5,     5,     5,   -35,   -35,    87,    43,    58,
 
394
      95,   -35,   -35,   -35,    68,   -35,   -35,   -35,   -35,   -35,
 
395
     -35,   -35,   -35,    73,    84,    53,   -35,   -35,   -35
398
396
};
399
397
 
400
398
/* YYPGOTO[NTERM-NUM].  */
401
399
static const yysigned_char yypgoto[] =
402
400
{
403
 
     -33,   -33,    97,    -8,   -32,    48,   -31,   -33,   -33,    -2,
404
 
      63,     0,    13,   -17,   108
 
401
     -35,   -35,    76,     7,    -3,    74,    80,    48,    -5,    85,
 
402
     -35,   -35,    18,    54,   -34
405
403
};
406
404
 
407
405
/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
408
406
   positive, shift that token.  If negative, reduce the rule which
409
407
   number is the opposite.  If zero, do what YYDEFACT says.
410
408
   If YYTABLE_NINF, syntax error.  */
411
 
#define YYTABLE_NINF -20
 
409
#define YYTABLE_NINF -37
412
410
static const yysigned_char yytable[] =
413
411
{
414
 
      35,    22,    23,    47,     1,    54,     2,    27,    47,    57,
415
 
      58,    59,    60,     5,    28,    29,    30,    31,    32,    33,
416
 
      34,    48,    45,     1,    22,     2,    46,    38,     1,    35,
417
 
       2,    42,    56,    56,    56,    56,    54,     5,    28,    29,
418
 
      30,    31,    32,    33,    53,   -18,   -18,    35,   -19,   -19,
419
 
      40,    41,     1,    39,     2,    43,    66,    67,    62,    63,
420
 
      35,     5,    28,    29,    30,    31,    32,    33,    71,     1,
421
 
      44,     2,     3,     4,     1,    49,     2,    64,     5,     6,
422
 
      50,     7,    65,     5,     1,     8,     2,     3,     4,    69,
423
 
      55,    51,    52,     5,     6,     1,     7,     2,    26,     4,
424
 
       8,    70,    24,    68,     5,     6,     1,    61,     2,     0,
425
 
       1,     8,     2,     0,    25,     5,     6,     0,    21,     5,
426
 
       6,     1,     8,     2,     0,     0,     8,     0,     0,     0,
427
 
       5,    28,    29,    30,    31,    32,    33
 
412
      18,    10,    51,    11,    11,    12,    12,    40,    11,     9,
 
413
      12,    28,    29,    30,    31,    32,    33,    34,    54,    16,
 
414
      26,    18,     1,     2,    16,    23,     1,     2,    41,    24,
 
415
      53,    51,    47,    52,    25,    10,    55,    55,    55,    55,
 
416
      -2,    11,    18,    12,   -35,   -35,     1,     2,    61,    28,
 
417
      29,    50,    31,    32,    33,    34,    11,    16,    12,    56,
 
418
      57,    58,    59,    62,    28,    29,    68,    31,    32,    33,
 
419
      34,    11,    16,    12,    43,    44,    48,    49,    66,    28,
 
420
      29,    42,    31,    32,    33,    34,    11,    16,    12,    67,
 
421
      11,    38,    12,    27,    13,    60,    14,    45,    46,    15,
 
422
      14,    39,    16,    15,   -36,   -36,    16,     0,    65,    63,
 
423
      64
428
424
};
429
425
 
430
426
static const yysigned_char yycheck[] =
431
427
{
432
 
       8,     3,     4,    20,     3,    37,     5,     7,    25,    40,
433
 
      41,    42,    43,    12,    13,    14,    15,    16,    17,    18,
434
 
      19,    21,     4,     3,    26,     5,     8,     0,     3,    37,
435
 
       5,     9,    40,    41,    42,    43,    68,    12,    13,    14,
436
 
      15,    16,    17,    18,    19,     9,    10,    55,     9,    10,
437
 
       9,    10,     3,    11,     5,    10,    17,    18,    45,    46,
438
 
      68,    12,    13,    14,    15,    16,    17,    18,    19,     3,
439
 
      16,     5,     6,     7,     3,    11,     5,     5,    12,    13,
440
 
      14,    15,     5,    12,     3,    19,     5,     6,     7,     5,
441
 
      19,    17,    18,    12,    13,     3,    15,     5,     6,     7,
442
 
      19,     5,     5,    55,    12,    13,     3,    44,     5,    -1,
443
 
       3,    19,     5,    -1,     6,    12,    13,    -1,    15,    12,
444
 
      13,     3,    19,     5,    -1,    -1,    19,    -1,    -1,    -1,
445
 
      12,    13,    14,    15,    16,    17,    18
 
428
       5,     4,    36,     3,     3,     5,     5,    18,     3,     0,
 
429
       5,    11,    12,    13,    14,    15,    16,    17,    13,    19,
 
430
      13,    26,     6,     7,    19,     4,     6,     7,     9,     8,
 
431
      18,    65,    25,    17,    12,    38,    41,    42,    43,    44,
 
432
       0,     3,    47,     5,     9,    10,     6,     7,     5,    11,
 
433
      12,    13,    14,    15,    16,    17,     3,    19,     5,    41,
 
434
      42,    43,    44,     5,    11,    12,    13,    14,    15,    16,
 
435
      17,     3,    19,     5,     9,    10,    14,    15,     5,    11,
 
436
      12,    10,    14,    15,    16,    17,     3,    19,     5,     5,
 
437
       3,    15,     5,    13,    11,    47,    13,    23,    24,    16,
 
438
      13,    16,    19,    16,     9,    10,    19,    -1,    54,    14,
 
439
      15
446
440
};
447
441
 
448
442
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
449
443
   symbol of state STATE-NUM.  */
450
444
static const unsigned char yystos[] =
451
445
{
452
 
       0,     3,     5,     6,     7,    12,    13,    15,    19,    21,
453
 
      22,    23,    26,    27,    28,    29,    30,    31,    32,    33,
454
 
      34,    15,    29,    29,    22,    34,     6,    31,    13,    14,
455
 
      15,    16,    17,    18,    19,    23,    24,    25,     0,    11,
456
 
       9,    10,     9,    10,    16,     4,     8,    33,    31,    11,
457
 
      14,    17,    18,    19,    24,    19,    23,    26,    26,    26,
458
 
      26,    30,    32,    32,     5,     5,    17,    18,    25,     5,
459
 
       5,    19
 
446
       0,     6,     7,    21,    22,    23,    24,    25,    26,     0,
 
447
      24,     3,     5,    11,    13,    16,    19,    27,    28,    29,
 
448
      30,    31,    32,     4,     8,    12,    23,    26,    11,    12,
 
449
      13,    14,    15,    16,    17,    28,    33,    34,    22,    29,
 
450
      18,     9,    10,     9,    10,    25,    25,    23,    14,    15,
 
451
      13,    34,    17,    18,    13,    28,    32,    32,    32,    32,
 
452
      27,     5,     5,    14,    15,    33,     5,     5,    13
460
453
};
461
454
 
462
455
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
1077
1070
 
1078
1071
  case 4:
1079
1072
 
1080
 
    { yyval.pNode = pParser->AddKeyword ( ( yyvsp[0].tInt.iStrIndex>=0 ) ? pParser->m_dIntTokens[yyvsp[0].tInt.iStrIndex].cstr() : NULL ); ;}
 
1073
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_AND, yyvsp[-1].pNode, yyvsp[0].pNode ); ;}
1081
1074
    break;
1082
1075
 
1083
1076
  case 6:
1084
1077
 
1085
 
    { yyval.pNode = yyvsp[-1].pNode; assert ( yyval.pNode->m_dWords.GetLength()==1 ); yyval.pNode->m_dWords[0].m_bFieldEnd = true; ;}
 
1078
    { pParser->SetFieldSpec ( yyvsp[0].tFieldLimit.dMask, yyvsp[0].tFieldLimit.iMaxPos ); ;}
1086
1079
    break;
1087
1080
 
1088
1081
  case 7:
1089
1082
 
1090
 
    { yyval.pNode = yyvsp[0].pNode; assert ( yyval.pNode->m_dWords.GetLength()==1 ); yyval.pNode->m_dWords[0].m_bFieldStart = true; ;}
 
1083
    { pParser->SetZoneVec ( yyvsp[0].iZoneVec ); ;}
1091
1084
    break;
1092
1085
 
1093
1086
  case 8:
1094
1087
 
1095
 
    { yyval.pNode = yyvsp[-1].pNode; assert ( yyval.pNode->m_dWords.GetLength()==1 ); yyval.pNode->m_dWords[0].m_bFieldStart = true; yyval.pNode->m_dWords[0].m_bFieldEnd = true; ;}
 
1088
    { yyval.pNode = yyvsp[0].pNode; ;}
1096
1089
    break;
1097
1090
 
1098
1091
  case 9:
1099
1092
 
1100
 
    { yyval.pNode = yyvsp[0].pNode; ;}
 
1093
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_BEFORE, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
1101
1094
    break;
1102
1095
 
1103
1096
  case 10:
1104
1097
 
1105
 
    { yyval.pNode = NULL; ;}
 
1098
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_NEAR, yyvsp[-2].pNode, yyvsp[0].pNode, yyvsp[-1].tInt.iValue ); ;}
1106
1099
    break;
1107
1100
 
1108
1101
  case 11:
1109
1102
 
1110
 
    { yyval.pNode = NULL; ;}
 
1103
    { yyval.pNode = yyvsp[0].pNode; ;}
1111
1104
    break;
1112
1105
 
1113
1106
  case 12:
1114
1107
 
1115
 
    { yyval.pNode = NULL; ;}
 
1108
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_NOT, yyvsp[0].pNode, NULL ); ;}
1116
1109
    break;
1117
1110
 
1118
1111
  case 13:
1119
1112
 
1120
 
    { yyval.pNode = NULL; ;}
 
1113
    { yyval.pNode = yyvsp[0].pNode; ;}
1121
1114
    break;
1122
1115
 
1123
1116
  case 14:
1124
1117
 
1125
 
    { yyval.pNode = NULL; ;}
 
1118
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_OR, yyvsp[-3].pNode, yyvsp[0].pNode ); ;}
1126
1119
    break;
1127
1120
 
1128
1121
  case 15:
1129
1122
 
1130
 
    { yyval.pNode = NULL; ;}
 
1123
    { yyval.pNode = yyvsp[0].pNode; ;}
1131
1124
    break;
1132
1125
 
1133
1126
  case 16:
1137
1130
 
1138
1131
  case 17:
1139
1132
 
1140
 
    { yyval.pNode = pParser->AddKeyword ( yyvsp[-1].pNode, yyvsp[0].pNode ); ;}
 
1133
    { yyval.pNode = yyvsp[0].pNode; ;}
1141
1134
    break;
1142
1135
 
1143
1136
  case 18:
1144
1137
 
1145
 
    { yyval.pNode = yyvsp[0].pNode; ;}
 
1138
    { yyval.pNode = NULL; ;}
1146
1139
    break;
1147
1140
 
1148
1141
  case 19:
1149
1142
 
1150
 
    { yyval.pNode = yyvsp[-1].pNode; if ( yyval.pNode ) { assert ( yyval.pNode->m_dWords.GetLength() ); yyval.pNode->SetOp ( SPH_QUERY_PHRASE); } ;}
 
1143
    { yyval.pNode = NULL; ;}
1151
1144
    break;
1152
1145
 
1153
1146
  case 20:
1154
1147
 
1155
 
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_SENTENCE, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
 
1148
    { yyval.pNode = NULL; ;}
1156
1149
    break;
1157
1150
 
1158
1151
  case 21:
1159
1152
 
1160
 
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_SENTENCE, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
 
1153
    { yyval.pNode = yyvsp[-1].pNode; if ( yyval.pNode ) { assert ( yyval.pNode->m_dWords.GetLength() ); yyval.pNode->SetOp ( SPH_QUERY_PHRASE); } ;}
1161
1154
    break;
1162
1155
 
1163
1156
  case 22:
1164
1157
 
1165
 
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_PARAGRAPH, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
 
1158
    { yyval.pNode = yyvsp[-3].pNode; if ( yyval.pNode ) { assert ( yyval.pNode->m_dWords.GetLength() ); yyval.pNode->SetOp ( SPH_QUERY_PROXIMITY ); yyval.pNode->m_iOpArg = yyvsp[0].tInt.iValue; } ;}
1166
1159
    break;
1167
1160
 
1168
1161
  case 23:
1169
1162
 
1170
 
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_PARAGRAPH, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
 
1163
    { yyval.pNode = yyvsp[-3].pNode; if ( yyval.pNode ) { assert ( yyval.pNode->m_dWords.GetLength() ); yyval.pNode->SetOp ( SPH_QUERY_QUORUM ); yyval.pNode->m_iOpArg = yyvsp[0].tInt.iValue; } ;}
1171
1164
    break;
1172
1165
 
1173
1166
  case 24:
1174
1167
 
1175
 
    { yyval.pNode = yyvsp[0].pNode; ;}
1176
 
    break;
1177
 
 
1178
 
  case 25:
1179
 
 
1180
 
    { yyval.pNode = yyvsp[0].pNode; ;}
 
1168
    { yyval.pNode = yyvsp[-1].pNode; if ( yyval.pNode ) yyval.pNode->m_dSpec.Hide(); pParser->m_dStateSpec.Reset(); ;}
1181
1169
    break;
1182
1170
 
1183
1171
  case 26:
1184
1172
 
1185
 
    { yyval.pNode = yyvsp[0].pNode; ;}
 
1173
    { yyval.pNode = yyvsp[-1].pNode; assert ( yyval.pNode->m_dWords.GetLength()==1 ); yyval.pNode->m_dWords[0].m_bFieldEnd = true; ;}
1186
1174
    break;
1187
1175
 
1188
1176
  case 27:
1189
1177
 
1190
 
    { yyval.pNode = NULL; ;}
 
1178
    { yyval.pNode = yyvsp[0].pNode; assert ( yyval.pNode->m_dWords.GetLength()==1 ); yyval.pNode->m_dWords[0].m_bFieldStart = true; ;}
1191
1179
    break;
1192
1180
 
1193
1181
  case 28:
1194
1182
 
1195
 
    { yyval.pNode = NULL; ;}
 
1183
    { yyval.pNode = yyvsp[-1].pNode; assert ( yyval.pNode->m_dWords.GetLength()==1 ); yyval.pNode->m_dWords[0].m_bFieldStart = true; yyval.pNode->m_dWords[0].m_bFieldEnd = true; ;}
1196
1184
    break;
1197
1185
 
1198
1186
  case 29:
1199
1187
 
1200
 
    { yyval.pNode = NULL; ;}
 
1188
    { yyval.pNode = yyvsp[0].pNode; ;}
1201
1189
    break;
1202
1190
 
1203
1191
  case 30:
1204
1192
 
1205
 
    { yyval.pNode = yyvsp[-1].pNode; if ( yyval.pNode ) { assert ( yyval.pNode->m_dWords.GetLength() ); yyval.pNode->SetOp ( SPH_QUERY_PHRASE); } ;}
 
1193
    { yyval.pNode = pParser->AddKeyword ( ( yyvsp[0].tInt.iStrIndex>=0 ) ? pParser->m_dIntTokens[yyvsp[0].tInt.iStrIndex].cstr() : NULL ); ;}
1206
1194
    break;
1207
1195
 
1208
1196
  case 31:
1209
1197
 
1210
 
    { yyval.pNode = yyvsp[-3].pNode; if ( yyval.pNode ) { assert ( yyval.pNode->m_dWords.GetLength() ); yyval.pNode->SetOp ( SPH_QUERY_PROXIMITY ); yyval.pNode->m_iOpArg = yyvsp[0].tInt.iValue; } ;}
 
1198
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_SENTENCE, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
1211
1199
    break;
1212
1200
 
1213
1201
  case 32:
1214
1202
 
1215
 
    { yyval.pNode = yyvsp[-3].pNode; if ( yyval.pNode ) { assert ( yyval.pNode->m_dWords.GetLength() ); yyval.pNode->SetOp ( SPH_QUERY_QUORUM ); yyval.pNode->m_iOpArg = yyvsp[0].tInt.iValue; } ;}
 
1203
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_SENTENCE, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
1216
1204
    break;
1217
1205
 
1218
1206
  case 33:
1219
1207
 
1220
 
    { yyval.pNode = yyvsp[-1].pNode; if ( yyval.pNode ) yyval.pNode->m_bFieldSpec = false; ;}
 
1208
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_PARAGRAPH, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
1221
1209
    break;
1222
1210
 
1223
1211
  case 34:
1224
1212
 
1225
 
    { yyval.pNode = yyvsp[0].pNode; ;}
 
1213
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_PARAGRAPH, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
1226
1214
    break;
1227
1215
 
1228
1216
  case 35:
1229
1217
 
1230
 
    { yyval.pNode = yyvsp[0].pNode; if ( yyval.pNode ) yyval.pNode->SetFieldSpec ( yyvsp[-1].tFieldLimit.dMask, yyvsp[-1].tFieldLimit.iMaxPos ); ;}
 
1218
    { yyval.pNode = yyvsp[0].pNode; ;}
1231
1219
    break;
1232
1220
 
1233
1221
  case 36:
1234
1222
 
1235
 
    { yyval.pNode = yyvsp[0].pNode; if ( yyval.pNode ) yyval.pNode->SetZoneSpec ( pParser->GetZoneVec ( yyvsp[-1].iZoneVec ) ); ;}
 
1223
    { yyval.pNode = yyvsp[-1].pNode; if ( yyval.pNode ) { assert ( yyval.pNode->m_dWords.GetLength() ); yyval.pNode->SetOp ( SPH_QUERY_PHRASE); } ;}
1236
1224
    break;
1237
1225
 
1238
1226
  case 37:
1242
1230
 
1243
1231
  case 38:
1244
1232
 
1245
 
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_OR, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
 
1233
    { yyval.pNode = pParser->AddKeyword ( yyvsp[-1].pNode, yyvsp[0].pNode ); ;}
1246
1234
    break;
1247
1235
 
1248
1236
  case 39:
1252
1240
 
1253
1241
  case 40:
1254
1242
 
1255
 
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_NOT, yyvsp[0].pNode, NULL ); ;}
 
1243
    { yyval.pNode = NULL; ;}
1256
1244
    break;
1257
1245
 
1258
1246
  case 41:
1259
1247
 
1260
 
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_NOT, yyvsp[0].pNode, NULL ); yyval.pNode->SetFieldSpec ( yyvsp[-2].tFieldLimit.dMask, yyvsp[-2].tFieldLimit.iMaxPos ); ;}
 
1248
    { yyval.pNode = NULL; ;}
 
1249
    break;
 
1250
 
 
1251
  case 42:
 
1252
 
 
1253
    { yyval.pNode = NULL; ;}
1261
1254
    break;
1262
1255
 
1263
1256
  case 43:
1264
1257
 
1265
 
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_BEFORE, yyvsp[-2].pNode, yyvsp[0].pNode ); ;}
 
1258
    { yyval.pNode = NULL; ;}
1266
1259
    break;
1267
1260
 
1268
1261
  case 44:
1269
1262
 
1270
 
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_NEAR, yyvsp[-2].pNode, yyvsp[0].pNode, yyvsp[-1].tInt.iValue ); ;}
 
1263
    { yyval.pNode = NULL; ;}
1271
1264
    break;
1272
1265
 
1273
1266
  case 45:
1274
1267
 
1275
 
    { yyval.pNode = yyvsp[0].pNode; ;}
1276
 
    break;
1277
 
 
1278
 
  case 46:
1279
 
 
1280
 
    { yyval.pNode = pParser->AddOp ( SPH_QUERY_AND, yyvsp[-1].pNode, yyvsp[0].pNode ); ;}
 
1268
    { yyval.pNode = NULL; ;}
1281
1269
    break;
1282
1270
 
1283
1271