⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parse.y

📁 PHP v6.0 For Linux 运行环境:Win9X/ WinME/ WinNT/ Win2K/ WinXP
💻 Y
📖 第 1 页 / 共 3 页
字号:
expr(A) ::= expr(X) CONCAT expr(Y). {A = sqliteExpr(TK_CONCAT, X, Y, 0);}expr(A) ::= expr(X) ISNULL(E). {  A = sqliteExpr(TK_ISNULL, X, 0, 0);  sqliteExprSpan(A,&X->span,&E);}expr(A) ::= expr(X) IS NULL(E). {  A = sqliteExpr(TK_ISNULL, X, 0, 0);  sqliteExprSpan(A,&X->span,&E);}expr(A) ::= expr(X) NOTNULL(E). {  A = sqliteExpr(TK_NOTNULL, X, 0, 0);  sqliteExprSpan(A,&X->span,&E);}expr(A) ::= expr(X) NOT NULL(E). {  A = sqliteExpr(TK_NOTNULL, X, 0, 0);  sqliteExprSpan(A,&X->span,&E);}expr(A) ::= expr(X) IS NOT NULL(E). {  A = sqliteExpr(TK_NOTNULL, X, 0, 0);  sqliteExprSpan(A,&X->span,&E);}expr(A) ::= NOT(B) expr(X). {  A = sqliteExpr(TK_NOT, X, 0, 0);  sqliteExprSpan(A,&B,&X->span);}expr(A) ::= BITNOT(B) expr(X). {  A = sqliteExpr(TK_BITNOT, X, 0, 0);  sqliteExprSpan(A,&B,&X->span);}expr(A) ::= MINUS(B) expr(X). [UMINUS] {  A = sqliteExpr(TK_UMINUS, X, 0, 0);  sqliteExprSpan(A,&B,&X->span);}expr(A) ::= PLUS(B) expr(X). [UPLUS] {  A = sqliteExpr(TK_UPLUS, X, 0, 0);  sqliteExprSpan(A,&B,&X->span);}expr(A) ::= LP(B) select(X) RP(E). {  A = sqliteExpr(TK_SELECT, 0, 0, 0);  if( A ) A->pSelect = X;  sqliteExprSpan(A,&B,&E);}expr(A) ::= expr(W) BETWEEN expr(X) AND expr(Y). {  ExprList *pList = sqliteExprListAppend(0, X, 0);  pList = sqliteExprListAppend(pList, Y, 0);  A = sqliteExpr(TK_BETWEEN, W, 0, 0);  if( A ) A->pList = pList;  sqliteExprSpan(A,&W->span,&Y->span);}expr(A) ::= expr(W) NOT BETWEEN expr(X) AND expr(Y). {  ExprList *pList = sqliteExprListAppend(0, X, 0);  pList = sqliteExprListAppend(pList, Y, 0);  A = sqliteExpr(TK_BETWEEN, W, 0, 0);  if( A ) A->pList = pList;  A = sqliteExpr(TK_NOT, A, 0, 0);  sqliteExprSpan(A,&W->span,&Y->span);}expr(A) ::= expr(X) IN LP exprlist(Y) RP(E).  {  A = sqliteExpr(TK_IN, X, 0, 0);  if( A ) A->pList = Y;  sqliteExprSpan(A,&X->span,&E);}expr(A) ::= expr(X) IN LP select(Y) RP(E).  {  A = sqliteExpr(TK_IN, X, 0, 0);  if( A ) A->pSelect = Y;  sqliteExprSpan(A,&X->span,&E);}expr(A) ::= expr(X) NOT IN LP exprlist(Y) RP(E).  {  A = sqliteExpr(TK_IN, X, 0, 0);  if( A ) A->pList = Y;  A = sqliteExpr(TK_NOT, A, 0, 0);  sqliteExprSpan(A,&X->span,&E);}expr(A) ::= expr(X) NOT IN LP select(Y) RP(E).  {  A = sqliteExpr(TK_IN, X, 0, 0);  if( A ) A->pSelect = Y;  A = sqliteExpr(TK_NOT, A, 0, 0);  sqliteExprSpan(A,&X->span,&E);}expr(A) ::= expr(X) IN nm(Y) dbnm(D). {  SrcList *pSrc = sqliteSrcListAppend(0, &Y, &D);  A = sqliteExpr(TK_IN, X, 0, 0);  if( A ) A->pSelect = sqliteSelectNew(0,pSrc,0,0,0,0,0,-1,0);  sqliteExprSpan(A,&X->span,D.z?&D:&Y);}expr(A) ::= expr(X) NOT IN nm(Y) dbnm(D). {  SrcList *pSrc = sqliteSrcListAppend(0, &Y, &D);  A = sqliteExpr(TK_IN, X, 0, 0);  if( A ) A->pSelect = sqliteSelectNew(0,pSrc,0,0,0,0,0,-1,0);  A = sqliteExpr(TK_NOT, A, 0, 0);  sqliteExprSpan(A,&X->span,D.z?&D:&Y);}/* CASE expressions */expr(A) ::= CASE(C) case_operand(X) case_exprlist(Y) case_else(Z) END(E). {  A = sqliteExpr(TK_CASE, X, Z, 0);  if( A ) A->pList = Y;  sqliteExprSpan(A, &C, &E);}%type case_exprlist {ExprList*}%destructor case_exprlist {sqliteExprListDelete($$);}case_exprlist(A) ::= case_exprlist(X) WHEN expr(Y) THEN expr(Z). {  A = sqliteExprListAppend(X, Y, 0);  A = sqliteExprListAppend(A, Z, 0);}case_exprlist(A) ::= WHEN expr(Y) THEN expr(Z). {  A = sqliteExprListAppend(0, Y, 0);  A = sqliteExprListAppend(A, Z, 0);}%type case_else {Expr*}case_else(A) ::=  ELSE expr(X).         {A = X;}case_else(A) ::=  .                     {A = 0;} %type case_operand {Expr*}case_operand(A) ::= expr(X).            {A = X;} case_operand(A) ::= .                   {A = 0;} %type exprlist {ExprList*}%destructor exprlist {sqliteExprListDelete($$);}%type expritem {Expr*}%destructor expritem {sqliteExprDelete($$);}exprlist(A) ::= exprlist(X) COMMA expritem(Y).    {A = sqliteExprListAppend(X,Y,0);}exprlist(A) ::= expritem(X).            {A = sqliteExprListAppend(0,X,0);}expritem(A) ::= expr(X).                {A = X;}expritem(A) ::= .                       {A = 0;}///////////////////////////// The CREATE INDEX command /////////////////////////cmd ::= CREATE(S) uniqueflag(U) INDEX nm(X)        ON nm(Y) dbnm(D) LP idxlist(Z) RP(E) onconf(R). {  SrcList *pSrc = sqliteSrcListAppend(0, &Y, &D);  if( U!=OE_None ) U = R;  if( U==OE_Default) U = OE_Abort;  sqliteCreateIndex(pParse, &X, pSrc, Z, U, &S, &E);}%type uniqueflag {int}uniqueflag(A) ::= UNIQUE.  { A = OE_Abort; }uniqueflag(A) ::= .        { A = OE_None; }%type idxlist {IdList*}%destructor idxlist {sqliteIdListDelete($$);}%type idxlist_opt {IdList*}%destructor idxlist_opt {sqliteIdListDelete($$);}%type idxitem {Token}idxlist_opt(A) ::= .                         {A = 0;}idxlist_opt(A) ::= LP idxlist(X) RP.         {A = X;}idxlist(A) ::= idxlist(X) COMMA idxitem(Y).  {A = sqliteIdListAppend(X,&Y);}idxlist(A) ::= idxitem(Y).                   {A = sqliteIdListAppend(0,&Y);}idxitem(A) ::= nm(X) sortorder.              {A = X;}///////////////////////////// The DROP INDEX command ///////////////////////////cmd ::= DROP INDEX nm(X) dbnm(Y).   {  sqliteDropIndex(pParse, sqliteSrcListAppend(0,&X,&Y));}///////////////////////////// The COPY command /////////////////////////////////cmd ::= COPY orconf(R) nm(X) dbnm(D) FROM nm(Y) USING DELIMITERS STRING(Z).    {sqliteCopy(pParse,sqliteSrcListAppend(0,&X,&D),&Y,&Z,R);}cmd ::= COPY orconf(R) nm(X) dbnm(D) FROM nm(Y).    {sqliteCopy(pParse,sqliteSrcListAppend(0,&X,&D),&Y,0,R);}///////////////////////////// The VACUUM command ///////////////////////////////cmd ::= VACUUM.                {sqliteVacuum(pParse,0);}cmd ::= VACUUM nm(X).         {sqliteVacuum(pParse,&X);}///////////////////////////// The PRAGMA command ///////////////////////////////cmd ::= PRAGMA ids(X) EQ nm(Y).         {sqlitePragma(pParse,&X,&Y,0);}cmd ::= PRAGMA ids(X) EQ ON(Y).          {sqlitePragma(pParse,&X,&Y,0);}cmd ::= PRAGMA ids(X) EQ plus_num(Y).    {sqlitePragma(pParse,&X,&Y,0);}cmd ::= PRAGMA ids(X) EQ minus_num(Y).   {sqlitePragma(pParse,&X,&Y,1);}cmd ::= PRAGMA ids(X) LP nm(Y) RP.      {sqlitePragma(pParse,&X,&Y,0);}cmd ::= PRAGMA ids(X).                   {sqlitePragma(pParse,&X,&X,0);}plus_num(A) ::= plus_opt number(X).   {A = X;}minus_num(A) ::= MINUS number(X).     {A = X;}number(A) ::= INTEGER(X).  {A = X;}number(A) ::= FLOAT(X).    {A = X;}plus_opt ::= PLUS.plus_opt ::= .//////////////////////////// The CREATE TRIGGER command /////////////////////cmd ::= CREATE(A) trigger_decl BEGIN trigger_cmd_list(S) END(Z). {  Token all;  all.z = A.z;  all.n = (Z.z - A.z) + Z.n;  sqliteFinishTrigger(pParse, S, &all);}trigger_decl ::= temp(T) TRIGGER nm(B) trigger_time(C) trigger_event(D)                 ON nm(E) dbnm(DB) foreach_clause(F) when_clause(G). {  SrcList *pTab = sqliteSrcListAppend(0, &E, &DB);  sqliteBeginTrigger(pParse, &B, C, D.a, D.b, pTab, F, G, T);}%type trigger_time  {int}trigger_time(A) ::= BEFORE.      { A = TK_BEFORE; }trigger_time(A) ::= AFTER.       { A = TK_AFTER;  }trigger_time(A) ::= INSTEAD OF.  { A = TK_INSTEAD;}trigger_time(A) ::= .            { A = TK_BEFORE; }%type trigger_event {struct TrigEvent}%destructor trigger_event {sqliteIdListDelete($$.b);}trigger_event(A) ::= DELETE. { A.a = TK_DELETE; A.b = 0; }trigger_event(A) ::= INSERT. { A.a = TK_INSERT; A.b = 0; }trigger_event(A) ::= UPDATE. { A.a = TK_UPDATE; A.b = 0;}trigger_event(A) ::= UPDATE OF inscollist(X). {A.a = TK_UPDATE; A.b = X; }%type foreach_clause {int}foreach_clause(A) ::= .                   { A = TK_ROW; }foreach_clause(A) ::= FOR EACH ROW.       { A = TK_ROW; }foreach_clause(A) ::= FOR EACH STATEMENT. { A = TK_STATEMENT; }%type when_clause {Expr *}when_clause(A) ::= .             { A = 0; }when_clause(A) ::= WHEN expr(X). { A = X; }%type trigger_cmd_list {TriggerStep *}%destructor trigger_cmd_list {sqliteDeleteTriggerStep($$);}trigger_cmd_list(A) ::= trigger_cmd(X) SEMI trigger_cmd_list(Y). {  X->pNext = Y;  A = X;}trigger_cmd_list(A) ::= . { A = 0; }%type trigger_cmd {TriggerStep *}%destructor trigger_cmd {sqliteDeleteTriggerStep($$);}// UPDATE trigger_cmd(A) ::= UPDATE orconf(R) nm(X) SET setlist(Y) where_opt(Z).                 { A = sqliteTriggerUpdateStep(&X, Y, Z, R); }// INSERTtrigger_cmd(A) ::= insert_cmd(R) INTO nm(X) inscollist_opt(F)   VALUES LP itemlist(Y) RP.  {A = sqliteTriggerInsertStep(&X, F, Y, 0, R);}trigger_cmd(A) ::= insert_cmd(R) INTO nm(X) inscollist_opt(F) select(S).               {A = sqliteTriggerInsertStep(&X, F, 0, S, R);}// DELETEtrigger_cmd(A) ::= DELETE FROM nm(X) where_opt(Y).               {A = sqliteTriggerDeleteStep(&X, Y);}// SELECTtrigger_cmd(A) ::= select(X).  {A = sqliteTriggerSelectStep(X); }// The special RAISE expression that may occur in trigger programsexpr(A) ::= RAISE(X) LP IGNORE RP(Y).  {  A = sqliteExpr(TK_RAISE, 0, 0, 0);   A->iColumn = OE_Ignore;  sqliteExprSpan(A, &X, &Y);}expr(A) ::= RAISE(X) LP ROLLBACK COMMA nm(Z) RP(Y).  {  A = sqliteExpr(TK_RAISE, 0, 0, &Z);   A->iColumn = OE_Rollback;  sqliteExprSpan(A, &X, &Y);}expr(A) ::= RAISE(X) LP ABORT COMMA nm(Z) RP(Y).  {  A = sqliteExpr(TK_RAISE, 0, 0, &Z);   A->iColumn = OE_Abort;  sqliteExprSpan(A, &X, &Y);}expr(A) ::= RAISE(X) LP FAIL COMMA nm(Z) RP(Y).  {  A = sqliteExpr(TK_RAISE, 0, 0, &Z);   A->iColumn = OE_Fail;  sqliteExprSpan(A, &X, &Y);}////////////////////////  DROP TRIGGER statement //////////////////////////////cmd ::= DROP TRIGGER nm(X) dbnm(D). {  sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&X,&D));}//////////////////////// ATTACH DATABASE file AS name /////////////////////////cmd ::= ATTACH database_kw_opt ids(F) AS nm(D) key_opt(K). {  sqliteAttach(pParse, &F, &D, &K);}%type key_opt {Token}key_opt(A) ::= USING ids(X).  { A = X; }key_opt(A) ::= .              { A.z = 0; A.n = 0; }database_kw_opt ::= DATABASE.database_kw_opt ::= .//////////////////////// DETACH DATABASE name /////////////////////////////////cmd ::= DETACH database_kw_opt nm(D). {  sqliteDetach(pParse, &D);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -