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

📄 fts3_expr.h

📁 sqlite最新源码
💻 H
字号:
/*** 2008 Nov 28**** The author disclaims copyright to this source code.  In place of** a legal notice, here is a blessing:****    May you do good and not evil.**    May you find forgiveness for yourself and forgive others.**    May you share freely, never taking more than you give.***********************************************************************************/#include "fts3_tokenizer.h"#include "sqlite3.h"/*** The following describes the syntax supported by the fts3 MATCH** operator in a similar format to that used by the lemon parser** generator. This module does not use actually lemon, it uses a** custom parser.****   query ::= andexpr (OR andexpr)*.****   andexpr ::= notexpr (AND? notexpr)*.****   notexpr ::= nearexpr (NOT nearexpr|-TOKEN)*.**   notexpr ::= LP query RP.****   nearexpr ::= phrase (NEAR distance_opt nearexpr)*.****   distance_opt ::= .**   distance_opt ::= / INTEGER.****   phrase ::= TOKEN.**   phrase ::= COLUMN:TOKEN.**   phrase ::= "TOKEN TOKEN TOKEN...".*/typedef struct Fts3Expr Fts3Expr;typedef struct Fts3Phrase Fts3Phrase;/*** A "phrase" is a sequence of one or more tokens that must match in** sequence.  A single token is the base case and the most common case.** For a sequence of tokens contained in "...", nToken will be the number** of tokens in the string.*/struct Fts3Phrase {  int nToken;          /* Number of tokens in the phrase */  int iColumn;         /* Index of column this phrase must match */  int isNot;           /* Phrase prefixed by unary not (-) operator */  struct PhraseToken {    char *z;              /* Text of the token */    int n;                /* Number of bytes in buffer pointed to by z */    int isPrefix;         /* True if token ends in with a "*" character */  } aToken[1];         /* One entry for each token in the phrase */};/*** A tree of these objects forms the RHS of a MATCH operator.*/struct Fts3Expr {  int eType;                 /* One of the FTSQUERY_XXX values defined below */  int nNear;                 /* Valid if eType==FTSQUERY_NEAR */  Fts3Expr *pParent;         /* pParent->pLeft==this or pParent->pRight==this */  Fts3Expr *pLeft;           /* Left operand */  Fts3Expr *pRight;          /* Right operand */  Fts3Phrase *pPhrase;       /* Valid if eType==FTSQUERY_PHRASE */};int sqlite3Fts3ExprParse(sqlite3_tokenizer *, char **, int, int,                          const char *, int, Fts3Expr **);void sqlite3Fts3ExprFree(Fts3Expr *);/*** Candidate values for Fts3Query.eType. Note that the order of the first** four values is in order of precedence when parsing expressions. For ** example, the following:****   "a OR b AND c NOT d NEAR e"**** is equivalent to:****   "a OR (b AND (c NOT (d NEAR e)))"*/#define FTSQUERY_NEAR   1#define FTSQUERY_NOT    2#define FTSQUERY_AND    3#define FTSQUERY_OR     4#define FTSQUERY_PHRASE 5#ifdef SQLITE_TESTvoid sqlite3Fts3ExprInitTestInterface(sqlite3 *db);#endif

⌨️ 快捷键说明

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