|
@@ -17,6 +17,7 @@
|
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
|
// along with iTop. If not, see <http://www.gnu.org/licenses/>
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* OQL syntax analyzer, to be used prior to run the lexical analyzer
|
|
|
*
|
|
@@ -119,6 +120,11 @@ class OQLLexerRaw
|
|
|
'/\G-/ ',
|
|
|
'/\GAND/ ',
|
|
|
'/\GOR/ ',
|
|
|
+ '/\G\\|/ ',
|
|
|
+ '/\G&/ ',
|
|
|
+ '/\G\\^/ ',
|
|
|
+ '/\G<</ ',
|
|
|
+ '/\G>>/ ',
|
|
|
'/\G,/ ',
|
|
|
'/\G\\(/ ',
|
|
|
'/\G\\)/ ',
|
|
@@ -168,7 +174,8 @@ class OQLLexerRaw
|
|
|
'/\GABOVE STRICT/ ',
|
|
|
'/\GNOT ABOVE/ ',
|
|
|
'/\GNOT ABOVE STRICT/ ',
|
|
|
- '/\G(0x[0-9a-fA-F]+|[0-9]+)/ ',
|
|
|
+ '/\G(0x[0-9a-fA-F]+)/ ',
|
|
|
+ '/\G([0-9]+)/ ',
|
|
|
'/\G\"([^\\\\\"]|\\\\\"|\\\\\\\\)*\"|'.chr(94).chr(39).'([^\\\\'.chr(39).']|\\\\'.chr(39).'|\\\\\\\\)*'.chr(39).'/ ',
|
|
|
'/\G([_a-zA-Z][_a-zA-Z0-9]*|`[^`]+`)/ ',
|
|
|
'/\G:([_a-zA-Z][_a-zA-Z0-9]*->[_a-zA-Z][_a-zA-Z0-9]*|[_a-zA-Z][_a-zA-Z0-9]*)/ ',
|
|
@@ -333,271 +340,301 @@ class OQLLexerRaw
|
|
|
function yy_r1_13($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::COMA;
|
|
|
+ $this->token = OQLParser::BITWISE_OR;
|
|
|
}
|
|
|
function yy_r1_14($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::PAR_OPEN;
|
|
|
+ $this->token = OQLParser::BITWISE_AND;
|
|
|
}
|
|
|
function yy_r1_15($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::PAR_CLOSE;
|
|
|
+ $this->token = OQLParser::BITWISE_XOR;
|
|
|
}
|
|
|
function yy_r1_16($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::REGEXP;
|
|
|
+ $this->token = OQLParser::BITWISE_LEFT_SHIFT;
|
|
|
}
|
|
|
function yy_r1_17($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::EQ;
|
|
|
+ $this->token = OQLParser::BITWISE_RIGHT_SHIFT;
|
|
|
}
|
|
|
function yy_r1_18($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::NOT_EQ;
|
|
|
+ $this->token = OQLParser::COMA;
|
|
|
}
|
|
|
function yy_r1_19($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::GT;
|
|
|
+ $this->token = OQLParser::PAR_OPEN;
|
|
|
}
|
|
|
function yy_r1_20($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::LT;
|
|
|
+ $this->token = OQLParser::PAR_CLOSE;
|
|
|
}
|
|
|
function yy_r1_21($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::GE;
|
|
|
+ $this->token = OQLParser::REGEXP;
|
|
|
}
|
|
|
function yy_r1_22($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::LE;
|
|
|
+ $this->token = OQLParser::EQ;
|
|
|
}
|
|
|
function yy_r1_23($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::LIKE;
|
|
|
+ $this->token = OQLParser::NOT_EQ;
|
|
|
}
|
|
|
function yy_r1_24($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::NOT_LIKE;
|
|
|
+ $this->token = OQLParser::GT;
|
|
|
}
|
|
|
function yy_r1_25($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::IN;
|
|
|
+ $this->token = OQLParser::LT;
|
|
|
}
|
|
|
function yy_r1_26($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::NOT_IN;
|
|
|
+ $this->token = OQLParser::GE;
|
|
|
}
|
|
|
function yy_r1_27($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::INTERVAL;
|
|
|
+ $this->token = OQLParser::LE;
|
|
|
}
|
|
|
function yy_r1_28($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_IF;
|
|
|
+ $this->token = OQLParser::LIKE;
|
|
|
}
|
|
|
function yy_r1_29($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_ELT;
|
|
|
+ $this->token = OQLParser::NOT_LIKE;
|
|
|
}
|
|
|
function yy_r1_30($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_COALESCE;
|
|
|
+ $this->token = OQLParser::IN;
|
|
|
}
|
|
|
function yy_r1_31($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_ISNULL;
|
|
|
+ $this->token = OQLParser::NOT_IN;
|
|
|
}
|
|
|
function yy_r1_32($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_CONCAT;
|
|
|
+ $this->token = OQLParser::INTERVAL;
|
|
|
}
|
|
|
function yy_r1_33($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_SUBSTR;
|
|
|
+ $this->token = OQLParser::F_IF;
|
|
|
}
|
|
|
function yy_r1_34($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_TRIM;
|
|
|
+ $this->token = OQLParser::F_ELT;
|
|
|
}
|
|
|
function yy_r1_35($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_DATE;
|
|
|
+ $this->token = OQLParser::F_COALESCE;
|
|
|
}
|
|
|
function yy_r1_36($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_DATE_FORMAT;
|
|
|
+ $this->token = OQLParser::F_ISNULL;
|
|
|
}
|
|
|
function yy_r1_37($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_CURRENT_DATE;
|
|
|
+ $this->token = OQLParser::F_CONCAT;
|
|
|
}
|
|
|
function yy_r1_38($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_NOW;
|
|
|
+ $this->token = OQLParser::F_SUBSTR;
|
|
|
}
|
|
|
function yy_r1_39($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_TIME;
|
|
|
+ $this->token = OQLParser::F_TRIM;
|
|
|
}
|
|
|
function yy_r1_40($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_TO_DAYS;
|
|
|
+ $this->token = OQLParser::F_DATE;
|
|
|
}
|
|
|
function yy_r1_41($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_FROM_DAYS;
|
|
|
+ $this->token = OQLParser::F_DATE_FORMAT;
|
|
|
}
|
|
|
function yy_r1_42($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_YEAR;
|
|
|
+ $this->token = OQLParser::F_CURRENT_DATE;
|
|
|
}
|
|
|
function yy_r1_43($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_MONTH;
|
|
|
+ $this->token = OQLParser::F_NOW;
|
|
|
}
|
|
|
function yy_r1_44($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_DAY;
|
|
|
+ $this->token = OQLParser::F_TIME;
|
|
|
}
|
|
|
function yy_r1_45($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_HOUR;
|
|
|
+ $this->token = OQLParser::F_TO_DAYS;
|
|
|
}
|
|
|
function yy_r1_46($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_MINUTE;
|
|
|
+ $this->token = OQLParser::F_FROM_DAYS;
|
|
|
}
|
|
|
function yy_r1_47($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_SECOND;
|
|
|
+ $this->token = OQLParser::F_YEAR;
|
|
|
}
|
|
|
function yy_r1_48($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_DATE_ADD;
|
|
|
+ $this->token = OQLParser::F_MONTH;
|
|
|
}
|
|
|
function yy_r1_49($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_DATE_SUB;
|
|
|
+ $this->token = OQLParser::F_DAY;
|
|
|
}
|
|
|
function yy_r1_50($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_ROUND;
|
|
|
+ $this->token = OQLParser::F_HOUR;
|
|
|
}
|
|
|
function yy_r1_51($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_FLOOR;
|
|
|
+ $this->token = OQLParser::F_MINUTE;
|
|
|
}
|
|
|
function yy_r1_52($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_INET_ATON;
|
|
|
+ $this->token = OQLParser::F_SECOND;
|
|
|
}
|
|
|
function yy_r1_53($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::F_INET_NTOA;
|
|
|
+ $this->token = OQLParser::F_DATE_ADD;
|
|
|
}
|
|
|
function yy_r1_54($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::BELOW;
|
|
|
+ $this->token = OQLParser::F_DATE_SUB;
|
|
|
}
|
|
|
function yy_r1_55($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::BELOW_STRICT;
|
|
|
+ $this->token = OQLParser::F_ROUND;
|
|
|
}
|
|
|
function yy_r1_56($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::NOT_BELOW;
|
|
|
+ $this->token = OQLParser::F_FLOOR;
|
|
|
}
|
|
|
function yy_r1_57($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::NOT_BELOW_STRICT;
|
|
|
+ $this->token = OQLParser::F_INET_ATON;
|
|
|
}
|
|
|
function yy_r1_58($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::ABOVE;
|
|
|
+ $this->token = OQLParser::F_INET_NTOA;
|
|
|
}
|
|
|
function yy_r1_59($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::ABOVE_STRICT;
|
|
|
+ $this->token = OQLParser::BELOW;
|
|
|
}
|
|
|
function yy_r1_60($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::NOT_ABOVE;
|
|
|
+ $this->token = OQLParser::BELOW_STRICT;
|
|
|
}
|
|
|
function yy_r1_61($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::NOT_ABOVE_STRICT;
|
|
|
+ $this->token = OQLParser::NOT_BELOW;
|
|
|
}
|
|
|
function yy_r1_62($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::NUMVAL;
|
|
|
+ $this->token = OQLParser::NOT_BELOW_STRICT;
|
|
|
}
|
|
|
function yy_r1_63($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::STRVAL;
|
|
|
+ $this->token = OQLParser::ABOVE;
|
|
|
}
|
|
|
function yy_r1_64($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::NAME;
|
|
|
+ $this->token = OQLParser::ABOVE_STRICT;
|
|
|
}
|
|
|
function yy_r1_65($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
- $this->token = OQLParser::VARNAME;
|
|
|
+ $this->token = OQLParser::NOT_ABOVE;
|
|
|
}
|
|
|
function yy_r1_66($yy_subpatterns)
|
|
|
{
|
|
|
|
|
|
+ $this->token = OQLParser::NOT_ABOVE_STRICT;
|
|
|
+ }
|
|
|
+ function yy_r1_67($yy_subpatterns)
|
|
|
+ {
|
|
|
+
|
|
|
+ $this->token = OQLParser::HEXVAL;
|
|
|
+ }
|
|
|
+ function yy_r1_68($yy_subpatterns)
|
|
|
+ {
|
|
|
+
|
|
|
+ $this->token = OQLParser::NUMVAL;
|
|
|
+ }
|
|
|
+ function yy_r1_69($yy_subpatterns)
|
|
|
+ {
|
|
|
+
|
|
|
+ $this->token = OQLParser::STRVAL;
|
|
|
+ }
|
|
|
+ function yy_r1_70($yy_subpatterns)
|
|
|
+ {
|
|
|
+
|
|
|
+ $this->token = OQLParser::NAME;
|
|
|
+ }
|
|
|
+ function yy_r1_71($yy_subpatterns)
|
|
|
+ {
|
|
|
+
|
|
|
+ $this->token = OQLParser::VARNAME;
|
|
|
+ }
|
|
|
+ function yy_r1_72($yy_subpatterns)
|
|
|
+ {
|
|
|
+
|
|
|
$this->token = OQLParser::DOT;
|
|
|
}
|
|
|
|