|
COAR
1.0
COAR - DMS system
|
Module search, describes classes and syntax of search in COAR-DMS. More...
Classes | |
| class | query |
| class | queryContext |
Module search, describes classes and syntax of search in COAR-DMS.
Gramatika mini jazyka COAR-DMS query alebo cquery vo forme zapisu pre [bison|yacc].
query:%token tSELECT tAS tFROM tNOT tIN tIS tASC tDESC tORDERBY tCONTAINS tLIKE %token tNULL tANY tINFOLDER tINTREE tWHERE tOR tAND tASTERISK tBACKSLASH tQUOTE %token tDOUBLEQUOTE tDASH tLEFTBRACKET tRIGHTBRACKET tCOMMA tDOT tSEMICOLON tSCOREFUNCTION %tokentLESSTHAN tMORETHAN tEQUALS tDQUOTEDSTR tQUOTEDSTR tDATE tDATETIME tSTRVAL %token tINTVAL %token tFLOATVAL %token tBOOLVAL %type comp_op table_name correlation_name column_name %type in_value_list literal character_string_literal datetime_literal boolean_literal signed_numeric_literal folder_id %type predicate comparison_predicate in_predicate like_predicate null_predicate text_search_predicate folder_predicate %type bool_term %left tOR %left tAND %left tNOT EXP "e" DIGIT [0-9] DECIMAL "." SIGN "+"|"-" CHAR [a-z]|":" SELECT "SELECT" AS "AS" FROM "FROM" WHERE "WHERE" NOT "NOT" IN "IN" IS "IS" ASC "ASC" DESC "DESC" ORDERBY "ORDER BY" TRUE "TRUE" FALSE "FALSE" AND "AND" OR "OR" CONTAINS "CONTAINS" LIKE "LIKE" NULL "NULL" ANY "ANY" INFOLDER "IN FOLDER" INTREE "IN TREE" SCOREFUNCTION "SCORE()" SPACE [ \t\n] ASTERISK "*" BACKSLASH "\\" QUOTE \' DOUBLEQUOTE \" DASH '-' LEFTBRACKET "(" RIGHTBRACKET ")" COMMA "," DOT "." EQUALS "=" LESSTHAN "<" MORETHAN ">" SEMICOLON ";" ALLOWEDQUOTEDCHARS [^\'] ALLOWEDDQUOTEDCHARS [^\"] /*quotedstrings*/ {QUOTE}{ALLOWEDQUOTEDCHARS}*{QUOTE} { yylval->strval = strdup(yytext); return tQUOTEDSTR; } {DOUBLEQUOTE}{ALLOWEDDQUOTEDCHARS}*{DOUBLEQUOTE} { yylval->strval = strdup(yytext); return tDQUOTEDSTR; } /*numbers*/ {DIGIT}+{DECIMAL}{DIGIT}*{EXP}{SIGN}?{DIGIT}+ { yylval->floatval = atof(yytext); return tFLOATVAL; } {DIGIT}+{DECIMAL}{DIGIT}* { yylval->floatval = atof(yytext); return tFLOATVAL; } {DIGIT}+ { yylval->intval = atoi(yytext); return tINTVAL; } /*keywords*/ {SCOREFUNCTION} { return tSCOREFUNCTION; } {ORDERBY} {return tORDERBY;} {WHERE} { return tWHERE; } {CONTAINS} { return tCONTAINS; } {INFOLDER} { return tINFOLDER; } {ANY} { return tANY; } {SELECT} { return tSELECT; } {OR} { return tOR; } {AND} { return tAND; } {LIKE} { return tLIKE; } {INTREE} { return tINTREE; } {FROM} { return tFROM;} {NOT} { return tNOT;} {ASC} {return tASC;} {DESC} { return tDESC;} {IN} { return tIN;} {AS} { return tAS;} {IS} { return tIS;} /*keyvalues*/ {TRUE} { yylval->boolval = 1; return tBOOLVAL; } {FALSE} { yylval->boolval = 0; return tBOOLVAL; } {NULL} { return tNULL; } /*chars*/ {ASTERISK} { return tASTERISK; } {DOT} { return tDOT; } {LEFTBRACKET} { return tLEFTBRACKET; } {RIGHTBRACKET} { return tRIGHTBRACKET; } {EQUALS} { yylval->strval = strdup(yytext); return tEQUALS; } {LESSTHAN} { yylval->strval = strdup(yytext); return tLESSTHAN; } {MORETHAN} { yylval->strval = strdup(yytext); return tMORETHAN; } {COMMA} { return tCOMMA; } {SEMICOLON} { return tSEMICOLON; } /*ignorovane znaky*/ {SPACE}+ {} /*vsetko ostatne sa rata ako string*/ {CHAR}+ { yylval->strval = strdup(yytext); return tSTRVAL; }