Thanks for the wonderful work, but I have some questions:
1.
what's meaning of
(?-1)? reference in the opposite direction?
And what about
q2 == "*" ?
And it doesn't need to escaped { } [ + in
[^{}] ,
[^[\]] ,
([+\-]?)?
2.
if the object string includes a ".", how to refer to it? For instance:
Code:
js = {"a.b.c":123}
3.
Quote:
z += p + StrLen(x2) - 2
should be
Quote:
z += p + StrLen(x2) + 2
4.
Quote:
If (!p := RegExMatch(j, "(?<!\\)(""|')([^\1]+?)(?<!\\)(?-1)\s*:\s*((\{(?:[^\{\}]++|(?-1))*\})|(\[(?:[^\[\]]++|(?-1))*\])|"
. "(?<!\\)(""|')[^\7]*?(?<!\\)(?-1)|[+\-]?\d+(?:\.\d*)?|true|false|null?)\s*(?:,|$|\})", x, p))
The red part should be [^\7] or [^\6]?
5. There're a lot of problems about array such as that it can get but can't set the value of array correctly.
Do you have a plan to update this function? If the parsing can be improved, then AHK will own a powerful and flexible function about associative array or table like LUA's.