Make query parser more strict and improve display of errors

This commit is contained in:
Guillaume Gomez 2022-01-09 15:12:46 +01:00
parent 264064df36
commit 99d552092c
7 changed files with 243 additions and 142 deletions

View file

@ -1,4 +1,21 @@
const QUERY = ['<"P">', '"P" "P"', 'P "P"', '"p" p', '"const": p'];
const QUERY = [
'<"P">',
'"P" "P"',
'P "P"',
'"p" p',
'"const": p',
"<:a>", "<::a>",
"((a))",
"->,a",
"(p -> p",
"::a::b",
"a::::b",
"a::b::",
":a",
"a b:",
"a (b:",
"{:",
];
const PARSED = [
{
@ -51,4 +68,124 @@ const PARSED = [
userQuery: "\"const\": p",
error: "You cannot use quotes on type filter",
},
{
args: [],
elems: [],
foundElems: 0,
original: "<:a>",
returned: [],
typeFilter: -1,
userQuery: "<:a>",
error: "Unexpected `:` after `<`",
},
{
args: [],
elems: [],
foundElems: 0,
original: "<::a>",
returned: [],
typeFilter: -1,
userQuery: "<::a>",
error: "Unexpected `::`: paths cannot start with `::`",
},
{
args: [],
elems: [],
foundElems: 0,
original: "((a))",
returned: [],
typeFilter: -1,
userQuery: "((a))",
error: "Unexpected `(` after `(`",
},
{
args: [],
elems: [],
foundElems: 0,
original: "->,a",
returned: [],
typeFilter: -1,
userQuery: "->,a",
error: "Unexpected `,` after `->`",
},
{
args: [],
elems: [],
foundElems: 0,
original: "(p -> p",
returned: [],
typeFilter: -1,
userQuery: "(p -> p",
error: "Unexpected `-` after `(`",
},
{
args: [],
elems: [],
foundElems: 0,
original: "::a::b",
returned: [],
typeFilter: -1,
userQuery: "::a::b",
error: "Paths cannot start with `::`",
},
{
args: [],
elems: [],
foundElems: 0,
original: "a::::b",
returned: [],
typeFilter: -1,
userQuery: "a::::b",
error: "Unexpected `::::`",
},
{
args: [],
elems: [],
foundElems: 0,
original: "a::b::",
returned: [],
typeFilter: -1,
userQuery: "a::b::",
error: "Paths cannot end with `::`",
},
{
args: [],
elems: [],
foundElems: 0,
original: ":a",
returned: [],
typeFilter: -1,
userQuery: ":a",
error: "Expected type filter before `:`",
},
{
args: [],
elems: [],
foundElems: 0,
original: "a b:",
returned: [],
typeFilter: -1,
userQuery: "a b:",
error: "Unexpected `:`",
},
{
args: [],
elems: [],
foundElems: 0,
original: "a (b:",
returned: [],
typeFilter: -1,
userQuery: "a (b:",
error: "Unexpected `:` after `(`",
},
{
args: [],
elems: [],
foundElems: 0,
original: "{:",
returned: [],
typeFilter: -1,
userQuery: "{:",
error: "Unknown type filter `{`",
},
];