merge master
This commit is contained in:
commit
3b6ee92224
|
@ -24,6 +24,9 @@
|
||||||
#include <pegtl/analyze.hh>
|
#include <pegtl/analyze.hh>
|
||||||
#include <pegtl/trace.hh>
|
#include <pegtl/trace.hh>
|
||||||
|
|
||||||
|
// String operators (e.g. AND, OR, NOT) can't be followed by [A-z0-9_].
|
||||||
|
#define string_operator_t(s) seq< pegtl_istring_t(s), not_at< identifier_other > >
|
||||||
|
|
||||||
using namespace pegtl;
|
using namespace pegtl;
|
||||||
|
|
||||||
namespace realm {
|
namespace realm {
|
||||||
|
@ -93,11 +96,11 @@ struct group_pred : if_must< one< '(' >, pad< pred, blank >, one< ')' > > {};
|
||||||
struct true_pred : pegtl_istring_t("truepredicate") {};
|
struct true_pred : pegtl_istring_t("truepredicate") {};
|
||||||
struct false_pred : pegtl_istring_t("falsepredicate") {};
|
struct false_pred : pegtl_istring_t("falsepredicate") {};
|
||||||
|
|
||||||
struct not_pre : seq< sor< one< '!' >, pegtl_istring_t("not") > > {};
|
struct not_pre : seq< sor< one< '!' >, string_operator_t("not") > > {};
|
||||||
struct atom_pred : seq< opt< not_pre >, pad< sor< group_pred, true_pred, false_pred, comparison_pred >, blank > > {};
|
struct atom_pred : seq< opt< not_pre >, pad< sor< group_pred, true_pred, false_pred, comparison_pred >, blank > > {};
|
||||||
|
|
||||||
struct and_op : pad< sor< two< '&' >, pegtl_istring_t("and") >, blank > {};
|
struct and_op : pad< sor< two< '&' >, string_operator_t("and") >, blank > {};
|
||||||
struct or_op : pad< sor< two< '|' >, pegtl_istring_t("or") >, blank > {};
|
struct or_op : pad< sor< two< '|' >, string_operator_t("or") >, blank > {};
|
||||||
|
|
||||||
struct or_ext : if_must< or_op, pred > {};
|
struct or_ext : if_must< or_op, pred > {};
|
||||||
struct and_ext : if_must< and_op, pred > {};
|
struct and_ext : if_must< and_op, pred > {};
|
||||||
|
|
|
@ -66,6 +66,9 @@ static std::vector<std::string> valid_queries = {
|
||||||
"!(0=0)",
|
"!(0=0)",
|
||||||
"! (0=0)",
|
"! (0=0)",
|
||||||
"NOT0=0", // keypath NOT0
|
"NOT0=0", // keypath NOT0
|
||||||
|
"NOT0.a=0", // keypath NOT0
|
||||||
|
"NOT0a.b=0", // keypath NOT0a
|
||||||
|
"not-1=1",
|
||||||
"not 0=0",
|
"not 0=0",
|
||||||
"NOT(0=0)",
|
"NOT(0=0)",
|
||||||
"not (0=0)",
|
"not (0=0)",
|
||||||
|
@ -121,6 +124,7 @@ static std::vector<std::string> invalid_queries = {
|
||||||
"(0=0))",
|
"(0=0))",
|
||||||
"! =0",
|
"! =0",
|
||||||
"NOTNOT(0=0)",
|
"NOTNOT(0=0)",
|
||||||
|
"not.a=0",
|
||||||
"(!!0=0)",
|
"(!!0=0)",
|
||||||
"0=0 !",
|
"0=0 !",
|
||||||
|
|
||||||
|
@ -130,7 +134,10 @@ static std::vector<std::string> invalid_queries = {
|
||||||
"a==a &| a==a",
|
"a==a &| a==a",
|
||||||
"a==a && OR a==a",
|
"a==a && OR a==a",
|
||||||
"a==aORa==a",
|
"a==aORa==a",
|
||||||
//"a=1ANDNOT b=2",
|
"a==a ORa==a",
|
||||||
|
"a==a AND==a",
|
||||||
|
"a==a ANDa==a",
|
||||||
|
"a=1ANDNOT b=2",
|
||||||
|
|
||||||
"truepredicate &&",
|
"truepredicate &&",
|
||||||
"truepredicate & truepredicate",
|
"truepredicate & truepredicate",
|
||||||
|
|
Loading…
Reference in New Issue