N°2408 - Fix FromOQL() with NULL

This commit is contained in:
Eric
2019-11-28 11:54:10 +01:00
parent c3c5c56dd8
commit 4798bf2f79
5 changed files with 635 additions and 613 deletions

View File

@@ -179,6 +179,7 @@ class OQLLexerRaw
'/\G(0x[0-9a-fA-F]+)/ ',
'/\G([0-9]+)/ ',
'/\G\"([^\\\\\"]|\\\\\"|\\\\\\\\)*\"|'.chr(94).chr(39).'([^\\\\'.chr(39).']|\\\\'.chr(39).'|\\\\\\\\)*'.chr(39).'/ ',
'/\GNULL/ ',
'/\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]*)/ ',
'/\G\\./ ',
@@ -637,14 +638,19 @@ class OQLLexerRaw
function yy_r1_72($yy_subpatterns)
{
$this->token = OQLParser::NAME;
$this->token = OQLParser::NULL_VAL;
}
function yy_r1_73($yy_subpatterns)
{
$this->token = OQLParser::VARNAME;
$this->token = OQLParser::NAME;
}
function yy_r1_74($yy_subpatterns)
{
$this->token = OQLParser::VARNAME;
}
function yy_r1_75($yy_subpatterns)
{
$this->token = OQLParser::DOT;

View File

@@ -148,6 +148,7 @@ above = "ABOVE"
above_strict = "ABOVE STRICT"
not_above = "NOT ABOVE"
not_above_strict = "NOT ABOVE STRICT"
null_val = "NULL"
//
// WARNING: there seems to be a bug in the Lexer about matching the longest pattern
// when there are alternates in the regexp.
@@ -391,6 +392,9 @@ numval {
strval {
$this->token = OQLParser::STRVAL;
}
null_val {
$this->token = OQLParser::NULL_VAL;
}
name {
$this->token = OQLParser::NAME;
}

File diff suppressed because it is too large Load Diff

View File

@@ -159,9 +159,11 @@ interval_unit(A) ::= F_YEAR(X). { A = X; }
scalar(A) ::= num_scalar(X). { A = X; }
scalar(A) ::= str_scalar(X). { A = X; }
scalar(A) ::= null_scalar(X). { A = X; }
num_scalar(A) ::= num_value(X). { A = new ScalarOqlExpression(X); }
str_scalar(A) ::= str_value(X). { A = new ScalarOqlExpression(X); }
null_scalar(A) ::= NULL_VAL. { A = new ScalarOqlExpression(null); }
field_id(A) ::= name(X). { A = new FieldOqlExpression(X); }
field_id(A) ::= class_name(X) DOT name(Y). { A = new FieldOqlExpression(Y, X); }

View File

@@ -1 +1 @@
2018-08-31
2019-11-28