20 #if !defined(__DDC_QUERY_COMPILER_H_) 21 #define __DDC_QUERY_COMPILER_H_ 34 #define yyFlexLexer yyqLexer 39 #define PARSER_USE_OLD_API 40 #undef PARSER_USE_OLD_API 165 string*
newString(
const string &s=
string(
""));
169 string*
newRegex(
const string &pattern,
const string &modifiers=
string(
""),
bool isMatch=
true);
172 inline const char*
yytext()
const {
return YYText(); };
175 inline int yyleng()
const {
return YYLeng(); };
178 inline string yystring()
const {
return string(YYText(),YYLeng()); };
257 void SetFilterKey(
const string &field=
"",
BYTE matchid=0,
int offset=INT_MIN);
266 void barf(
const std::string &msg)
const;
269 void barf(
const char *fmt, ...)
const;
273 void yybarf(
const char *yymsg)
const;
278 virtual string jsonClass() {
return "CQueryCompiler"; };
CQCount * PushCountQuery(CQuery *qConditions)
Definition: QueryCompiler.cpp:347
void DeleteTree()
delete parse tree (m_pQuery) if non-NULL; actually wipes all queries in m_Queries and m_qCountKeys ...
Definition: QueryCompiler.cpp:224
vector< string > m_Expanders
temporary for "% X1 % X2 ..." expansion queries
Definition: QueryCompiler.h:106
vector< CQuery * > m_Queries
set of all query nodes allocated during current parse
Definition: QueryCompiler.h:142
HitSortEnum m_qCountSort
count()-query sort order
Definition: QueryCompiler.h:91
Definition: QueryFilter.h:461
void yybarf(const char *yymsg) const
Definition: QueryCompiler.cpp:426
CQKeys * PushKeysQuery(CQCount *qCount)
Definition: QueryCompiler.cpp:367
string m_FilterField
temporary for filter field (#less_by_xyz, #greater_by_xyz)
Definition: QueryCompiler.h:112
CQuery * PushQuery(CQuery *qp)
Definition: QueryCompiler.h:239
size_t m_qCountLimit
count()-query result-set size (for keys()-queries)
Definition: QueryCompiler.h:88
bool CompileFilters()
Definition: QueryCompiler.cpp:91
virtual void DisownChildren()
Definition: QueryCompiler.cpp:438
int yyleng() const
flex convenience wrapper
Definition: QueryCompiler.h:175
bool ParseQuery(const string &QueryStr)
Definition: QueryCompiler.cpp:140
size_t GetNodeIndicesCount() const
return m_CurrentNodeIndex
Definition: QueryCompiler.cpp:86
string * newString(const string &s=string(""))
wrapper to push a new string pointer onto the m_Labels stack (to be freed on CleanParser()) ...
Definition: QueryCompiler.cpp:307
void CleanParser()
Definition: QueryCompiler.cpp:192
count query
Definition: QCount.h:320
void SetFilterBounds(const string &lb="", const string &ub="")
set string bounds for current filter (called by bison parser)
Definition: QueryCompiler.cpp:376
vector< string > m_IndexTuple
keys()-query tuple
Definition: QueryCompiler.h:100
bool CheckSatisfiable()
Definition: QueryCompiler.h:215
virtual ~CQueryCompiler()
default destructor
Definition: QueryCompiler.cpp:76
string QueryToString(void)
debug: return a string form for the current query; wraps m_pQuery->toString() + m_pQuery->optionsToSt...
Definition: QueryCompiler.cpp:392
void yybegin(int new_state)
wrapper for protected yyFlexLexer::yy_begin()
Definition: QueryCompiler.cpp:184
int yyqlex(void *valp)
wrapper for yylex() as called from bison parser (valp is a YYSTYPE*)
Definition: QueryCompiler.cpp:243
string jsonStr(ddcObject *o)
json strinfication wrapper
Definition: ddcObject.h:208
virtual string jsonClass()
Definition: QueryCompiler.h:278
BYTE m_FilterMatchId
temporary for filter reference match-id (#left, #right, #mid; default=0:any)
Definition: QueryCompiler.h:121
string m_RegexModifiers
temporary for regex modifiers
Definition: QueryCompiler.h:133
void SetFilterKey(const string &field="", BYTE matchid=0, int offset=INT_MIN)
set context-filter key
Definition: QueryCompiler.cpp:383
int GetNewNodeIndex()
return current node index to set CQueryTokenNode::m_NodeIndex
Definition: QueryCompiler.cpp:81
class for global query filters aka "query operators"
Definition: ddcObject.h:45
const CConcHolder * m_pHolder
a reference to the holder, for which this query is parsed
Definition: QueryCompiler.h:64
CQuery * m_pQuery
root of the abstract parse tree
Definition: QueryCompiler.h:67
string m_qCountLo
count()-query lower bound
Definition: QueryCompiler.h:94
class for a single (thread-local) DDC query session; formerly CConcHolder An instance of CConcSessio...
Definition: ConcSession.h:54
CQCountKeyExprList m_qCountKeys
count()-query keys
Definition: QueryCompiler.h:82
const char * yytext() const
flex convenience wrapper
Definition: QueryCompiler.h:172
list< ddcObject * > ddcObjectList
Definition: ddcObject.h:28
list< string > m_Labels
a special slot for YACC (which contains all string leaves of the parse tree)
Definition: QueryCompiler.h:145
bool m_KeepLexerComments
enable collection of lexer comments in m_pQuery->m_Options->m_LexerComments (default=false) ...
Definition: QueryCompiler.h:148
root-level query options (filters and flags)
Definition: QueryOptions.h:39
bool m_bSatisfiable
is query satisfiable? (default is true, may be set to false by CheckSatisfiable()) ...
Definition: QueryCompiler.h:76
string m_RegexReplacement
temporary for regex replacement strings (used by count-keys)
Definition: QueryCompiler.h:130
string * newRegex(const string &pattern, const string &modifiers=string(""), bool isMatch=true)
Definition: QueryCompiler.cpp:313
int m_FilterOffset
temporary for filter offsets (#left, #right, #mid; default=0:any)
Definition: QueryCompiler.h:124
CQuery * SetQuery(CQuery *qp)
Definition: QueryCompiler.cpp:337
string QueryToJson(void)
return a json string form for the current query; wraps m_pQuery->toJson() + m_pQuery->optionsToJson()...
Definition: QueryCompiler.cpp:399
Definition: QueryCompiler.h:50
CQueryCompiler(const CConcHolder *pHolder=NULL)
default constructor
Definition: QueryCompiler.cpp:64
vector< string > m_MorphItems
temporary for [m1,m2,...,mN] morph-pattern queries
Definition: QueryCompiler.h:109
unsigned char BYTE
Definition: utilit.h:94
int m_CurrentNodeIndex
current node index to set CQueryTokenNode::m_NodeIndex
Definition: QueryCompiler.h:139
size_t m_qCountSample
count()-query sample size (overrides count-query m_dtr->m_Options->m_Limit if set) ...
Definition: QueryCompiler.h:85
bool Compile()
Definition: QueryCompiler.h:220
void barf(const std::string &msg) const
error reporting: throws a errParseError exception
Definition: QueryCompiler.cpp:409
CQueryOptions m_qOptions
query options (adopted into top-level m_pQuery on SetQuery())
Definition: QueryCompiler.h:70
CQFPrune * newPruneFilter(HitSortEnum ftype, const string &limitStr="-1")
Definition: QueryCompiler.cpp:359
string yystring() const
flex convenience wrapper
Definition: QueryCompiler.h:178
virtual ddcObjectList Children() const
Definition: QueryCompiler.cpp:431
bool Evaluate()
evaluate parse tree bottom-up; wrapper for Evaluate(m_pQuery)
Definition: QueryCompiler.h:224
string m_FilterLB
temporary for filter lower bound (#less_by_xyz, #greater_by_xyz)
Definition: QueryCompiler.h:115
string m_RegexPattern
temporary for regex patterns
Definition: QueryCompiler.h:127
static const size_t m_MaxContextSentencesCount
maximum context size for #cntxt operator
Definition: QueryCompiler.h:57
virtual string jsonData()
Definition: QueryCompiler.h:279
utility struct for iterating over hit occurrences
Definition: QCount.h:436
HitSortEnum
Definition: ConcCommon.h:119
string m_FilterUB
temporary for filter upper bound (#less_by_xyz, #greater_by_xyz)
Definition: QueryCompiler.h:118
Truly abstract (index-independent) representation of a parsed query Should eventually replace old ad...
Definition: Query.h:36
string m_qCountHi
count()-query upper bound
Definition: QueryCompiler.h:97
set< string > m_WordSet
temporary for $i={w1,w2,...,wN} word-set queries
Definition: QueryCompiler.h:103
size_t m_Limit
query limit (anything but 0 (default) overrides CConcHolder arguments)
Definition: QueryCompiler.h:73