%{ #ifndef FLEXFIX #define FLEXFIX YY_sparqlParser_STYPE *val #define FLEXFIX2 val #endif #include "sparqlParser.h" #define YY_INPUT(buf,result,max_size) \ if ( (result = LexerReadStatic( (char *) buf, max_size )) < 0 ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); %} IT_BASE "BASE" IT_PREFIX "PREFIX" IT_SELECT "SELECT" IT_DISTINCT "DISTINCT" GT_TIMES "*" IT_CONSTRUCT "CONSTRUCT" IT_DESCRIBE "DESCRIBE" IT_ASK "ASK" IT_FROM "FROM" IT_NAMED "NAMED" IT_WHERE "WHERE" IT_ORDER "ORDER" IT_BY "BY" IT_ASC "ASC" IT_DESC "DESC" IT_LIMIT "LIMIT" IT_OFFSET "OFFSET" GT_LCURLEY "{" GT_RCURLEY "}" GT_DOT "." IT_OPTIONAL "OPTIONAL" IT_GRAPH "GRAPH" IT_UNION "UNION" IT_FILTER "FILTER" GT_COMMA "," GT_LPAREN "(" GT_RPAREN ")" GT_SEMI ";" IT_a "a" GT_LBRACKET "\[" GT_RBRACKET "\]" GT_MINUS "-" GT_PLUS "+" GT_OR "||" GT_AND "&&" GT_EQUAL "=" GT_NEQUAL "!=" GT_LT "<" GT_GT ">" GT_LE "<=" GT_GE ">=" GT_DIVIDE "/" GT_NOT "!" IT_STR "STR" IT_LANG "LANG" IT_LANGMATCHES "LANGMATCHES" IT_DATATYPE "DATATYPE" IT_BOUND "BOUND" IT_isIRI "isIRI" IT_isURI "isURI" IT_isBLANK "isBLANK" IT_isLITERAL "isLITERAL" IT_REGEX "REGEX" GT_DTYPE "^^" IT_true "true" IT_false "false" Q_IRI_REF "<"(([!-&(-;=?-\]_a-z~-\x7F]|([\xC2-\xDF][\x80-\xBF])|(\xE0([\xA0-\xBF][\x80-\xBF]))|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|(\xED([\x80-\x9F][\x80-\xBF]))|([\xEE-\xEF][\x80-\xBF][\x80-\xBF])|(\xF0([\x90-\xBF][\x80-\xBF][\x80-\xBF]))|([\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF])|(\xF4([\x80-\x8E][\x80-\xBF][\x80-\xBF])|(\x8F([\x80-\xBE][\x80-\xBF])|(\xBF[\x80-\xBE])))]))*">" LANGTAG "@"([A-Za-z])+(("-"([0-9A-Za-z])+))* INTEGER ([0-9])+ DECIMAL (([0-9])+"."([0-9])*)|("."([0-9])+) EXPONENT [Ee]([+-])?([0-9])+ DOUBLE (([0-9])+"."([0-9])*({EXPONENT}))|(("."(([0-9]))+({EXPONENT}))|((([0-9]))+({EXPONENT}))) ECHAR "\\"[\"'\\bfnrt] HEX ([0-9])|(([A-F])|([a-f])) UCHAR "\\"(("u"({HEX})({HEX})({HEX})({HEX}))|("U"({HEX})({HEX})({HEX})({HEX})({HEX})({HEX})({HEX})({HEX}))) STRING_LITERAL1 "'"(((([\x00-\t\x0B-\x0C\x0E-&(-\[\]-\x7F]|([\xC2-\xDF][\x80-\xBF])|(\xE0([\xA0-\xBF][\x80-\xBF]))|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|(\xED([\x80-\x9F][\x80-\xBF]))|([\xEE-\xEF][\x80-\xBF][\x80-\xBF])|(\xF0([\x90-\xBF][\x80-\xBF][\x80-\xBF]))|([\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF])|(\xF4([\x80-\x8E][\x80-\xBF][\x80-\xBF])|(\x8F([\x80-\xBE][\x80-\xBF])|(\xBF[\x80-\xBE])))]))|((({ECHAR}))|(({UCHAR})))))*"'" STRING_LITERAL2 "\""(((([\x00-\t\x0B-\x0C\x0E-!#-\[\]-\x7F]|([\xC2-\xDF][\x80-\xBF])|(\xE0([\xA0-\xBF][\x80-\xBF]))|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|(\xED([\x80-\x9F][\x80-\xBF]))|([\xEE-\xEF][\x80-\xBF][\x80-\xBF])|(\xF0([\x90-\xBF][\x80-\xBF][\x80-\xBF]))|([\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF])|(\xF4([\x80-\x8E][\x80-\xBF][\x80-\xBF])|(\x8F([\x80-\xBE][\x80-\xBF])|(\xBF[\x80-\xBE])))]))|((({ECHAR}))|(({UCHAR})))))*"\"" STRING_LITERAL_LONG1 "'''"((((("'")|("''")))?(([\x00-&(-\[\]-\x7F]|([\xC2-\xDF][\x80-\xBF])|(\xE0([\xA0-\xBF][\x80-\xBF]))|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|(\xED([\x80-\x9F][\x80-\xBF]))|([\xEE-\xEF][\x80-\xBF][\x80-\xBF])|(\xF0([\x90-\xBF][\x80-\xBF][\x80-\xBF]))|([\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF])|(\xF4([\x80-\x8E][\x80-\xBF][\x80-\xBF])|(\x8F([\x80-\xBE][\x80-\xBF])|(\xBF[\x80-\xBE])))])|((({ECHAR}))|(({UCHAR}))))))*"'''" STRING_LITERAL_LONG2 "\"\"\""((((("\"")|("\"\"")))?(([\x00-!#-\[\]-\x7F]|([\xC2-\xDF][\x80-\xBF])|(\xE0([\xA0-\xBF][\x80-\xBF]))|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|(\xED([\x80-\x9F][\x80-\xBF]))|([\xEE-\xEF][\x80-\xBF][\x80-\xBF])|(\xF0([\x90-\xBF][\x80-\xBF][\x80-\xBF]))|([\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF])|(\xF4([\x80-\x8E][\x80-\xBF][\x80-\xBF])|(\x8F([\x80-\xBE][\x80-\xBF])|(\xBF[\x80-\xBE])))])|((({ECHAR}))|(({UCHAR}))))))*"\"\"\"" WS (" ")|(("\t")|(("\r")|("\n"))) NIL "("(({WS}))*")" ANON "\["(({WS}))*"\]" NCCHAR1p ([A-Z])|(([a-z])|(((\xC3[\x80-\x96]))|(((\xC3[\x98-\xB6]))|(((\xC3[\xB8-\xBF])|([\xC4-\xCB][\x80-\xBF]))|(((\xCD[\xB0-\xBD]))|(((\xCD\xBF)|([\xCE-\xDF][\x80-\xBF])|(\xE0([\xA0-\xBF][\x80-\xBF]))|(\xE1([\x80-\xBF][\x80-\xBF])))|(((\xE2(\x80[\x8C-\x8D])))|(((\xE2(\x81[\xB0-\xBF])|([\x82-\x85][\x80-\xBF])|(\x86[\x80-\x8F])))|(((\xE2([\xB0-\xBE][\x80-\xBF])|(\xBF[\x80-\xAF])))|(((\xE3(\x80[\x81-\xBF])|([\x81-\xBF][\x80-\xBF]))|([\xE4-\xEC][\x80-\xBF][\x80-\xBF])|([\xE1-\xEC][\x80-\xBF][\x80-\xBF])|(\xED([\x80-\x9F][\x80-\xBF])))|(((\xEF([\xA4-\xB6][\x80-\xBF])|(\xB7[\x80-\x8F])))|(((\xEF(\xB7[\xB0-\xBF])|([\xB8-\xBE][\x80-\xBF])|(\xBF[\x80-\xBD])))|(((\xF0([\x90-\xBF][\x80-\xBF][\x80-\xBF]))|([\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF]))|(({UCHAR}))))))))))))))) NCCHAR1 (({NCCHAR1p}))|("_") VARNAME ((({NCCHAR1}))|([0-9]))(((({NCCHAR1}))|(([0-9])|((\xC2\xB7)|(((\xCD[\x80-\xAF]))|((\xE2(\x80\xBF)|(\x81\x80))))))))* VAR2 "$"({VARNAME}) VAR1 "?"({VARNAME}) NCCHAR (({NCCHAR1}))|(("-")|(([0-9])|((\xC2\xB7)|(((\xCD[\x80-\xAF]))|((\xE2(\x80\xBF)|(\x81\x80))))))) NCNAME_PREFIX ({NCCHAR1p})(((((({NCCHAR}))|(".")))*({NCCHAR})))? QNAME_NS (({NCNAME_PREFIX}))?":" NCNAME ({NCCHAR1})(((((({NCCHAR}))|(".")))*({NCCHAR})))? BLANK_NODE_LABEL "_:"({NCNAME}) QNAME (({NCNAME_PREFIX}))?":"(({NCNAME}))? PASSED_TOKENS ([\t\n\r ])+ %% {PASSED_TOKENS} {IT_BASE} {return sparqlParser::IT_BASE;} {IT_PREFIX} {val->buf = new Buf(yytext); return sparqlParser::IT_PREFIX;} {IT_SELECT} {return sparqlParser::IT_SELECT;} {IT_DISTINCT} {val->buf = new Buf(yytext); return sparqlParser::IT_DISTINCT;} {GT_TIMES} {val->buf = new Buf(yytext); return sparqlParser::GT_TIMES;} {IT_CONSTRUCT} {val->buf = new Buf(yytext); return sparqlParser::IT_CONSTRUCT;} {IT_DESCRIBE} {val->buf = new Buf(yytext); return sparqlParser::IT_DESCRIBE;} {IT_ASK} {val->buf = new Buf(yytext); return sparqlParser::IT_ASK;} {IT_FROM} {val->buf = new Buf(yytext); return sparqlParser::IT_FROM;} {IT_NAMED} {val->buf = new Buf(yytext); return sparqlParser::IT_NAMED;} {IT_WHERE} {val->buf = new Buf(yytext); return sparqlParser::IT_WHERE;} {IT_ORDER} {val->buf = new Buf(yytext); return sparqlParser::IT_ORDER;} {IT_BY} {val->buf = new Buf(yytext); return sparqlParser::IT_BY;} {IT_ASC} {val->buf = new Buf(yytext); return sparqlParser::IT_ASC;} {IT_DESC} {val->buf = new Buf(yytext); return sparqlParser::IT_DESC;} {IT_LIMIT} {val->buf = new Buf(yytext); return sparqlParser::IT_LIMIT;} {IT_OFFSET} {val->buf = new Buf(yytext); return sparqlParser::IT_OFFSET;} {GT_LCURLEY} {val->buf = new Buf(yytext); return sparqlParser::GT_LCURLEY;} {GT_RCURLEY} {val->buf = new Buf(yytext); return sparqlParser::GT_RCURLEY;} {GT_DOT} {val->buf = new Buf(yytext); return sparqlParser::GT_DOT;} {IT_OPTIONAL} {val->buf = new Buf(yytext); return sparqlParser::IT_OPTIONAL;} {IT_GRAPH} {val->buf = new Buf(yytext); return sparqlParser::IT_GRAPH;} {IT_UNION} {val->buf = new Buf(yytext); return sparqlParser::IT_UNION;} {IT_FILTER} {val->buf = new Buf(yytext); return sparqlParser::IT_FILTER;} {GT_COMMA} {val->buf = new Buf(yytext); return sparqlParser::GT_COMMA;} {GT_LPAREN} {val->buf = new Buf(yytext); return sparqlParser::GT_LPAREN;} {GT_RPAREN} {val->buf = new Buf(yytext); return sparqlParser::GT_RPAREN;} {GT_SEMI} {val->buf = new Buf(yytext); return sparqlParser::GT_SEMI;} {IT_a} {val->buf = new Buf(yytext); return sparqlParser::IT_a;} {GT_LBRACKET} {val->buf = new Buf(yytext); return sparqlParser::GT_LBRACKET;} {GT_RBRACKET} {val->buf = new Buf(yytext); return sparqlParser::GT_RBRACKET;} {GT_MINUS} {val->buf = new Buf(yytext); return sparqlParser::GT_MINUS;} {GT_PLUS} {val->buf = new Buf(yytext); return sparqlParser::GT_PLUS;} {GT_OR} {val->buf = new Buf(yytext); return sparqlParser::GT_OR;} {GT_AND} {val->buf = new Buf(yytext); return sparqlParser::GT_AND;} {GT_EQUAL} {val->buf = new Buf(yytext); return sparqlParser::GT_EQUAL;} {GT_NEQUAL} {val->buf = new Buf(yytext); return sparqlParser::GT_NEQUAL;} {GT_LT} {val->buf = new Buf(yytext); return sparqlParser::GT_LT;} {GT_GT} {val->buf = new Buf(yytext); return sparqlParser::GT_GT;} {GT_LE} {val->buf = new Buf(yytext); return sparqlParser::GT_LE;} {GT_GE} {val->buf = new Buf(yytext); return sparqlParser::GT_GE;} {GT_DIVIDE} {val->buf = new Buf(yytext); return sparqlParser::GT_DIVIDE;} {GT_NOT} {val->buf = new Buf(yytext); return sparqlParser::GT_NOT;} {IT_STR} {val->buf = new Buf(yytext); return sparqlParser::IT_STR;} {IT_LANG} {val->buf = new Buf(yytext); return sparqlParser::IT_LANG;} {IT_LANGMATCHES} {val->buf = new Buf(yytext); return sparqlParser::IT_LANGMATCHES;} {IT_DATATYPE} {val->buf = new Buf(yytext); return sparqlParser::IT_DATATYPE;} {IT_BOUND} {val->buf = new Buf(yytext); return sparqlParser::IT_BOUND;} {IT_isIRI} {val->buf = new Buf(yytext); return sparqlParser::IT_isIRI;} {IT_isURI} {val->buf = new Buf(yytext); return sparqlParser::IT_isURI;} {IT_isBLANK} {val->buf = new Buf(yytext); return sparqlParser::IT_isBLANK;} {IT_isLITERAL} {val->buf = new Buf(yytext); return sparqlParser::IT_isLITERAL;} {IT_REGEX} {val->buf = new Buf(yytext); return sparqlParser::IT_REGEX;} {GT_DTYPE} {val->buf = new Buf(yytext); return sparqlParser::GT_DTYPE;} {IT_true} {val->buf = new Buf(yytext); return sparqlParser::IT_true;} {IT_false} {val->buf = new Buf(yytext); return sparqlParser::IT_false;} {Q_IRI_REF} {val->lex_str = get_token(1, 1); return sparqlParser::Q_IRI_REF;} {QNAME_NS} {val->lex_str = get_token(1, 0); return sparqlParser::QNAME_NS;} {QNAME} {val->lex_str = get_token(0, 0); return sparqlParser::QNAME;} {BLANK_NODE_LABEL} {val->lex_str = get_token(2, 0); return sparqlParser::BLANK_NODE_LABEL;} {VAR1} {val->lex_str = get_token(1, 0); return sparqlParser::VAR1;} {VAR2} {val->lex_str = get_token(1, 0); return sparqlParser::VAR2;} {LANGTAG} {val->lex_str = get_token(0, 0); return sparqlParser::LANGTAG;} {INTEGER} {val->lex_str = get_token(0, 0); return sparqlParser::INTEGER;} {DECIMAL} {val->lex_str = get_token(0, 0); return sparqlParser::DECIMAL;} {DOUBLE} {val->lex_str = get_token(0, 0); return sparqlParser::DOUBLE;} {STRING_LITERAL1} {val->lex_str = get_token(1, 1); return sparqlParser::STRING_LITERAL1;} {STRING_LITERAL2} {val->lex_str = get_token(1, 1); return sparqlParser::STRING_LITERAL2;} {STRING_LITERAL_LONG1} {val->lex_str = get_token(1, 1); return sparqlParser::STRING_LITERAL_LONG1;} {STRING_LITERAL_LONG2} {val->lex_str = get_token(1, 1); return sparqlParser::STRING_LITERAL_LONG2;} {NIL} {val->buf = new Buf(yytext); return sparqlParser::NIL;} {ANON} {val->buf = new Buf(yytext); return sparqlParser::ANON;} <> { yyterminate();} %% int yywrap() { return(1); } int sparqlFlexLexer::LexerReadStatic( char* buf, int max_size ) { char** cur = yyptr; char* start = *cur; #if 0 for (; **cur && max_size > 0; (*cur)++, buf++) { *buf = **cur; max_size--; } #else if (**cur && max_size > 0) { *buf = **cur; (*cur)++, buf++; } #endif return *cur - start; } sparqlFlexLexer::sparqlFlexLexer( THD *thd, char** ptr) { this->thd = thd; yyptr = ptr; yyin = NULL; yyout = NULL; yy_c_buf_p = 0; yy_init = 1; yy_start = 0; yy_flex_debug = 0; yylineno = 1; // this will only get updated if %option yylineno yy_did_buffer_switch_on_eof = 0; yy_looking_for_trail_begin = 0; yy_more_flag = 0; yy_more_len = 0; yy_more_offset = yy_prev_more_offset = 0; yy_start_stack_ptr = yy_start_stack_depth = 0; yy_start_stack = 0; yy_current_buffer = 0; #ifdef YY_USES_REJECT yy_state_buf = new yy_state_type[YY_BUF_SIZE + 2]; #else yy_state_buf = 0; #endif } LEX_STRING sparqlFlexLexer::get_token(size_t skip, size_t trail) { LEX_STRING tmp; tmp.length = yyleng - skip - trail; tmp.str = (char*) thd->strmake((char*) yytext + skip, tmp.length); return tmp; }