45 #define NCBI_USE_ERRCODE_X Util_QParse
124 catch (exception & ex) {
125 ERR_POST_X(1,
"Exception in ~CQueryParserEnv()" << ex.what());
128 ERR_POST_X(2,
"Unknown exception in ~CQueryParserEnv()");
169 for (
int i = 0;
i < num; ++
i) {
359 _TRACE(
"Parsing error!!!");
385 env.SetCase(case_sense);
387 env.SetParserTolerance(syntax_check);
388 if (functions.size()) {
389 env.SetFunctions(&functions);
400 qt =
env.DetachQueryTree();
411 if (vec.size() == 1) {
Query tree and associated utility methods.
Class passed to Lex/Bison (yylex/yyparse) functions.
void SetContext(CQueryParseTree::TNode *node)
void SetIN_Context(CQueryParseTree::TNode *in_node)
void Skip(int num)
Skip number of characters.
const CQueryParseTree::TFunctionNames * GetFunctions() const
Get list of registered functions.
CQueryParseTree::TNode * GetFROM_Context()
const char * m_Query
Request buffer. (Source for the scanner)
TNodePool m_NodePool
Memory pool of query clause tree nodes.
CResourcePool< CQueryParseTree::TNode, CFastMutex > TNodePool
void SetFunctions(const CQueryParseTree::TFunctionNames *func)
Register pointer on function names (no ownership transfer)
CQueryParseTree::TNode * GetQueryTree()
void AttachToPool(CQueryParseTree::TNode *qt)
CQueryParseTree::TNode * m_QueryTree
Query clause tree. This is the result of the statement parsing.
CQueryParseTree & m_QTree
Base query tree reference.
CQueryParseTree::ECase m_Case
Case sensitivity switch.
const char * GetBufEnd() const
CQueryParseTree::ECase GetCase() const
void SetSELECT_Context(CQueryParseTree::TNode *node)
void ForgetPoolNode(CQueryParseTree::TNode *qnode)
CQueryParseTree & QTree()
const char * GetBufPtr() const
unsigned m_QueryLen
Query length.
unsigned GetLinePos() const
Get position in line.
void SetFROM_Context(CQueryParseTree::TNode *from_node)
CQueryParseTree::TNode * m_FromNode
"FROM" context pointer
void AttachQueryTree(CQueryParseTree::TNode *qt)
void AddNodeToPool(CQueryParseTree::TNode *qnode)
CQueryParseTree::TNode * GetIN_Context()
TContextStack m_CtxStack
Common parsing context.
void SetBufPtr(const char *ptr)
void SetVerbose(bool verbose=true)
void SetParserTolerance(CQueryParseTree::ESyntaxCheck syntax_check)
CQueryParseTree::TNode * GetContext()
CQueryParserEnv(const char *query_str, CQueryParseTree &qtree, unsigned line=0, unsigned linePos=0)
CQueryParseTree::TNode * GetSELECT_Context()
CQueryParseTree::TNode * DetachQueryTree()
Return query clause.
bool m_Verbose
Debug trace when parsing.
CQueryParseTree::ESyntaxCheck GetParserTolerance() const
vector< CQueryParseTree::TNode * > TContextStack
Parsing context stack.
TContextStack m_SelectCtxStack
"SELECT" parsing context
void ForgetPoolNodes(CQueryParseTree::TNode *qnode1, CQueryParseTree::TNode *qnode2)
CQueryParseTree::TNode * m_InNode
operator "IN" context pointer
const CQueryParseTree::TFunctionNames * m_Functions
Function names.
const char * GetQueryBuffer() const
void SetCase(CQueryParseTree::ECase case_sense)
unsigned GetLine() const
Src line number.
const char * m_Ptr
Current position in the request buffer.
CQueryParseTree::ESyntaxCheck m_ParseTolerance
Query tree garbage collection functor.
CQueryTreeCleanPoolFunc(TNodePool &mem_pool)
CResourcePool< CBDB_Query::TQueryClause > & m_Pool
ETreeTraverseCode operator()(CQueryParseTree::TNode &tr, int delta)
CResourcePool< CQueryParseTree::TNode, CFastMutex > TNodePool
definition of a Culling tree
const CNcbiEnvironment & GetEnvironment(void) const
Get the application's cached environment.
static CNcbiApplicationGuard InstanceGuard(void)
Singleton method.
#define ERR_POST_X(err_subcode, message)
Error posting with default error code and given error subcode.
const string & Get(const string &name, bool *found=NULL) const
Get environment value by name.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
void Parse(const char *query_str, ECase case_sense=eCaseInsensitive, ESyntaxCheck syntax_check=eSyntaxCheck, bool verbose=false, const TFunctionNames &functions=TFunctionNames(0), unsigned line=0, unsigned linePos=0)
Query parser front-end function.
void SetQueryTree(TNode *qtree)
Replace current query tree with the new one.
ECase
Case sensitive parsing.
vector< string > TFunctionNames
List of keywords recognised as functions.
ESyntaxCheck
Level of tolerance to syntax errors and problems.
void ForgetAll()
Makes pool to forget all objects.
Value * Forget(Value *v)
Makes the pool to forget the object.
void Put(Value *v)
Put object into the pool.
TBase::TPoolList TPoolList
TPoolList & GetFreeList()
Get internal list of free objects.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Fun TreeDepthFirstTraverse(TTreeNode &tree_node, Fun func)
Depth-first tree traversal algorithm.
ETreeTraverseCode
Tree traverse code returned by the traverse predicate function.
@ eTreeTraverse
Keep traversal.
Definition of all error codes used in util (xutil.lib).
Defines the CNcbiApplication and CAppException classes for creating NCBI applications.
Multi-threading – mutexes; rw-locks; semaphore.
Int4 delta(size_t dimension_, const Int4 *score_)
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
Query string parsing components.
static int ncbi_q_lex(CQueryParseTree::TNode **lvalp, void *param)
static int ncbi_q_error(const char *s)
Called by yyparse on error.