mirror of
https://github.com/SecurityBrewery/catalyst.git
synced 2026-04-26 20:47:46 +02:00
Release catalyst
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 by Bart Kiers
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||
* associated documentation files (the "Software"), to deal in the Software without restriction,
|
||||
* including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all copies or
|
||||
* substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
||||
* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Project : sqlite-parser; an ANTLR4 grammar for SQLite https://github.com/bkiers/sqlite-parser
|
||||
* Developed by:
|
||||
* Bart Kiers, bart@big-o.nl
|
||||
* Martin Mirchev, marti_2203@abv.bg
|
||||
* Mike Lische, mike@lischke-online.de
|
||||
*/
|
||||
|
||||
// $antlr-format alignTrailingComments on, columnLimit 130, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments off
|
||||
// $antlr-format useTab off, allowShortRulesOnASingleLine off, allowShortBlocksOnASingleLine on, alignSemicolons ownLine
|
||||
|
||||
parser grammar CAQLParser;
|
||||
|
||||
options {
|
||||
tokenVocab = CAQLLexer;
|
||||
}
|
||||
|
||||
parse: expression EOF
|
||||
;
|
||||
|
||||
expression:
|
||||
value_literal
|
||||
| reference
|
||||
| operator_unary
|
||||
| expression (T_PLUS|T_MINUS) expression
|
||||
| expression (T_TIMES|T_DIV|T_MOD) expression
|
||||
| expression T_RANGE expression
|
||||
| expression (T_LT|T_GT|T_LE|T_GE) expression
|
||||
| expression T_NOT? T_IN expression
|
||||
| expression (T_EQ|T_NE) expression
|
||||
| expression (T_ALL|T_ANY|T_NONE) eq_op=(T_EQ|T_NE|T_LT|T_GT|T_LE|T_GE|T_IN) expression
|
||||
| expression (T_ALL|T_ANY|T_NONE) T_NOT T_IN expression
|
||||
| expression T_NOT? (T_LIKE|T_REGEX_MATCH|T_REGEX_NON_MATCH) expression
|
||||
| expression T_AND expression
|
||||
| expression T_OR expression
|
||||
| expression T_QUESTION expression T_COLON expression
|
||||
| expression T_QUESTION T_COLON expression
|
||||
;
|
||||
|
||||
operator_unary: (
|
||||
T_PLUS expression
|
||||
| T_MINUS expression
|
||||
| T_NOT expression
|
||||
);
|
||||
|
||||
reference:
|
||||
T_STRING
|
||||
| compound_value
|
||||
| function_call
|
||||
| T_OPEN expression T_CLOSE
|
||||
| reference DOT T_STRING
|
||||
| reference T_ARRAY_OPEN expression T_ARRAY_CLOSE
|
||||
;
|
||||
|
||||
compound_value: (
|
||||
array
|
||||
| object
|
||||
);
|
||||
|
||||
function_call: (
|
||||
T_STRING T_OPEN expression? (T_COMMA expression)*? T_COMMA? T_CLOSE
|
||||
);
|
||||
|
||||
value_literal: (
|
||||
T_QUOTED_STRING
|
||||
| T_INT
|
||||
| T_FLOAT
|
||||
| T_NULL
|
||||
| T_TRUE
|
||||
| T_FALSE
|
||||
);
|
||||
|
||||
array:(
|
||||
T_ARRAY_OPEN expression? (T_COMMA expression)*? T_COMMA? T_ARRAY_CLOSE
|
||||
);
|
||||
|
||||
object:
|
||||
T_OBJECT_OPEN object_element? (T_COMMA object_element)* T_COMMA? T_OBJECT_CLOSE
|
||||
;
|
||||
|
||||
object_element:(
|
||||
T_STRING
|
||||
| object_element_name T_COLON expression
|
||||
| T_ARRAY_OPEN expression T_ARRAY_CLOSE T_COLON expression
|
||||
);
|
||||
|
||||
object_element_name:(
|
||||
T_STRING
|
||||
| T_QUOTED_STRING
|
||||
);
|
||||
Reference in New Issue
Block a user