variable or function name start with number is causing syntax error
cuichenli opened this issue · 1 comments
The code I tried:
(
$0f = true;
$0f
)
as the following screenshots:
However, this can correctly compile and execute on https://try.jsonata.org/
Our definition of variable and function ID requires starting with a letter or underscore:
VAR_ID : '$' ID ;
ID
: [\p{L}_] [\p{L}0-9_]*
| BACK_QUOTE ~[`]* BACK_QUOTE;
There is a test case (token-conversion/case002.json) from jsonata.org that fails if I enable numbers for the first letter (you can experiment using "aa" as the first label and then finding $.aa
, or using "a7" as the first label and then finding $.a7
, but $.7a
fails.
{
"expr": "$.7a",
"data": {"7a":33, "a7":55, "7":88},
"bindings": {},
"code": "S0201"
}
I don't think we plan to fix this and question whether jsonata.org should tighten their checking.
We use a different approach for parsing than jsonata.org so will have slight differences.
Please close if you agree you can use different variable names starting with a letter.