Back to index

php5  5.3.10
Classes | Defines | Typedefs | Functions | Variables
parse.c File Reference
#include <stdio.h>
#include "sqliteInt.h"
#include "parse.h"

Go to the source code of this file.

Classes

struct  LimitVal
struct  TrigEvent
union  YYMINORTYPE
struct  yyStackEntry
struct  yyParser
struct  YYMINORTYPE.yy407

Defines

#define INTERFACE   1
#define YYCODETYPE   unsigned char
#define YYNOCODE   221
#define YYACTIONTYPE   unsigned short int
#define sqliteParserTOKENTYPE   Token
#define YYSTACKDEPTH   100
#define sqliteParserARG_SDECL   Parse *pParse;
#define sqliteParserARG_PDECL   ,Parse *pParse
#define sqliteParserARG_FETCH   Parse *pParse = yypParser->pParse
#define sqliteParserARG_STORE   yypParser->pParse = pParse
#define YYNSTATE   563
#define YYNRULE   293
#define YYFALLBACK   1
#define YY_NO_ACTION   (YYNSTATE+YYNRULE+2)
#define YY_ACCEPT_ACTION   (YYNSTATE+YYNRULE+1)
#define YY_ERROR_ACTION   (YYNSTATE+YYNRULE)
#define yytestcase(X)
#define YY_ACTTAB_COUNT   (1143)
#define YY_SHIFT_USE_DFLT   (-84)
#define YY_SHIFT_COUNT   (376)
#define YY_SHIFT_MIN   (-83)
#define YY_SHIFT_MAX   (964)
#define YY_REDUCE_USE_DFLT   (-69)
#define YY_REDUCE_COUNT   (281)
#define YY_REDUCE_MIN   (-68)
#define YY_REDUCE_MAX   (970)
#define TOKEN   (yyminor.yy0)

Typedefs

typedef struct yyStackEntry
typedef struct yyParser

Functions

void sqliteParserTrace (FILE *TraceFILE, char *zTracePrompt)
void * sqliteParserAlloc (void *(*mallocProc)(size_t))
static void yy_destructor (yyParser *yypParser, YYCODETYPE yymajor, YYMINORTYPE *yypminor)
static int yy_pop_parser_stack (yyParser *pParser)
void sqliteParserFree (void *p, void(*freeProc)(void *))
static int yy_find_shift_action (yyParser *pParser, YYCODETYPE iLookAhead)
static int yy_find_reduce_action (int stateno, YYCODETYPE iLookAhead)
static void yyStackOverflow (yyParser *yypParser, YYMINORTYPE *yypMinor)
static void yy_shift (yyParser *yypParser, int yyNewState, int yyMajor, YYMINORTYPE *yypMinor)
static void yy_accept (yyParser *)
static void yy_reduce (yyParser *yypParser, int yyruleno)
static void yy_parse_failed (yyParser *yypParser)
static void yy_syntax_error (yyParser *yypParser, int yymajor, YYMINORTYPE yyminor)
void sqliteParser (void *yyp, int yymajor, sqliteParserTOKENTYPE yyminorsqliteParserARG_PDECL)

Variables

static const YYMINORTYPE yyzerominor = { 0 }
static const YYACTIONTYPE yy_action []
static const YYCODETYPE yy_lookahead []
static const short yy_shift_ofst []
static const short yy_reduce_ofst []
static const YYACTIONTYPE yy_default []
static const YYCODETYPE yyFallback []
static FILE * yyTraceFILE = 0
static char * yyTracePrompt = 0
static const char *const yyTokenName []
static const char *const yyRuleName []
struct {
YYCODETYPE lhs
unsigned char nrhs
yyRuleInfo []

Class Documentation

struct LimitVal

Definition at line 16 of file parse.c.

Collaboration diagram for LimitVal:
Class Members
int limit
int offset
Expr * pLimit
Expr * pOffset
struct TrigEvent

Definition at line 30 of file parse.c.

Collaboration diagram for TrigEvent:
Class Members
int a
IdList * b
union YYMINORTYPE

Definition at line 86 of file parse.c.

Collaboration diagram for YYMINORTYPE:
Class Members
sqliteParserTOKENTYPE yy0
sqlite3ParserTOKENTYPE yy0
ExprSpan yy118
Select * yy179
Expr * yy182
TriggerStep * yy19
TriggerStep * yy203
u8 yy210
struct YYMINORTYPE yy215
Expr * yy242
SrcList * yy259
SrcList * yy307
Expr * yy314
IdList * yy320
ExprList * yy322
int yy372
IdList * yy384
Select * yy387
int yy4
struct YYMINORTYPE yy407
int yyinit
struct yyStackEntry

Definition at line 640 of file parse.c.

Collaboration diagram for yyStackEntry:
Class Members
YYCODETYPE major
YYMINORTYPE minor
YYACTIONTYPE stateno
struct yyParser

Definition at line 651 of file parse.c.

Collaboration diagram for yyParser:
Class Members
int yyerrcnt
int yyidx
sqliteParserARG_SDECL yyStackEntry yystack
sqlite3ParserARG_SDECL yyStackEntry yystack
struct YYMINORTYPE.yy407

Definition at line 99 of file parse.c.

Class Members
int mask
int value

Define Documentation

#define INTERFACE   1

Definition at line 46 of file parse.c.

#define sqliteParserARG_FETCH   Parse *pParse = yypParser->pParse

Definition at line 106 of file parse.c.

#define sqliteParserARG_PDECL   ,Parse *pParse

Definition at line 105 of file parse.c.

#define sqliteParserARG_SDECL   Parse *pParse;

Definition at line 104 of file parse.c.

#define sqliteParserARG_STORE   yypParser->pParse = pParse

Definition at line 107 of file parse.c.

Definition at line 85 of file parse.c.

#define TOKEN   (yyminor.yy0)
#define YY_ACCEPT_ACTION   (YYNSTATE+YYNRULE+1)

Definition at line 112 of file parse.c.

#define YY_ACTTAB_COUNT   (1143)

Definition at line 179 of file parse.c.

Definition at line 113 of file parse.c.

#define YY_NO_ACTION   (YYNSTATE+YYNRULE+2)

Definition at line 111 of file parse.c.

#define YY_REDUCE_COUNT   (281)

Definition at line 459 of file parse.c.

#define YY_REDUCE_MAX   (970)

Definition at line 461 of file parse.c.

#define YY_REDUCE_MIN   (-68)

Definition at line 460 of file parse.c.

#define YY_REDUCE_USE_DFLT   (-69)

Definition at line 458 of file parse.c.

#define YY_SHIFT_COUNT   (376)

Definition at line 415 of file parse.c.

#define YY_SHIFT_MAX   (964)

Definition at line 417 of file parse.c.

#define YY_SHIFT_MIN   (-83)

Definition at line 416 of file parse.c.

#define YY_SHIFT_USE_DFLT   (-84)

Definition at line 414 of file parse.c.

#define YYACTIONTYPE   unsigned short int

Definition at line 84 of file parse.c.

#define YYCODETYPE   unsigned char

Definition at line 82 of file parse.c.

#define YYFALLBACK   1

Definition at line 110 of file parse.c.

#define YYNOCODE   221

Definition at line 83 of file parse.c.

#define YYNRULE   293

Definition at line 109 of file parse.c.

#define YYNSTATE   563

Definition at line 108 of file parse.c.

#define YYSTACKDEPTH   100

Definition at line 102 of file parse.c.

#define yytestcase (   X)

Definition at line 128 of file parse.c.


Typedef Documentation

typedef struct yyParser

Definition at line 665 of file parse.c.

typedef struct yyStackEntry

Definition at line 647 of file parse.c.


Function Documentation

void sqliteParser ( void *  yyp,
int  yymajor,
sqliteParserTOKENTYPE yyminor  sqliteParserARG_PDECL 
)

Definition at line 3218 of file parse.c.

 {
  YYMINORTYPE yyminorunion;
  int yyact;            /* The parser action. */
  int yyendofinput;     /* True if we are at the end of input */
#ifdef YYERRORSYMBOL
  int yyerrorhit = 0;   /* True if yymajor has invoked an error */
#endif
  yyParser *yypParser;  /* The parser */

  /* (re)initialize the parser, if necessary */
  yypParser = (yyParser*)yyp;
  if( yypParser->yyidx<0 ){
#if YYSTACKDEPTH<=0
    if( yypParser->yystksz <=0 ){
      /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/
      yyminorunion = yyzerominor;
      yyStackOverflow(yypParser, &yyminorunion);
      return;
    }
#endif
    yypParser->yyidx = 0;
    yypParser->yyerrcnt = -1;
    yypParser->yystack[0].stateno = 0;
    yypParser->yystack[0].major = 0;
  }
  yyminorunion.yy0 = yyminor;
  yyendofinput = (yymajor==0);
  sqliteParserARG_STORE;

#ifndef NDEBUG
  if( yyTraceFILE ){
    fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
  }
#endif

  do{
    yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor);
    if( yyact<YYNSTATE ){
      assert( !yyendofinput );  /* Impossible to shift the $ token */
      yy_shift(yypParser,yyact,yymajor,&yyminorunion);
      yypParser->yyerrcnt--;
      yymajor = YYNOCODE;
    }else if( yyact < YYNSTATE + YYNRULE ){
      yy_reduce(yypParser,yyact-YYNSTATE);
    }else{
      assert( yyact == YY_ERROR_ACTION );
#ifdef YYERRORSYMBOL
      int yymx;
#endif
#ifndef NDEBUG
      if( yyTraceFILE ){
        fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
      }
#endif
#ifdef YYERRORSYMBOL
      /* A syntax error has occurred.
      ** The response to an error depends upon whether or not the
      ** grammar defines an error token "ERROR".  
      **
      ** This is what we do if the grammar does define ERROR:
      **
      **  * Call the %syntax_error function.
      **
      **  * Begin popping the stack until we enter a state where
      **    it is legal to shift the error symbol, then shift
      **    the error symbol.
      **
      **  * Set the error count to three.
      **
      **  * Begin accepting and shifting new tokens.  No new error
      **    processing will occur until three tokens have been
      **    shifted successfully.
      **
      */
      if( yypParser->yyerrcnt<0 ){
        yy_syntax_error(yypParser,yymajor,yyminorunion);
      }
      yymx = yypParser->yystack[yypParser->yyidx].major;
      if( yymx==YYERRORSYMBOL || yyerrorhit ){
#ifndef NDEBUG
        if( yyTraceFILE ){
          fprintf(yyTraceFILE,"%sDiscard input token %s\n",
             yyTracePrompt,yyTokenName[yymajor]);
        }
#endif
        yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion);
        yymajor = YYNOCODE;
      }else{
         while(
          yypParser->yyidx >= 0 &&
          yymx != YYERRORSYMBOL &&
          (yyact = yy_find_reduce_action(
                        yypParser->yystack[yypParser->yyidx].stateno,
                        YYERRORSYMBOL)) >= YYNSTATE
        ){
          yy_pop_parser_stack(yypParser);
        }
        if( yypParser->yyidx < 0 || yymajor==0 ){
          yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
          yy_parse_failed(yypParser);
          yymajor = YYNOCODE;
        }else if( yymx!=YYERRORSYMBOL ){
          YYMINORTYPE u2;
          u2.YYERRSYMDT = 0;
          yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
        }
      }
      yypParser->yyerrcnt = 3;
      yyerrorhit = 1;
#elif defined(YYNOERRORRECOVERY)
      /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to
      ** do any kind of error recovery.  Instead, simply invoke the syntax
      ** error routine and continue going as if nothing had happened.
      **
      ** Applications can set this macro (for example inside %include) if
      ** they intend to abandon the parse upon the first syntax error seen.
      */
      yy_syntax_error(yypParser,yymajor,yyminorunion);
      yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
      yymajor = YYNOCODE;
      
#else  /* YYERRORSYMBOL is not defined */
      /* This is what we do if the grammar does not define ERROR:
      **
      **  * Report an error message, and throw away the input token.
      **
      **  * If the input token is $, then fail the parse.
      **
      ** As before, subsequent error messages are suppressed until
      ** three input tokens have been successfully shifted.
      */
      if( yypParser->yyerrcnt<=0 ){
        yy_syntax_error(yypParser,yymajor,yyminorunion);
      }
      yypParser->yyerrcnt = 3;
      yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
      if( yyendofinput ){
        yy_parse_failed(yypParser);
      }
      yymajor = YYNOCODE;
#endif
    }
  }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
  return;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void* sqliteParserAlloc ( void *(*)(size_t mallocProc)

Definition at line 1097 of file parse.c.

                                                    {
  yyParser *pParser;
  pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
  if( pParser ){
    pParser->yyidx = -1;
#ifdef YYTRACKMAXSTACKDEPTH
    pParser->yyidxMax = 0;
#endif
#if YYSTACKDEPTH<=0
    pParser->yystack = NULL;
    pParser->yystksz = 0;
    yyGrowStack(pParser);
#endif
  }
  return pParser;
}

Here is the caller graph for this function:

void sqliteParserFree ( void *  p,
void(*)(void *)  freeProc 
)

Definition at line 1249 of file parse.c.

 {
  yyParser *pParser = (yyParser*)p;
  if( pParser==0 ) return;
  while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
#if YYSTACKDEPTH<=0
  free(pParser->yystack);
#endif
  (*freeProc)((void*)pParser);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void sqliteParserTrace ( FILE *  TraceFILE,
char *  zTracePrompt 
)

Definition at line 691 of file parse.c.

                                                           {
  yyTraceFILE = TraceFILE;
  yyTracePrompt = zTracePrompt;
  if( yyTraceFILE==0 ) yyTracePrompt = 0;
  else if( yyTracePrompt==0 ) yyTraceFILE = 0;
}

Here is the caller graph for this function:

static void yy_accept ( yyParser yypParser) [static]

Definition at line 3184 of file parse.c.

 {
  sqliteParserARG_FETCH;
#ifndef NDEBUG
  if( yyTraceFILE ){
    fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
  }
#endif
  while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
  /* Here code is inserted which will be executed whenever the
  ** parser accepts */
  sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void yy_destructor ( yyParser yypParser,
YYCODETYPE  yymajor,
YYMINORTYPE yypminor 
) [static]

Definition at line 1119 of file parse.c.

 {
  sqliteParserARG_FETCH;
  switch( yymajor ){
    /* Here is inserted the actions which take place when a
    ** terminal or non-terminal is destroyed.  This can happen
    ** when the symbol is popped from the stack during a
    ** reduce or during error processing or when a parser is 
    ** being destroyed before it is finished parsing.
    **
    ** Note: during a reduce, the only symbols destroyed are those
    ** which appear on the RHS of the rule, but which are not used
    ** inside the C code.
    */
    case 146: /* select */
    case 171: /* oneselect */
    case 189: /* seltablist_paren */
{
#line 286 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
sqliteSelectDelete((yypminor->yy179));
#line 1143 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
}
      break;
    case 158: /* expr */
    case 176: /* where_opt */
    case 178: /* having_opt */
    case 187: /* on_opt */
    case 192: /* sortitem */
    case 204: /* expritem */
{
#line 533 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
sqliteExprDelete((yypminor->yy242));
#line 1155 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
}
      break;
    case 159: /* idxlist_opt */
    case 167: /* idxlist */
    case 188: /* using_opt */
    case 197: /* inscollist_opt */
    case 199: /* inscollist */
{
#line 746 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
sqliteIdListDelete((yypminor->yy320));
#line 1166 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
}
      break;
    case 174: /* selcollist */
    case 177: /* groupby_opt */
    case 179: /* orderby_opt */
    case 181: /* sclp */
    case 191: /* sortlist */
    case 194: /* exprlist */
    case 195: /* setlist */
    case 198: /* itemlist */
    case 202: /* case_exprlist */
{
#line 322 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
sqliteExprListDelete((yypminor->yy322));
#line 1181 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
}
      break;
    case 175: /* from */
    case 183: /* seltablist */
    case 184: /* stl_prefix */
{
#line 353 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
sqliteSrcListDelete((yypminor->yy307));
#line 1190 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
}
      break;
    case 212: /* trigger_cmd_list */
    case 217: /* trigger_cmd */
{
#line 828 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
sqliteDeleteTriggerStep((yypminor->yy19));
#line 1198 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
}
      break;
    case 214: /* trigger_event */
{
#line 812 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
sqliteIdListDelete((yypminor->yy290).b);
#line 1205 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
}
      break;
    default:  break;   /* If no destructor action specified: do nothing */
  }
}

Here is the call graph for this function:

Here is the caller graph for this function:

static int yy_find_reduce_action ( int  stateno,
YYCODETYPE  iLookAhead 
) [static]

Definition at line 1345 of file parse.c.

 {
  int i;
#ifdef YYERRORSYMBOL
  if( stateno>YY_REDUCE_COUNT ){
    return yy_default[stateno];
  }
#else
  assert( stateno<=YY_REDUCE_COUNT );
#endif
  i = yy_reduce_ofst[stateno];
  assert( i!=YY_REDUCE_USE_DFLT );
  assert( iLookAhead!=YYNOCODE );
  i += iLookAhead;
#ifdef YYERRORSYMBOL
  if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
    return yy_default[stateno];
  }
#else
  assert( i>=0 && i<YY_ACTTAB_COUNT );
  assert( yy_lookahead[i]==iLookAhead );
#endif
  return yy_action[i];
}

Here is the caller graph for this function:

static int yy_find_shift_action ( yyParser pParser,
YYCODETYPE  iLookAhead 
) [static]

Definition at line 1280 of file parse.c.

 {
  int i;
  int stateno = pParser->yystack[pParser->yyidx].stateno;
 
  if( stateno>YY_SHIFT_COUNT
   || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
    return yy_default[stateno];
  }
  assert( iLookAhead!=YYNOCODE );
  i += iLookAhead;
  if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
    if( iLookAhead>0 ){
#ifdef YYFALLBACK
      YYCODETYPE iFallback;            /* Fallback token */
      if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
             && (iFallback = yyFallback[iLookAhead])!=0 ){
#ifndef NDEBUG
        if( yyTraceFILE ){
          fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
             yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
        }
#endif
        return yy_find_shift_action(pParser, iFallback);
      }
#endif
#ifdef YYWILDCARD
      {
        int j = i - iLookAhead + YYWILDCARD;
        if( 
#if YY_SHIFT_MIN+YYWILDCARD<0
          j>=0 &&
#endif
#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
          j<YY_ACTTAB_COUNT &&
#endif
          yy_lookahead[j]==YYWILDCARD
        ){
#ifndef NDEBUG
          if( yyTraceFILE ){
            fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
               yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]);
          }
#endif /* NDEBUG */
          return yy_action[j];
        }
      }
#endif /* YYWILDCARD */
    }
    return yy_default[stateno];
  }else{
    return yy_action[i];
  }
}

Here is the caller graph for this function:

static void yy_parse_failed ( yyParser yypParser) [static]

Definition at line 3142 of file parse.c.

 {
  sqliteParserARG_FETCH;
#ifndef NDEBUG
  if( yyTraceFILE ){
    fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
  }
#endif
  while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
  /* Here code is inserted which will be executed whenever the
  ** parser fails */
  sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
}

Here is the call graph for this function:

Here is the caller graph for this function:

static int yy_pop_parser_stack ( yyParser pParser) [static]

Definition at line 1219 of file parse.c.

                                                 {
  YYCODETYPE yymajor;
  yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];

  if( pParser->yyidx<0 ) return 0;
#ifndef NDEBUG
  if( yyTraceFILE && pParser->yyidx>=0 ){
    fprintf(yyTraceFILE,"%sPopping %s\n",
      yyTracePrompt,
      yyTokenName[yytos->major]);
  }
#endif
  yymajor = yytos->major;
  yy_destructor(pParser, yymajor, &yytos->minor);
  pParser->yyidx--;
  return yymajor;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void yy_reduce ( yyParser yypParser,
int  yyruleno 
) [static]

Definition at line 1743 of file parse.c.

 {
  int yygoto;                     /* The next state */
  int yyact;                      /* The next action */
  YYMINORTYPE yygotominor;        /* The LHS of the rule reduced */
  yyStackEntry *yymsp;            /* The top of the parser's stack */
  int yysize;                     /* Amount to pop the stack */
  sqliteParserARG_FETCH;
  yymsp = &yypParser->yystack[yypParser->yyidx];
#ifndef NDEBUG
  if( yyTraceFILE && yyruleno>=0 
        && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
    fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
      yyRuleName[yyruleno]);
  }
#endif /* NDEBUG */

  /* Silence complaints from purify about yygotominor being uninitialized
  ** in some cases when it is copied into the stack after the following
  ** switch.  yygotominor is uninitialized when a rule reduces that does
  ** not set the value of its left-hand side nonterminal.  Leaving the
  ** value of the nonterminal uninitialized is utterly harmless as long
  ** as the value is never used.  So really the only thing this code
  ** accomplishes is to quieten purify.  
  **
  ** 2007-01-16:  The wireshark project (www.wireshark.org) reports that
  ** without this code, their parser segfaults.  I'm not sure what there
  ** parser is doing to make this happen.  This is the second bug report
  ** from wireshark this week.  Clearly they are stressing Lemon in ways
  ** that it has not been previously stressed...  (SQLite ticket #2172)
  */
  /*memset(&yygotominor, 0, sizeof(yygotominor));*/
  yygotominor = yyzerominor;


  switch( yyruleno ){
  /* Beginning here are the reduction cases.  A typical example
  ** follows:
  **   case 0:
  **  #line <lineno> <grammarfile>
  **     { ... }           // User supplied code
  **  #line <lineno> <thisfile>
  **     break;
  */
      case 5: /* cmdx ::= cmd */
#line 72 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ sqliteExec(pParse); }
#line 1793 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 6: /* explain ::= EXPLAIN */
#line 73 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ sqliteBeginParse(pParse, 1); }
#line 1798 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 7: /* explain ::= */
#line 74 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ sqliteBeginParse(pParse, 0); }
#line 1803 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 8: /* cmd ::= BEGIN trans_opt onconf */
#line 79 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteBeginTransaction(pParse,yymsp[0].minor.yy372);}
#line 1808 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 12: /* cmd ::= COMMIT trans_opt */
      case 13: /* cmd ::= END trans_opt */ yytestcase(yyruleno==13);
#line 83 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteCommitTransaction(pParse);}
#line 1814 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 14: /* cmd ::= ROLLBACK trans_opt */
#line 85 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteRollbackTransaction(pParse);}
#line 1819 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 16: /* create_table ::= CREATE temp TABLE nm */
#line 90 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
   sqliteStartTable(pParse,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0,yymsp[-2].minor.yy372,0);
}
#line 1826 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 17: /* temp ::= TEMP */
      case 74: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ yytestcase(yyruleno==74);
      case 108: /* distinct ::= DISTINCT */ yytestcase(yyruleno==108);
#line 94 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = 1;}
#line 1833 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 18: /* temp ::= */
      case 73: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==73);
      case 75: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ yytestcase(yyruleno==75);
      case 86: /* defer_subclause_opt ::= */ yytestcase(yyruleno==86);
      case 109: /* distinct ::= ALL */ yytestcase(yyruleno==109);
      case 110: /* distinct ::= */ yytestcase(yyruleno==110);
#line 95 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = 0;}
#line 1843 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 19: /* create_table_args ::= LP columnlist conslist_opt RP */
#line 96 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  sqliteEndTable(pParse,&yymsp[0].minor.yy0,0);
}
#line 1850 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 20: /* create_table_args ::= AS select */
#line 99 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  sqliteEndTable(pParse,0,yymsp[0].minor.yy179);
  sqliteSelectDelete(yymsp[0].minor.yy179);
}
#line 1858 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 24: /* columnid ::= nm */
#line 111 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddColumn(pParse,&yymsp[0].minor.yy0);}
#line 1863 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 25: /* id ::= ID */
      case 26: /* ids ::= ID */ yytestcase(yyruleno==26);
      case 27: /* ids ::= STRING */ yytestcase(yyruleno==27);
      case 28: /* nm ::= ID */ yytestcase(yyruleno==28);
      case 29: /* nm ::= STRING */ yytestcase(yyruleno==29);
      case 30: /* nm ::= JOIN_KW */ yytestcase(yyruleno==30);
      case 35: /* typename ::= ids */ yytestcase(yyruleno==35);
      case 128: /* dbnm ::= DOT nm */ yytestcase(yyruleno==128);
      case 254: /* plus_num ::= plus_opt number */ yytestcase(yyruleno==254);
      case 255: /* minus_num ::= MINUS number */ yytestcase(yyruleno==255);
      case 256: /* number ::= INTEGER */ yytestcase(yyruleno==256);
      case 257: /* number ::= FLOAT */ yytestcase(yyruleno==257);
#line 117 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy0 = yymsp[0].minor.yy0;}
#line 1879 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 32: /* type ::= typename */
#line 160 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddColumnType(pParse,&yymsp[0].minor.yy0,&yymsp[0].minor.yy0);}
#line 1884 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 33: /* type ::= typename LP signed RP */
#line 161 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddColumnType(pParse,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);}
#line 1889 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 34: /* type ::= typename LP signed COMMA signed RP */
#line 163 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddColumnType(pParse,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0);}
#line 1894 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 36: /* typename ::= typename ids */
      case 242: /* idxitem ::= nm sortorder */ yytestcase(yyruleno==242);
#line 166 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy0 = yymsp[-1].minor.yy0;}
#line 1900 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 37: /* signed ::= INTEGER */
      case 38: /* signed ::= PLUS INTEGER */ yytestcase(yyruleno==38);
#line 168 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = atoi(yymsp[0].minor.yy0.z); }
#line 1906 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 39: /* signed ::= MINUS INTEGER */
#line 170 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = -atoi(yymsp[0].minor.yy0.z); }
#line 1911 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 44: /* carg ::= DEFAULT STRING */
      case 45: /* carg ::= DEFAULT ID */ yytestcase(yyruleno==45);
      case 46: /* carg ::= DEFAULT INTEGER */ yytestcase(yyruleno==46);
      case 47: /* carg ::= DEFAULT PLUS INTEGER */ yytestcase(yyruleno==47);
      case 49: /* carg ::= DEFAULT FLOAT */ yytestcase(yyruleno==49);
      case 50: /* carg ::= DEFAULT PLUS FLOAT */ yytestcase(yyruleno==50);
#line 175 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
#line 1921 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 48: /* carg ::= DEFAULT MINUS INTEGER */
      case 51: /* carg ::= DEFAULT MINUS FLOAT */ yytestcase(yyruleno==51);
#line 179 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,1);}
#line 1927 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 54: /* ccons ::= NOT NULL onconf */
#line 189 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddNotNull(pParse, yymsp[0].minor.yy372);}
#line 1932 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 55: /* ccons ::= PRIMARY KEY sortorder onconf */
#line 190 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddPrimaryKey(pParse,0,yymsp[0].minor.yy372);}
#line 1937 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 56: /* ccons ::= UNIQUE onconf */
#line 191 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteCreateIndex(pParse,0,0,0,yymsp[0].minor.yy372,0,0);}
#line 1942 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 57: /* ccons ::= CHECK LP expr RP onconf */
#line 192 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yy_destructor(yypParser,158,&yymsp[-2].minor);
}
#line 1949 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 58: /* ccons ::= REFERENCES nm idxlist_opt refargs */
#line 194 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteCreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy320,yymsp[0].minor.yy372);}
#line 1954 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 59: /* ccons ::= defer_subclause */
#line 195 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteDeferForeignKey(pParse,yymsp[0].minor.yy372);}
#line 1959 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 60: /* ccons ::= COLLATE id */
#line 196 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
   sqliteAddCollateType(pParse, sqliteCollateType(yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n));
}
#line 1966 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 61: /* refargs ::= */
#line 206 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Restrict * 0x010101; }
#line 1971 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 62: /* refargs ::= refargs refarg */
#line 207 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = (yymsp[-1].minor.yy372 & yymsp[0].minor.yy407.mask) | yymsp[0].minor.yy407.value; }
#line 1976 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 63: /* refarg ::= MATCH nm */
#line 209 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy407.value = 0;     yygotominor.yy407.mask = 0x000000; }
#line 1981 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 64: /* refarg ::= ON DELETE refact */
#line 210 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy407.value = yymsp[0].minor.yy372;     yygotominor.yy407.mask = 0x0000ff; }
#line 1986 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 65: /* refarg ::= ON UPDATE refact */
#line 211 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy407.value = yymsp[0].minor.yy372<<8;  yygotominor.yy407.mask = 0x00ff00; }
#line 1991 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 66: /* refarg ::= ON INSERT refact */
#line 212 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy407.value = yymsp[0].minor.yy372<<16; yygotominor.yy407.mask = 0xff0000; }
#line 1996 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 67: /* refact ::= SET NULL */
#line 214 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_SetNull; }
#line 2001 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 68: /* refact ::= SET DEFAULT */
#line 215 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_SetDflt; }
#line 2006 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 69: /* refact ::= CASCADE */
#line 216 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Cascade; }
#line 2011 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 70: /* refact ::= RESTRICT */
#line 217 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Restrict; }
#line 2016 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 71: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
      case 72: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ yytestcase(yyruleno==72);
      case 87: /* defer_subclause_opt ::= defer_subclause */ yytestcase(yyruleno==87);
      case 164: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==164);
#line 219 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = yymsp[0].minor.yy372;}
#line 2024 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 82: /* tcons ::= PRIMARY KEY LP idxlist RP onconf */
#line 236 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteAddPrimaryKey(pParse,yymsp[-2].minor.yy320,yymsp[0].minor.yy372);}
#line 2029 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 83: /* tcons ::= UNIQUE LP idxlist RP onconf */
#line 238 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteCreateIndex(pParse,0,0,yymsp[-2].minor.yy320,yymsp[0].minor.yy372,0,0);}
#line 2034 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 84: /* tcons ::= CHECK expr onconf */
#line 239 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yy_destructor(yypParser,158,&yymsp[-1].minor);
}
#line 2041 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 85: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt */
#line 241 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
    sqliteCreateForeignKey(pParse, yymsp[-6].minor.yy320, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy320, yymsp[-1].minor.yy372);
    sqliteDeferForeignKey(pParse, yymsp[0].minor.yy372);
}
#line 2049 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 88: /* onconf ::= */
      case 90: /* orconf ::= */ yytestcase(yyruleno==90);
#line 255 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Default; }
#line 2055 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 89: /* onconf ::= ON CONFLICT resolvetype */
      case 91: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==91);
#line 256 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = yymsp[0].minor.yy372; }
#line 2061 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 92: /* resolvetype ::= ROLLBACK */
#line 259 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Rollback; }
#line 2066 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 93: /* resolvetype ::= ABORT */
      case 236: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==236);
#line 260 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Abort; }
#line 2072 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 94: /* resolvetype ::= FAIL */
#line 261 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Fail; }
#line 2077 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 95: /* resolvetype ::= IGNORE */
#line 262 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Ignore; }
#line 2082 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 96: /* resolvetype ::= REPLACE */
#line 263 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_Replace; }
#line 2087 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 97: /* cmd ::= DROP TABLE nm */
#line 267 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteDropTable(pParse,&yymsp[0].minor.yy0,0);}
#line 2092 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 98: /* cmd ::= CREATE temp VIEW nm AS select */
#line 271 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  sqliteCreateView(pParse, &yymsp[-5].minor.yy0, &yymsp[-2].minor.yy0, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);
}
#line 2099 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 99: /* cmd ::= DROP VIEW nm */
#line 274 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  sqliteDropTable(pParse, &yymsp[0].minor.yy0, 1);
}
#line 2106 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 100: /* cmd ::= select */
#line 280 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  sqliteSelect(pParse, yymsp[0].minor.yy179, SRT_Callback, 0, 0, 0, 0);
  sqliteSelectDelete(yymsp[0].minor.yy179);
}
#line 2114 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 101: /* select ::= oneselect */
      case 125: /* seltablist_paren ::= select */ yytestcase(yyruleno==125);
#line 290 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy179 = yymsp[0].minor.yy179;}
#line 2120 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 102: /* select ::= select multiselect_op oneselect */
#line 291 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  if( yymsp[0].minor.yy179 ){
    yymsp[0].minor.yy179->op = yymsp[-1].minor.yy372;
    yymsp[0].minor.yy179->pPrior = yymsp[-2].minor.yy179;
  }
  yygotominor.yy179 = yymsp[0].minor.yy179;
}
#line 2131 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 103: /* multiselect_op ::= UNION */
#line 299 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_UNION;}
#line 2136 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 104: /* multiselect_op ::= UNION ALL */
#line 300 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_ALL;}
#line 2141 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 105: /* multiselect_op ::= INTERSECT */
#line 301 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_INTERSECT;}
#line 2146 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 106: /* multiselect_op ::= EXCEPT */
#line 302 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_EXCEPT;}
#line 2151 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 107: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
#line 304 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy179 = sqliteSelectNew(yymsp[-6].minor.yy322,yymsp[-5].minor.yy307,yymsp[-4].minor.yy242,yymsp[-3].minor.yy322,yymsp[-2].minor.yy242,yymsp[-1].minor.yy322,yymsp[-7].minor.yy372,yymsp[0].minor.yy124.limit,yymsp[0].minor.yy124.offset);
}
#line 2158 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 111: /* sclp ::= selcollist COMMA */
#line 325 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = yymsp[-1].minor.yy322;}
#line 2163 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 112: /* sclp ::= */
      case 138: /* orderby_opt ::= */ yytestcase(yyruleno==138);
      case 148: /* groupby_opt ::= */ yytestcase(yyruleno==148);
#line 326 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = 0;}
#line 2170 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 113: /* selcollist ::= sclp expr as */
#line 327 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
   yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[-1].minor.yy242,yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
}
#line 2177 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 114: /* selcollist ::= sclp STAR */
#line 330 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy322 = sqliteExprListAppend(yymsp[-1].minor.yy322, sqliteExpr(TK_ALL, 0, 0, 0), 0);
}
#line 2184 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 115: /* selcollist ::= sclp nm DOT STAR */
#line 333 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  Expr *pRight = sqliteExpr(TK_ALL, 0, 0, 0);
  Expr *pLeft = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy0);
  yygotominor.yy322 = sqliteExprListAppend(yymsp[-3].minor.yy322, sqliteExpr(TK_DOT, pLeft, pRight, 0), 0);
}
#line 2193 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 116: /* as ::= AS nm */
      case 117: /* as ::= ids */ yytestcase(yyruleno==117);
      case 288: /* key_opt ::= USING ids */ yytestcase(yyruleno==288);
#line 343 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy0 = yymsp[0].minor.yy0; }
#line 2200 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 118: /* as ::= */
#line 345 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy0.n = 0; }
#line 2205 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 119: /* from ::= */
#line 357 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy307 = sqliteMalloc(sizeof(*yygotominor.yy307));}
#line 2210 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 120: /* from ::= FROM seltablist */
#line 358 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy307 = yymsp[0].minor.yy307;}
#line 2215 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 121: /* stl_prefix ::= seltablist joinop */
#line 363 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
   yygotominor.yy307 = yymsp[-1].minor.yy307;
   if( yygotominor.yy307 && yygotominor.yy307->nSrc>0 ) yygotominor.yy307->a[yygotominor.yy307->nSrc-1].jointype = yymsp[0].minor.yy372;
}
#line 2223 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 122: /* stl_prefix ::= */
#line 367 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy307 = 0;}
#line 2228 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 123: /* seltablist ::= stl_prefix nm dbnm as on_opt using_opt */
#line 368 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy307 = sqliteSrcListAppend(yymsp[-5].minor.yy307,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0);
  if( yymsp[-2].minor.yy0.n ) sqliteSrcListAddAlias(yygotominor.yy307,&yymsp[-2].minor.yy0);
  if( yymsp[-1].minor.yy242 ){
    if( yygotominor.yy307 && yygotominor.yy307->nSrc>1 ){ yygotominor.yy307->a[yygotominor.yy307->nSrc-2].pOn = yymsp[-1].minor.yy242; }
    else { sqliteExprDelete(yymsp[-1].minor.yy242); }
  }
  if( yymsp[0].minor.yy320 ){
    if( yygotominor.yy307 && yygotominor.yy307->nSrc>1 ){ yygotominor.yy307->a[yygotominor.yy307->nSrc-2].pUsing = yymsp[0].minor.yy320; }
    else { sqliteIdListDelete(yymsp[0].minor.yy320); }
  }
}
#line 2244 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 124: /* seltablist ::= stl_prefix LP seltablist_paren RP as on_opt using_opt */
#line 381 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy307 = sqliteSrcListAppend(yymsp[-6].minor.yy307,0,0);
  yygotominor.yy307->a[yygotominor.yy307->nSrc-1].pSelect = yymsp[-4].minor.yy179;
  if( yymsp[-2].minor.yy0.n ) sqliteSrcListAddAlias(yygotominor.yy307,&yymsp[-2].minor.yy0);
  if( yymsp[-1].minor.yy242 ){
    if( yygotominor.yy307 && yygotominor.yy307->nSrc>1 ){ yygotominor.yy307->a[yygotominor.yy307->nSrc-2].pOn = yymsp[-1].minor.yy242; }
    else { sqliteExprDelete(yymsp[-1].minor.yy242); }
  }
  if( yymsp[0].minor.yy320 ){
    if( yygotominor.yy307 && yygotominor.yy307->nSrc>1 ){ yygotominor.yy307->a[yygotominor.yy307->nSrc-2].pUsing = yymsp[0].minor.yy320; }
    else { sqliteIdListDelete(yymsp[0].minor.yy320); }
  }
}
#line 2261 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 126: /* seltablist_paren ::= seltablist */
#line 402 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
   yygotominor.yy179 = sqliteSelectNew(0,yymsp[0].minor.yy307,0,0,0,0,0,-1,0);
}
#line 2268 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 127: /* dbnm ::= */
#line 407 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy0.z=0; yygotominor.yy0.n=0;}
#line 2273 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 129: /* joinop ::= COMMA */
      case 130: /* joinop ::= JOIN */ yytestcase(yyruleno==130);
#line 412 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = JT_INNER; }
#line 2279 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 131: /* joinop ::= JOIN_KW JOIN */
#line 414 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-1].minor.yy0,0,0); }
#line 2284 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 132: /* joinop ::= JOIN_KW nm JOIN */
#line 415 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); }
#line 2289 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 133: /* joinop ::= JOIN_KW nm nm JOIN */
#line 417 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0); }
#line 2294 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 134: /* on_opt ::= ON expr */
      case 142: /* sortitem ::= expr */ yytestcase(yyruleno==142);
      case 151: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==151);
      case 158: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==158);
      case 227: /* case_else ::= ELSE expr */ yytestcase(yyruleno==227);
      case 229: /* case_operand ::= expr */ yytestcase(yyruleno==229);
      case 233: /* expritem ::= expr */ yytestcase(yyruleno==233);
#line 421 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = yymsp[0].minor.yy242;}
#line 2305 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 135: /* on_opt ::= */
      case 150: /* having_opt ::= */ yytestcase(yyruleno==150);
      case 157: /* where_opt ::= */ yytestcase(yyruleno==157);
      case 228: /* case_else ::= */ yytestcase(yyruleno==228);
      case 230: /* case_operand ::= */ yytestcase(yyruleno==230);
      case 234: /* expritem ::= */ yytestcase(yyruleno==234);
#line 422 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = 0;}
#line 2315 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 136: /* using_opt ::= USING LP idxlist RP */
      case 169: /* inscollist_opt ::= LP inscollist RP */ yytestcase(yyruleno==169);
      case 239: /* idxlist_opt ::= LP idxlist RP */ yytestcase(yyruleno==239);
#line 426 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy320 = yymsp[-1].minor.yy320;}
#line 2322 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 137: /* using_opt ::= */
      case 168: /* inscollist_opt ::= */ yytestcase(yyruleno==168);
      case 238: /* idxlist_opt ::= */ yytestcase(yyruleno==238);
#line 427 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy320 = 0;}
#line 2329 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 139: /* orderby_opt ::= ORDER BY sortlist */
      case 149: /* groupby_opt ::= GROUP BY exprlist */ yytestcase(yyruleno==149);
#line 438 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = yymsp[0].minor.yy322;}
#line 2335 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 140: /* sortlist ::= sortlist COMMA sortitem collate sortorder */
#line 439 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[-2].minor.yy242,0);
  if( yygotominor.yy322 ) yygotominor.yy322->a[yygotominor.yy322->nExpr-1].sortOrder = yymsp[-1].minor.yy372+yymsp[0].minor.yy372;
}
#line 2343 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 141: /* sortlist ::= sortitem collate sortorder */
#line 443 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy322 = sqliteExprListAppend(0,yymsp[-2].minor.yy242,0);
  if( yygotominor.yy322 ) yygotominor.yy322->a[0].sortOrder = yymsp[-1].minor.yy372+yymsp[0].minor.yy372;
}
#line 2351 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 143: /* sortorder ::= ASC */
      case 145: /* sortorder ::= */ yytestcase(yyruleno==145);
#line 452 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = SQLITE_SO_ASC;}
#line 2357 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 144: /* sortorder ::= DESC */
#line 453 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = SQLITE_SO_DESC;}
#line 2362 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 146: /* collate ::= */
#line 455 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = SQLITE_SO_UNK;}
#line 2367 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 147: /* collate ::= COLLATE id */
#line 456 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = sqliteCollateType(yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);}
#line 2372 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 152: /* limit_opt ::= */
#line 469 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy124.limit = -1; yygotominor.yy124.offset = 0;}
#line 2377 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 153: /* limit_opt ::= LIMIT signed */
#line 470 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy124.limit = yymsp[0].minor.yy372; yygotominor.yy124.offset = 0;}
#line 2382 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 154: /* limit_opt ::= LIMIT signed OFFSET signed */
#line 472 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy124.limit = yymsp[-2].minor.yy372; yygotominor.yy124.offset = yymsp[0].minor.yy372;}
#line 2387 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 155: /* limit_opt ::= LIMIT signed COMMA signed */
#line 474 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy124.limit = yymsp[0].minor.yy372; yygotominor.yy124.offset = yymsp[-2].minor.yy372;}
#line 2392 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 156: /* cmd ::= DELETE FROM nm dbnm where_opt */
#line 478 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
   sqliteDeleteFrom(pParse, sqliteSrcListAppend(0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0), yymsp[0].minor.yy242);
}
#line 2399 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 159: /* cmd ::= UPDATE orconf nm dbnm SET setlist where_opt */
#line 494 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteUpdate(pParse,sqliteSrcListAppend(0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0),yymsp[-1].minor.yy322,yymsp[0].minor.yy242,yymsp[-5].minor.yy372);}
#line 2404 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 160: /* setlist ::= setlist COMMA nm EQ expr */
#line 497 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[0].minor.yy242,&yymsp[-2].minor.yy0);}
#line 2409 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 161: /* setlist ::= nm EQ expr */
#line 498 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,&yymsp[-2].minor.yy0);}
#line 2414 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 162: /* cmd ::= insert_cmd INTO nm dbnm inscollist_opt VALUES LP itemlist RP */
#line 504 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-6].minor.yy0,&yymsp[-5].minor.yy0), yymsp[-1].minor.yy322, 0, yymsp[-4].minor.yy320, yymsp[-8].minor.yy372);}
#line 2419 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 163: /* cmd ::= insert_cmd INTO nm dbnm inscollist_opt select */
#line 506 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0), 0, yymsp[0].minor.yy179, yymsp[-1].minor.yy320, yymsp[-5].minor.yy372);}
#line 2424 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 165: /* insert_cmd ::= REPLACE */
#line 510 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = OE_Replace;}
#line 2429 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 166: /* itemlist ::= itemlist COMMA expr */
      case 231: /* exprlist ::= exprlist COMMA expritem */ yytestcase(yyruleno==231);
#line 516 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[0].minor.yy242,0);}
#line 2435 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 167: /* itemlist ::= expr */
      case 232: /* exprlist ::= expritem */ yytestcase(yyruleno==232);
#line 517 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,0);}
#line 2441 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 170: /* inscollist ::= inscollist COMMA nm */
      case 240: /* idxlist ::= idxlist COMMA idxitem */ yytestcase(yyruleno==240);
#line 526 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy320 = sqliteIdListAppend(yymsp[-2].minor.yy320,&yymsp[0].minor.yy0);}
#line 2447 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 171: /* inscollist ::= nm */
      case 241: /* idxlist ::= idxitem */ yytestcase(yyruleno==241);
#line 527 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy320 = sqliteIdListAppend(0,&yymsp[0].minor.yy0);}
#line 2453 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 172: /* expr ::= LP expr RP */
#line 535 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = yymsp[-1].minor.yy242; sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); }
#line 2458 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 173: /* expr ::= NULL */
#line 536 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_NULL, 0, 0, &yymsp[0].minor.yy0);}
#line 2463 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 174: /* expr ::= ID */
      case 175: /* expr ::= JOIN_KW */ yytestcase(yyruleno==175);
#line 537 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);}
#line 2469 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 176: /* expr ::= nm DOT nm */
#line 539 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy0);
  Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);
  yygotominor.yy242 = sqliteExpr(TK_DOT, temp1, temp2, 0);
}
#line 2478 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 177: /* expr ::= nm DOT nm DOT nm */
#line 544 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-4].minor.yy0);
  Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy0);
  Expr *temp3 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);
  Expr *temp4 = sqliteExpr(TK_DOT, temp2, temp3, 0);
  yygotominor.yy242 = sqliteExpr(TK_DOT, temp1, temp4, 0);
}
#line 2489 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 178: /* expr ::= INTEGER */
#line 551 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_INTEGER, 0, 0, &yymsp[0].minor.yy0);}
#line 2494 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 179: /* expr ::= FLOAT */
#line 552 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_FLOAT, 0, 0, &yymsp[0].minor.yy0);}
#line 2499 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 180: /* expr ::= STRING */
#line 553 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_STRING, 0, 0, &yymsp[0].minor.yy0);}
#line 2504 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 181: /* expr ::= VARIABLE */
#line 554 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_VARIABLE, 0, 0, &yymsp[0].minor.yy0);
  if( yygotominor.yy242 ) yygotominor.yy242->iTable = ++pParse->nVar;
}
#line 2512 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 182: /* expr ::= ID LP exprlist RP */
#line 558 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExprFunction(yymsp[-1].minor.yy322, &yymsp[-3].minor.yy0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
}
#line 2520 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 183: /* expr ::= ID LP STAR RP */
#line 562 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExprFunction(0, &yymsp[-3].minor.yy0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
}
#line 2528 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 184: /* expr ::= expr AND expr */
#line 566 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_AND, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2533 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 185: /* expr ::= expr OR expr */
#line 567 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_OR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2538 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 186: /* expr ::= expr LT expr */
#line 568 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_LT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2543 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 187: /* expr ::= expr GT expr */
#line 569 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_GT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2548 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 188: /* expr ::= expr LE expr */
#line 570 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_LE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2553 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 189: /* expr ::= expr GE expr */
#line 571 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_GE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2558 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 190: /* expr ::= expr NE expr */
#line 572 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_NE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2563 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 191: /* expr ::= expr EQ expr */
#line 573 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_EQ, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2568 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 192: /* expr ::= expr BITAND expr */
#line 574 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_BITAND, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2573 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 193: /* expr ::= expr BITOR expr */
#line 575 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_BITOR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2578 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 194: /* expr ::= expr LSHIFT expr */
#line 576 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_LSHIFT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2583 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 195: /* expr ::= expr RSHIFT expr */
#line 577 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_RSHIFT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2588 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 196: /* expr ::= expr likeop expr */
#line 578 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy242, 0);
  pList = sqliteExprListAppend(pList, yymsp[-2].minor.yy242, 0);
  yygotominor.yy242 = sqliteExprFunction(pList, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->op = yymsp[-1].minor.yy372;
  sqliteExprSpan(yygotominor.yy242, &yymsp[-2].minor.yy242->span, &yymsp[0].minor.yy242->span);
}
#line 2599 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 197: /* expr ::= expr NOT likeop expr */
#line 585 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy242, 0);
  pList = sqliteExprListAppend(pList, yymsp[-3].minor.yy242, 0);
  yygotominor.yy242 = sqliteExprFunction(pList, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->op = yymsp[-1].minor.yy372;
  yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,&yymsp[0].minor.yy242->span);
}
#line 2611 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 198: /* likeop ::= LIKE */
#line 594 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_LIKE;}
#line 2616 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 199: /* likeop ::= GLOB */
#line 595 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy372 = TK_GLOB;}
#line 2621 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 200: /* expr ::= expr PLUS expr */
#line 596 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_PLUS, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2626 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 201: /* expr ::= expr MINUS expr */
#line 597 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_MINUS, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2631 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 202: /* expr ::= expr STAR expr */
#line 598 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_STAR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2636 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 203: /* expr ::= expr SLASH expr */
#line 599 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_SLASH, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2641 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 204: /* expr ::= expr REM expr */
#line 600 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_REM, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2646 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 205: /* expr ::= expr CONCAT expr */
#line 601 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy242 = sqliteExpr(TK_CONCAT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
#line 2651 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 206: /* expr ::= expr ISNULL */
#line 602 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_ISNULL, yymsp[-1].minor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy242->span,&yymsp[0].minor.yy0);
}
#line 2659 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 207: /* expr ::= expr IS NULL */
#line 606 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_ISNULL, yymsp[-2].minor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy242->span,&yymsp[0].minor.yy0);
}
#line 2667 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 208: /* expr ::= expr NOTNULL */
#line 610 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-1].minor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy242->span,&yymsp[0].minor.yy0);
}
#line 2675 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 209: /* expr ::= expr NOT NULL */
#line 614 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-2].minor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy242->span,&yymsp[0].minor.yy0);
}
#line 2683 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 210: /* expr ::= expr IS NOT NULL */
#line 618 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-3].minor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,&yymsp[0].minor.yy0);
}
#line 2691 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 211: /* expr ::= NOT expr */
#line 622 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_NOT, yymsp[0].minor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
}
#line 2699 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 212: /* expr ::= BITNOT expr */
#line 626 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_BITNOT, yymsp[0].minor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
}
#line 2707 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 213: /* expr ::= MINUS expr */
#line 630 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_UMINUS, yymsp[0].minor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
}
#line 2715 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 214: /* expr ::= PLUS expr */
#line 634 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_UPLUS, yymsp[0].minor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
}
#line 2723 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 215: /* expr ::= LP select RP */
#line 638 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_SELECT, 0, 0, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
  sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
}
#line 2732 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 216: /* expr ::= expr BETWEEN expr AND expr */
#line 643 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
  pList = sqliteExprListAppend(pList, yymsp[0].minor.yy242, 0);
  yygotominor.yy242 = sqliteExpr(TK_BETWEEN, yymsp[-4].minor.yy242, 0, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->pList = pList;
  sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy242->span);
}
#line 2743 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 217: /* expr ::= expr NOT BETWEEN expr AND expr */
#line 650 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
  pList = sqliteExprListAppend(pList, yymsp[0].minor.yy242, 0);
  yygotominor.yy242 = sqliteExpr(TK_BETWEEN, yymsp[-5].minor.yy242, 0, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->pList = pList;
  yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy242->span);
}
#line 2755 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 218: /* expr ::= expr IN LP exprlist RP */
#line 658 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-1].minor.yy322;
  sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy0);
}
#line 2764 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 219: /* expr ::= expr IN LP select RP */
#line 663 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
  sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy0);
}
#line 2773 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 220: /* expr ::= expr NOT IN LP exprlist RP */
#line 668 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-5].minor.yy242, 0, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-1].minor.yy322;
  yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy0);
}
#line 2783 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 221: /* expr ::= expr NOT IN LP select RP */
#line 674 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-5].minor.yy242, 0, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
  yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy0);
}
#line 2793 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 222: /* expr ::= expr IN nm dbnm */
#line 680 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);
  yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-3].minor.yy242, 0, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->pSelect = sqliteSelectNew(0,pSrc,0,0,0,0,0,-1,0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,yymsp[0].minor.yy0.z?&yymsp[0].minor.yy0:&yymsp[-1].minor.yy0);
}
#line 2803 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 223: /* expr ::= expr NOT IN nm dbnm */
#line 686 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);
  yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->pSelect = sqliteSelectNew(0,pSrc,0,0,0,0,0,-1,0);
  yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
  sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,yymsp[0].minor.yy0.z?&yymsp[0].minor.yy0:&yymsp[-1].minor.yy0);
}
#line 2814 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 224: /* expr ::= CASE case_operand case_exprlist case_else END */
#line 696 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_CASE, yymsp[-3].minor.yy242, yymsp[-1].minor.yy242, 0);
  if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-2].minor.yy322;
  sqliteExprSpan(yygotominor.yy242, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0);
}
#line 2823 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 225: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
#line 703 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322, yymsp[-2].minor.yy242, 0);
  yygotominor.yy322 = sqliteExprListAppend(yygotominor.yy322, yymsp[0].minor.yy242, 0);
}
#line 2831 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 226: /* case_exprlist ::= WHEN expr THEN expr */
#line 707 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy322 = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
  yygotominor.yy322 = sqliteExprListAppend(yygotominor.yy322, yymsp[0].minor.yy242, 0);
}
#line 2839 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 235: /* cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf */
#line 732 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-5].minor.yy0, &yymsp[-4].minor.yy0);
  if( yymsp[-9].minor.yy372!=OE_None ) yymsp[-9].minor.yy372 = yymsp[0].minor.yy372;
  if( yymsp[-9].minor.yy372==OE_Default) yymsp[-9].minor.yy372 = OE_Abort;
  sqliteCreateIndex(pParse, &yymsp[-7].minor.yy0, pSrc, yymsp[-2].minor.yy320, yymsp[-9].minor.yy372, &yymsp[-10].minor.yy0, &yymsp[-1].minor.yy0);
}
#line 2849 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 237: /* uniqueflag ::= */
#line 741 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = OE_None; }
#line 2854 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 243: /* cmd ::= DROP INDEX nm dbnm */
#line 758 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  sqliteDropIndex(pParse, sqliteSrcListAppend(0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0));
}
#line 2861 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 244: /* cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING */
#line 766 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-6].minor.yy0,&yymsp[-5].minor.yy0),&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0,yymsp[-7].minor.yy372);}
#line 2866 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 245: /* cmd ::= COPY orconf nm dbnm FROM nm */
#line 768 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0),&yymsp[0].minor.yy0,0,yymsp[-4].minor.yy372);}
#line 2871 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 246: /* cmd ::= VACUUM */
#line 772 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteVacuum(pParse,0);}
#line 2876 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 247: /* cmd ::= VACUUM nm */
#line 773 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqliteVacuum(pParse,&yymsp[0].minor.yy0);}
#line 2881 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 248: /* cmd ::= PRAGMA ids EQ nm */
      case 249: /* cmd ::= PRAGMA ids EQ ON */ yytestcase(yyruleno==249);
      case 250: /* cmd ::= PRAGMA ids EQ plus_num */ yytestcase(yyruleno==250);
#line 777 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqlitePragma(pParse,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
#line 2888 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 251: /* cmd ::= PRAGMA ids EQ minus_num */
#line 780 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqlitePragma(pParse,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
#line 2893 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 252: /* cmd ::= PRAGMA ids LP nm RP */
#line 781 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqlitePragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
#line 2898 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 253: /* cmd ::= PRAGMA ids */
#line 782 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{sqlitePragma(pParse,&yymsp[0].minor.yy0,&yymsp[0].minor.yy0,0);}
#line 2903 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 260: /* cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END */
#line 792 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  Token all;
  all.z = yymsp[-4].minor.yy0.z;
  all.n = (yymsp[0].minor.yy0.z - yymsp[-4].minor.yy0.z) + yymsp[0].minor.yy0.n;
  sqliteFinishTrigger(pParse, yymsp[-1].minor.yy19, &all);
}
#line 2913 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 261: /* trigger_decl ::= temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause */
#line 800 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  SrcList *pTab = sqliteSrcListAppend(0, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0);
  sqliteBeginTrigger(pParse, &yymsp[-7].minor.yy0, yymsp[-6].minor.yy372, yymsp[-5].minor.yy290.a, yymsp[-5].minor.yy290.b, pTab, yymsp[-1].minor.yy372, yymsp[0].minor.yy182, yymsp[-9].minor.yy372);
}
#line 2921 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 262: /* trigger_time ::= BEFORE */
      case 265: /* trigger_time ::= */ yytestcase(yyruleno==265);
#line 806 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = TK_BEFORE; }
#line 2927 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 263: /* trigger_time ::= AFTER */
#line 807 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = TK_AFTER;  }
#line 2932 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 264: /* trigger_time ::= INSTEAD OF */
#line 808 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = TK_INSTEAD;}
#line 2937 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 266: /* trigger_event ::= DELETE */
#line 813 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy290.a = TK_DELETE; yygotominor.yy290.b = 0; }
#line 2942 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 267: /* trigger_event ::= INSERT */
#line 814 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy290.a = TK_INSERT; yygotominor.yy290.b = 0; }
#line 2947 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 268: /* trigger_event ::= UPDATE */
#line 815 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy290.a = TK_UPDATE; yygotominor.yy290.b = 0;}
#line 2952 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 269: /* trigger_event ::= UPDATE OF inscollist */
#line 816 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy290.a = TK_UPDATE; yygotominor.yy290.b = yymsp[0].minor.yy320; }
#line 2957 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 270: /* foreach_clause ::= */
      case 271: /* foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==271);
#line 819 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = TK_ROW; }
#line 2963 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 272: /* foreach_clause ::= FOR EACH STATEMENT */
#line 821 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy372 = TK_STATEMENT; }
#line 2968 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 273: /* when_clause ::= */
#line 824 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy182 = 0; }
#line 2973 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 274: /* when_clause ::= WHEN expr */
#line 825 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy182 = yymsp[0].minor.yy242; }
#line 2978 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 275: /* trigger_cmd_list ::= trigger_cmd SEMI trigger_cmd_list */
#line 829 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yymsp[-2].minor.yy19->pNext = yymsp[0].minor.yy19;
  yygotominor.yy19 = yymsp[-2].minor.yy19;
}
#line 2986 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 276: /* trigger_cmd_list ::= */
#line 833 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy19 = 0; }
#line 2991 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 277: /* trigger_cmd ::= UPDATE orconf nm SET setlist where_opt */
#line 839 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy19 = sqliteTriggerUpdateStep(&yymsp[-3].minor.yy0, yymsp[-1].minor.yy322, yymsp[0].minor.yy242, yymsp[-4].minor.yy372); }
#line 2996 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 278: /* trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP */
#line 844 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-5].minor.yy0, yymsp[-4].minor.yy320, yymsp[-1].minor.yy322, 0, yymsp[-7].minor.yy372);}
#line 3001 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 279: /* trigger_cmd ::= insert_cmd INTO nm inscollist_opt select */
#line 847 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-2].minor.yy0, yymsp[-1].minor.yy320, 0, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);}
#line 3006 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 280: /* trigger_cmd ::= DELETE FROM nm where_opt */
#line 851 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy19 = sqliteTriggerDeleteStep(&yymsp[-1].minor.yy0, yymsp[0].minor.yy242);}
#line 3011 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 281: /* trigger_cmd ::= select */
#line 854 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{yygotominor.yy19 = sqliteTriggerSelectStep(yymsp[0].minor.yy179); }
#line 3016 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 282: /* expr ::= RAISE LP IGNORE RP */
#line 857 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, 0); 
  yygotominor.yy242->iColumn = OE_Ignore;
  sqliteExprSpan(yygotominor.yy242, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0);
}
#line 3025 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 283: /* expr ::= RAISE LP ROLLBACK COMMA nm RP */
#line 862 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy0); 
  yygotominor.yy242->iColumn = OE_Rollback;
  sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
}
#line 3034 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 284: /* expr ::= RAISE LP ABORT COMMA nm RP */
#line 867 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy0); 
  yygotominor.yy242->iColumn = OE_Abort;
  sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
}
#line 3043 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 285: /* expr ::= RAISE LP FAIL COMMA nm RP */
#line 872 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy0); 
  yygotominor.yy242->iColumn = OE_Fail;
  sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
}
#line 3052 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 286: /* cmd ::= DROP TRIGGER nm dbnm */
#line 879 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0));
}
#line 3059 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 287: /* cmd ::= ATTACH database_kw_opt ids AS nm key_opt */
#line 884 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  sqliteAttach(pParse, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);
}
#line 3066 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 289: /* key_opt ::= */
#line 889 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{ yygotominor.yy0.z = 0; yygotominor.yy0.n = 0; }
#line 3071 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      case 292: /* cmd ::= DETACH database_kw_opt nm */
#line 895 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"
{
  sqliteDetach(pParse, &yymsp[0].minor.yy0);
}
#line 3078 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
        break;
      default:
      /* (0) input ::= cmdlist */ yytestcase(yyruleno==0);
      /* (1) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==1);
      /* (2) cmdlist ::= ecmd */ yytestcase(yyruleno==2);
      /* (3) ecmd ::= explain cmdx SEMI */ yytestcase(yyruleno==3);
      /* (4) ecmd ::= SEMI */ yytestcase(yyruleno==4);
      /* (9) trans_opt ::= */ yytestcase(yyruleno==9);
      /* (10) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==10);
      /* (11) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==11);
      /* (15) cmd ::= create_table create_table_args */ yytestcase(yyruleno==15);
      /* (21) columnlist ::= columnlist COMMA column */ yytestcase(yyruleno==21);
      /* (22) columnlist ::= column */ yytestcase(yyruleno==22);
      /* (23) column ::= columnid type carglist */ yytestcase(yyruleno==23);
      /* (31) type ::= */ yytestcase(yyruleno==31);
      /* (40) carglist ::= carglist carg */ yytestcase(yyruleno==40);
      /* (41) carglist ::= */ yytestcase(yyruleno==41);
      /* (42) carg ::= CONSTRAINT nm ccons */ yytestcase(yyruleno==42);
      /* (43) carg ::= ccons */ yytestcase(yyruleno==43);
      /* (52) carg ::= DEFAULT NULL */ yytestcase(yyruleno==52);
      /* (53) ccons ::= NULL onconf */ yytestcase(yyruleno==53);
      /* (76) conslist_opt ::= */ yytestcase(yyruleno==76);
      /* (77) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==77);
      /* (78) conslist ::= conslist COMMA tcons */ yytestcase(yyruleno==78);
      /* (79) conslist ::= conslist tcons */ yytestcase(yyruleno==79);
      /* (80) conslist ::= tcons */ yytestcase(yyruleno==80);
      /* (81) tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==81);
      /* (258) plus_opt ::= PLUS */ yytestcase(yyruleno==258);
      /* (259) plus_opt ::= */ yytestcase(yyruleno==259);
      /* (290) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==290);
      /* (291) database_kw_opt ::= */ yytestcase(yyruleno==291);
        break;
  };
  yygoto = yyRuleInfo[yyruleno].lhs;
  yysize = yyRuleInfo[yyruleno].nrhs;
  yypParser->yyidx -= yysize;
  yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto);
  if( yyact < YYNSTATE ){
#ifdef NDEBUG
    /* If we are not debugging and the reduce action popped at least
    ** one element off the stack, then we can push the new element back
    ** onto the stack here, and skip the stack overflow test in yy_shift().
    ** That gives a significant speed improvement. */
    if( yysize ){
      yypParser->yyidx++;
      yymsp -= yysize-1;
      yymsp->stateno = (YYACTIONTYPE)yyact;
      yymsp->major = (YYCODETYPE)yygoto;
      yymsp->minor = yygotominor;
    }else
#endif
    {
      yy_shift(yypParser,yyact,yygoto,&yygotominor);
    }
  }else{
    assert( yyact == YYNSTATE + YYNRULE + 1 );
    yy_accept(yypParser);
  }
}

Here is the caller graph for this function:

static void yy_shift ( yyParser yypParser,
int  yyNewState,
int  yyMajor,
YYMINORTYPE yypMinor 
) [static]

Definition at line 1392 of file parse.c.

 {
  yyStackEntry *yytos;
  yypParser->yyidx++;
#ifdef YYTRACKMAXSTACKDEPTH
  if( yypParser->yyidx>yypParser->yyidxMax ){
    yypParser->yyidxMax = yypParser->yyidx;
  }
#endif
#if YYSTACKDEPTH>0 
  if( yypParser->yyidx>=YYSTACKDEPTH ){
    yyStackOverflow(yypParser, yypMinor);
    return;
  }
#else
  if( yypParser->yyidx>=yypParser->yystksz ){
    yyGrowStack(yypParser);
    if( yypParser->yyidx>=yypParser->yystksz ){
      yyStackOverflow(yypParser, yypMinor);
      return;
    }
  }
#endif
  yytos = &yypParser->yystack[yypParser->yyidx];
  yytos->stateno = (YYACTIONTYPE)yyNewState;
  yytos->major = (YYCODETYPE)yyMajor;
  yytos->minor = *yypMinor;
#ifndef NDEBUG
  if( yyTraceFILE && yypParser->yyidx>0 ){
    int i;
    fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
    fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
    for(i=1; i<=yypParser->yyidx; i++)
      fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
    fprintf(yyTraceFILE,"\n");
  }
#endif
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void yy_syntax_error ( yyParser yypParser,
int  yymajor,
YYMINORTYPE  yyminor 
) [static]

Definition at line 3161 of file parse.c.

 {
  sqliteParserARG_FETCH;
#define TOKEN (yyminor.yy0)
#line 23 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.y"

  if( pParse->zErrMsg==0 ){
    if( TOKEN.z[0] ){
      sqliteErrorMsg(pParse, "near \"%T\": syntax error", &TOKEN);
    }else{
      sqliteErrorMsg(pParse, "incomplete SQL statement");
    }
  }
#line 3178 "/home/felipe/dev/php5/ext/sqlite/libsqlite/src/parse.c"
  sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void yyStackOverflow ( yyParser yypParser,
YYMINORTYPE yypMinor 
) [static]

Definition at line 1375 of file parse.c.

                                                                       {
   sqliteParserARG_FETCH;
   yypParser->yyidx--;
#ifndef NDEBUG
   if( yyTraceFILE ){
     fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
   }
#endif
   while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
   /* Here code is inserted which will execute if the parser
   ** stack every overflows */
   sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument var */
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

const YYACTIONTYPE yy_action[] [static]

Definition at line 180 of file parse.c.

const YYACTIONTYPE yy_default[] [static]

Definition at line 493 of file parse.c.

const YYCODETYPE yy_lookahead[] [static]

Definition at line 297 of file parse.c.

const short yy_reduce_ofst[] [static]

Definition at line 462 of file parse.c.

const short yy_shift_ofst[] [static]

Definition at line 418 of file parse.c.

const YYCODETYPE yyFallback[] [static]

Definition at line 564 of file parse.c.

struct { ... } yyRuleInfo[] [static]
const char* const yyRuleName[] [static]

Definition at line 764 of file parse.c.

const char* const yyTokenName[] [static]

Definition at line 702 of file parse.c.

FILE* yyTraceFILE = 0 [static]

Definition at line 669 of file parse.c.

char* yyTracePrompt = 0 [static]

Definition at line 670 of file parse.c.

const YYMINORTYPE yyzerominor = { 0 } [static]

Definition at line 117 of file parse.c.