Improve the BNF description a bit and fix some issues

This commit is contained in:
Guillaume Gomez 2022-03-28 16:14:00 +02:00
parent 1f5c4c2b30
commit da829d8d9d
5 changed files with 201 additions and 40 deletions

View file

@ -1,15 +1,14 @@
const QUERY = [
'<P>',
'-> <P>',
'<"P">',
'a<"P">',
'"P" "P"',
'P "P"',
'"p" p',
'"const": p',
"<:a>",
"<::a>",
"a<:a>",
"a<::a>",
"((a))",
"->,a",
"(p -> p",
"::a::b",
"a::::b",
@ -22,6 +21,12 @@ const QUERY = [
"a>bb",
"ab'",
"a->",
'"p" <a>',
'"p" a<a>',
"a,<",
"aaaaa<>b",
"fn:aaaaa<>b",
"->a<>b",
];
const PARSED = [
@ -46,10 +51,10 @@ const PARSED = [
{
elems: [],
foundElems: 0,
original: "<\"P\">",
original: "a<\"P\">",
returned: [],
typeFilter: -1,
userQuery: "<\"p\">",
userQuery: "a<\"p\">",
error: "`\"` cannot be used in generics",
},
{
@ -91,19 +96,19 @@ const PARSED = [
{
elems: [],
foundElems: 0,
original: "<:a>",
original: "a<:a>",
returned: [],
typeFilter: -1,
userQuery: "<:a>",
userQuery: "a<:a>",
error: "Unexpected `:` after `<`",
},
{
elems: [],
foundElems: 0,
original: "<::a>",
original: "a<::a>",
returned: [],
typeFilter: -1,
userQuery: "<::a>",
userQuery: "a<::a>",
error: "Unexpected `::`: paths cannot start with `::`",
},
{
@ -115,15 +120,6 @@ const PARSED = [
userQuery: "((a))",
error: "Unexpected `(`",
},
{
elems: [],
foundElems: 0,
original: "->,a",
returned: [],
typeFilter: -1,
userQuery: "->,a",
error: "Unexpected `,` after `->`",
},
{
elems: [],
foundElems: 0,
@ -232,4 +228,58 @@ const PARSED = [
userQuery: "a->",
error: "Expected at least one item after `->`",
},
{
elems: [],
foundElems: 0,
original: '"p" <a>',
returned: [],
typeFilter: -1,
userQuery: '"p" <a>',
error: "Found generics without a path",
},
{
elems: [],
foundElems: 0,
original: '"p" a<a>',
returned: [],
typeFilter: -1,
userQuery: '"p" a<a>',
error: "You cannot have more than one element if you use quotes",
},
{
elems: [],
foundElems: 0,
original: 'a,<',
returned: [],
typeFilter: -1,
userQuery: 'a,<',
error: 'Found generics without a path',
},
{
elems: [],
foundElems: 0,
original: 'aaaaa<>b',
returned: [],
typeFilter: -1,
userQuery: 'aaaaa<>b',
error: 'Expected `,`, ` `, `:` or `->`, found `b`',
},
{
elems: [],
foundElems: 0,
original: 'fn:aaaaa<>b',
returned: [],
typeFilter: -1,
userQuery: 'fn:aaaaa<>b',
error: 'Expected `,`, ` ` or `->`, found `b`',
},
{
elems: [],
foundElems: 0,
original: '->a<>b',
returned: [],
typeFilter: -1,
userQuery: '->a<>b',
error: 'Expected `,` or ` `, found `b`',
},
];