@ldclabs/kip-lang 0.2.2 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -9
- package/dist/ast.d.ts +52 -2
- package/dist/ast.d.ts.map +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +7 -1
- package/dist/diagnostics.js.map +1 -1
- package/dist/formatter.d.ts +5 -7
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +145 -115
- package/dist/formatter.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lexer.js.map +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +286 -48
- package/dist/parser.js.map +1 -1
- package/dist/semantics.d.ts +13 -0
- package/dist/semantics.d.ts.map +1 -0
- package/dist/semantics.js +228 -0
- package/dist/semantics.js.map +1 -0
- package/dist/token.d.ts +16 -4
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js +31 -12
- package/dist/token.js.map +1 -1
- package/package.json +7 -2
package/dist/lexer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexer.js","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lexer.js","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAElE,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;IAC/B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;AAC5B,CAAC;AAED,MAAM,KAAK;IACD,MAAM,CAAQ;IACd,GAAG,GAAW,CAAC,CAAA;IACf,IAAI,GAAW,CAAC,CAAA;IAChB,MAAM,GAAW,CAAC,CAAA;IAClB,MAAM,GAAY,EAAE,CAAA;IAE5B,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,SAAS,CAAC,GAAG;YACnB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,IAAI,CAAC,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAEO,IAAI;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IACpC,CAAC;IAEO,MAAM,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IAC7C,CAAC;IAEO,OAAO;QACb,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAE,CAAA;QACjC,IAAI,CAAC,GAAG,EAAE,CAAA;QACV,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,EAAE,CAAA;YACX,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACjB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,EAAE,CAAA;QACf,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAEO,SAAS;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAEtB,kCAAkC;QAClC,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,OAAM;QACR,CAAC;QAED,WAAW;QACX,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YACnE,OAAM;QACR,CAAC;QAED,WAAW;QACX,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,WAAW,EAAE,CAAA;YAClB,OAAM;QACR,CAAC;QAED,UAAU;QACV,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,EAAE,CAAA;YACjB,OAAM;QACR,CAAC;QAED,qDAAqD;QACrD,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,UAAU,EAAE,CAAA;YACjB,OAAM;QACR,CAAC;QAED,yBAAyB;QACzB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,EAAE,CAAA;YACnB,OAAM;QACR,CAAC;QAED,kCAAkC;QAClC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,OAAM;QACR,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,OAAM;QACR,CAAC;QAED,0BAA0B;QAC1B,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACpC,OAAM;QACR,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YACvC,OAAM;QACR,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACtC,OAAM;QACR,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACtC,OAAM;QACR,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACrC,OAAM;QACR,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACpC,OAAM;QACR,CAAC;QAED,6BAA6B;QAC7B,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACpC,OAAM;QACR,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACpC,OAAM;QACR,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACtC,OAAM;QACR,CAAC;QAED,+DAA+D;QAC/D,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,aAAa,EAAE,CAAA;gBACpB,OAAM;YACR,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YACvC,OAAM;QACR,CAAC;QAED,kDAAkD;QAClD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACtC,OAAM;QACR,CAAC;QAED,cAAc;QACd,MAAM,QAAQ,GAA8B;YAC1C,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,GAAG,EAAE,SAAS,CAAC,QAAQ;YACvB,GAAG,EAAE,SAAS,CAAC,QAAQ;YACvB,GAAG,EAAE,SAAS,CAAC,KAAK;YACpB,GAAG,EAAE,SAAS,CAAC,GAAG;SACnB,CAAA;QAED,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAE,EAAE,CAAC,CAAC,CAAA;YACrC,OAAM;QACR,CAAC;QAED,oBAAoB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IACnE,CAAC;IAEO,cAAc;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAC5B,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YACtB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC7C,IAAI,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAK;YACP,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,CACZ,SAAS,CAAC,UAAU,EACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAClC,KAAK,EACL,SAAS,EACT,QAAQ,CACT,CAAA;IACH,CAAC;IAEO,WAAW;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAC5B,UAAU;QACV,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;QACD,IAAI,CAAC,SAAS,CACZ,SAAS,CAAC,OAAO,EACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAClC,KAAK,EACL,SAAS,EACT,QAAQ,CACT,CAAA;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,iBAAiB;QAChC,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,iBAAiB;gBAChC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClC,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,oBAAoB;gBACrC,CAAC;YACH,CAAC;iBAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,iBAAiB;gBAChC,IAAI,CAAC,SAAS,CACZ,SAAS,CAAC,MAAM,EAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAClC,KAAK,EACL,SAAS,EACT,QAAQ,CACT,CAAA;gBACD,OAAM;YACR,CAAC;iBAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACvB,iCAAiC;gBACjC,MAAK;YACP,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;QACH,CAAC;QACD,sBAAsB;QACtB,IAAI,CAAC,SAAS,CACZ,SAAS,CAAC,MAAM,EAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAClC,KAAK,EACL,SAAS,EACT,QAAQ,CACT,CAAA;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAE5B,yBAAyB;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;QAED,eAAe;QACf,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,SAAS;YACxB,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAClE,IAAI,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,IACE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC;YAC5C,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;oBACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClC,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAC/C,IAAI,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAClE,IAAI,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,CACZ,SAAS,CAAC,MAAM,EAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAClC,KAAK,EACL,SAAS,EACT,QAAQ,CACT,CAAA;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,SAAS;QAExB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACtE,IAAI,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;YACD,IAAI,CAAC,SAAS,CACZ,SAAS,CAAC,QAAQ,EAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAClC,KAAK,EACL,SAAS,EACT,QAAQ,CACT,CAAA;QACH,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,SAAS;QAExB,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;QACD,IAAI,CAAC,SAAS,CACZ,SAAS,CAAC,SAAS,EACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAClC,KAAK,EACL,SAAS,EACT,QAAQ,CACT,CAAA;IACH,CAAC;IAEO,eAAe;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,SAAS;QAExB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACtE,IAAI,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC;YACD,IAAI,CAAC,SAAS,CACZ,SAAS,CAAC,WAAW,EACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAClC,KAAK,EACL,SAAS,EACT,QAAQ,CACT,CAAA;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAE5B,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QAEjC,uDAAuD;QACvD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YACpE,OAAM;QACR,CAAC;QACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YACjE,OAAM;QACR,CAAC;QAED,+DAA+D;QAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YACzD,OAAM;QACR,CAAC;QAED,kBAAkB;QAClB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YACzD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IACzE,CAAC;IAEO,cAAc,CAAC,IAAe,EAAE,MAAc;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;QACD,IAAI,CAAC,SAAS,CACZ,IAAI,EACJ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAClC,KAAK,EACL,SAAS,EACT,QAAQ,CACT,CAAA;IACH,CAAC;IAEO,SAAS,CACf,IAAe,EACf,KAAa,EACb,MAAc,EACd,IAAY,EACZ,MAAc;QAEd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IACzD,CAAC;IAEO,OAAO,CAAC,EAAU;QACxB,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAA;IAC/B,CAAC;IAEO,YAAY,CAAC,EAAU;QAC7B,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAA;IAC3E,CAAC;IAEO,WAAW,CAAC,EAAU;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD,CAAC;CACF"}
|
package/dist/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EAoDR,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,OAAO,CAAA;IACZ,WAAW,EAAE,UAAU,EAAE,CAAA;CAC1B;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAIjD"}
|
package/dist/parser.js
CHANGED
|
@@ -49,14 +49,20 @@ class Parser {
|
|
|
49
49
|
return this.parseFindStatement();
|
|
50
50
|
case TokenType.Upsert:
|
|
51
51
|
return this.parseUpsertStatement();
|
|
52
|
+
case TokenType.Update:
|
|
53
|
+
return this.parseUpdateStatement();
|
|
54
|
+
case TokenType.Merge:
|
|
55
|
+
return this.parseMergeStatement();
|
|
52
56
|
case TokenType.Delete:
|
|
53
57
|
return this.parseDeleteStatement();
|
|
54
58
|
case TokenType.Describe:
|
|
55
59
|
return this.parseDescribeStatement();
|
|
56
60
|
case TokenType.Search:
|
|
57
61
|
return this.parseSearchStatement();
|
|
62
|
+
case TokenType.Export:
|
|
63
|
+
return this.parseExportStatement();
|
|
58
64
|
default:
|
|
59
|
-
this.error(`Unexpected token '${tok.value}', expected a statement keyword (FIND, UPSERT, DELETE, DESCRIBE, SEARCH)`, tok);
|
|
65
|
+
this.error(`Unexpected token '${tok.value}', expected a statement keyword (FIND, UPSERT, UPDATE, MERGE, DELETE, DESCRIBE, SEARCH, EXPORT)`, tok);
|
|
60
66
|
this.advance();
|
|
61
67
|
return null;
|
|
62
68
|
}
|
|
@@ -68,6 +74,7 @@ class Parser {
|
|
|
68
74
|
const start = this.currentPos();
|
|
69
75
|
const comments = this.collectLeadingComments();
|
|
70
76
|
this.expect(TokenType.Find);
|
|
77
|
+
const lparen = this.current();
|
|
71
78
|
this.expect(TokenType.LParen);
|
|
72
79
|
const projections = [];
|
|
73
80
|
if (!this.check(TokenType.RParen)) {
|
|
@@ -76,6 +83,9 @@ class Parser {
|
|
|
76
83
|
projections.push(this.parseExpression());
|
|
77
84
|
}
|
|
78
85
|
}
|
|
86
|
+
if (projections.length === 0) {
|
|
87
|
+
this.error(`FIND must declare at least one output expression, e.g. FIND(?var)`, lparen);
|
|
88
|
+
}
|
|
79
89
|
this.expect(TokenType.RParen);
|
|
80
90
|
let where;
|
|
81
91
|
let orderBy;
|
|
@@ -151,6 +161,10 @@ class Parser {
|
|
|
151
161
|
const handle = this.expectVariable();
|
|
152
162
|
this.expect(TokenType.LBrace);
|
|
153
163
|
const matcher = this.parseConceptMatcher();
|
|
164
|
+
let expectVersion;
|
|
165
|
+
if (this.check(TokenType.Expect)) {
|
|
166
|
+
expectVersion = this.parseExpectVersion();
|
|
167
|
+
}
|
|
154
168
|
let setAttributes;
|
|
155
169
|
let setPropositions;
|
|
156
170
|
let metadata;
|
|
@@ -197,6 +211,7 @@ class Parser {
|
|
|
197
211
|
kind: 'ConceptBlock',
|
|
198
212
|
handle,
|
|
199
213
|
matcher,
|
|
214
|
+
expectVersion,
|
|
200
215
|
setAttributes,
|
|
201
216
|
setPropositions,
|
|
202
217
|
metadata,
|
|
@@ -214,6 +229,10 @@ class Parser {
|
|
|
214
229
|
}
|
|
215
230
|
this.expect(TokenType.LBrace);
|
|
216
231
|
const proposition = this.parsePropositionPatternBody(undefined);
|
|
232
|
+
let expectVersion;
|
|
233
|
+
if (this.check(TokenType.Expect)) {
|
|
234
|
+
expectVersion = this.parseExpectVersion();
|
|
235
|
+
}
|
|
217
236
|
let setAttributes;
|
|
218
237
|
let metadata;
|
|
219
238
|
this.skipComments();
|
|
@@ -250,6 +269,7 @@ class Parser {
|
|
|
250
269
|
subject: proposition.subject,
|
|
251
270
|
predicate: proposition.predicate,
|
|
252
271
|
object: proposition.object,
|
|
272
|
+
expectVersion,
|
|
253
273
|
setAttributes,
|
|
254
274
|
metadata,
|
|
255
275
|
range: { start, end: this.currentPos() },
|
|
@@ -257,6 +277,74 @@ class Parser {
|
|
|
257
277
|
};
|
|
258
278
|
}
|
|
259
279
|
// ────────────────────────────────────────────────────────────────────
|
|
280
|
+
// UPDATE
|
|
281
|
+
// ────────────────────────────────────────────────────────────────────
|
|
282
|
+
parseUpdateStatement() {
|
|
283
|
+
const start = this.currentPos();
|
|
284
|
+
const comments = this.collectLeadingComments();
|
|
285
|
+
this.expect(TokenType.Update);
|
|
286
|
+
const target = this.expectVariable();
|
|
287
|
+
let setAttributes;
|
|
288
|
+
let setMetadata;
|
|
289
|
+
this.skipComments();
|
|
290
|
+
while (this.check(TokenType.Set) && !this.isAtEnd()) {
|
|
291
|
+
const setStart = this.currentPos();
|
|
292
|
+
this.advance();
|
|
293
|
+
if (this.check(TokenType.Attributes)) {
|
|
294
|
+
this.advance();
|
|
295
|
+
setAttributes = this.parseSetAttributesBody(setStart);
|
|
296
|
+
}
|
|
297
|
+
else if (this.check(TokenType.Metadata)) {
|
|
298
|
+
this.advance();
|
|
299
|
+
setMetadata = this.parseSetMetadataBody(setStart);
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
this.error(`Expected ATTRIBUTES or METADATA after SET in UPDATE statement`, this.current());
|
|
303
|
+
this.advance();
|
|
304
|
+
}
|
|
305
|
+
this.skipComments();
|
|
306
|
+
}
|
|
307
|
+
if (!setAttributes && !setMetadata) {
|
|
308
|
+
this.error(`Expected SET ATTRIBUTES or SET METADATA in UPDATE statement`, this.current());
|
|
309
|
+
}
|
|
310
|
+
const where = this.parseWhereClause();
|
|
311
|
+
let limit;
|
|
312
|
+
if (this.check(TokenType.Limit)) {
|
|
313
|
+
limit = this.parseLimitClause();
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
kind: 'UpdateStatement',
|
|
317
|
+
target,
|
|
318
|
+
setAttributes,
|
|
319
|
+
setMetadata,
|
|
320
|
+
where,
|
|
321
|
+
limit,
|
|
322
|
+
range: { start, end: this.currentPos() },
|
|
323
|
+
leadingComments: comments.length > 0 ? comments : undefined
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
// ────────────────────────────────────────────────────────────────────
|
|
327
|
+
// MERGE
|
|
328
|
+
// ────────────────────────────────────────────────────────────────────
|
|
329
|
+
parseMergeStatement() {
|
|
330
|
+
const start = this.currentPos();
|
|
331
|
+
const comments = this.collectLeadingComments();
|
|
332
|
+
this.expect(TokenType.Merge);
|
|
333
|
+
this.expect(TokenType.Concept);
|
|
334
|
+
const source = this.expectVariable();
|
|
335
|
+
this.expect(TokenType.Into);
|
|
336
|
+
const target = this.expectVariable();
|
|
337
|
+
const where = this.parseWhereClause();
|
|
338
|
+
return {
|
|
339
|
+
kind: 'MergeStatement',
|
|
340
|
+
source,
|
|
341
|
+
target,
|
|
342
|
+
where,
|
|
343
|
+
range: { start, end: this.currentPos() },
|
|
344
|
+
leadingComments: comments.length > 0 ? comments : undefined
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
// ────────────────────────────────────────────────────────────────────
|
|
260
348
|
// DELETE
|
|
261
349
|
// ────────────────────────────────────────────────────────────────────
|
|
262
350
|
parseDeleteStatement() {
|
|
@@ -393,10 +481,18 @@ class Parser {
|
|
|
393
481
|
this.error(`Expected PRIMER, DOMAINS, CONCEPT, or PROPOSITION after DESCRIBE`, this.current());
|
|
394
482
|
describeType = 'PRIMER';
|
|
395
483
|
}
|
|
484
|
+
// Only the plural `... TYPES` forms are paginated (§5.1.3 / §5.1.5).
|
|
485
|
+
const paginable = describeType === 'CONCEPT_TYPES' || describeType === 'PROPOSITION_TYPES';
|
|
396
486
|
if (this.check(TokenType.Limit)) {
|
|
487
|
+
if (!paginable) {
|
|
488
|
+
this.error(`LIMIT is only valid on DESCRIBE CONCEPT TYPES / PROPOSITION TYPES`, this.current());
|
|
489
|
+
}
|
|
397
490
|
limit = this.parseLimitClause();
|
|
398
491
|
}
|
|
399
492
|
if (this.check(TokenType.Cursor)) {
|
|
493
|
+
if (!paginable) {
|
|
494
|
+
this.error(`CURSOR is only valid on DESCRIBE CONCEPT TYPES / PROPOSITION TYPES`, this.current());
|
|
495
|
+
}
|
|
400
496
|
cursor = this.parseCursorClause();
|
|
401
497
|
}
|
|
402
498
|
return {
|
|
@@ -434,18 +530,35 @@ class Parser {
|
|
|
434
530
|
const term = termValue.kind === 'StringLiteral' ? termValue.parsed : termValue.name;
|
|
435
531
|
let withType;
|
|
436
532
|
let withTypeValue;
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
withTypeValue = this.parseStringOrParameterValue('SEARCH WITH TYPE');
|
|
441
|
-
withType =
|
|
442
|
-
withTypeValue.kind === 'StringLiteral'
|
|
443
|
-
? withTypeValue.parsed
|
|
444
|
-
: withTypeValue.name;
|
|
445
|
-
}
|
|
533
|
+
let mode;
|
|
534
|
+
let modeValue;
|
|
535
|
+
let threshold;
|
|
446
536
|
let limit;
|
|
447
|
-
|
|
448
|
-
|
|
537
|
+
while (!this.isAtEnd()) {
|
|
538
|
+
if (this.check(TokenType.With)) {
|
|
539
|
+
this.advance();
|
|
540
|
+
this.expect(TokenType.Type);
|
|
541
|
+
withTypeValue = this.parseStringOrParameterValue('SEARCH WITH TYPE');
|
|
542
|
+
withType =
|
|
543
|
+
withTypeValue.kind === 'StringLiteral'
|
|
544
|
+
? withTypeValue.parsed
|
|
545
|
+
: withTypeValue.name;
|
|
546
|
+
}
|
|
547
|
+
else if (this.check(TokenType.Mode)) {
|
|
548
|
+
this.advance();
|
|
549
|
+
modeValue = this.parseStringOrParameterValue('SEARCH MODE');
|
|
550
|
+
mode =
|
|
551
|
+
modeValue.kind === 'StringLiteral' ? modeValue.parsed : modeValue.name;
|
|
552
|
+
}
|
|
553
|
+
else if (this.check(TokenType.Threshold)) {
|
|
554
|
+
threshold = this.parseThresholdClause();
|
|
555
|
+
}
|
|
556
|
+
else if (this.check(TokenType.Limit)) {
|
|
557
|
+
limit = this.parseLimitClause();
|
|
558
|
+
}
|
|
559
|
+
else {
|
|
560
|
+
break;
|
|
561
|
+
}
|
|
449
562
|
}
|
|
450
563
|
return {
|
|
451
564
|
kind: 'SearchStatement',
|
|
@@ -454,6 +567,31 @@ class Parser {
|
|
|
454
567
|
termValue,
|
|
455
568
|
withType,
|
|
456
569
|
withTypeValue,
|
|
570
|
+
mode,
|
|
571
|
+
modeValue,
|
|
572
|
+
threshold,
|
|
573
|
+
limit,
|
|
574
|
+
range: { start, end: this.currentPos() },
|
|
575
|
+
leadingComments: comments.length > 0 ? comments : undefined
|
|
576
|
+
};
|
|
577
|
+
}
|
|
578
|
+
// ────────────────────────────────────────────────────────────────────
|
|
579
|
+
// EXPORT
|
|
580
|
+
// ────────────────────────────────────────────────────────────────────
|
|
581
|
+
parseExportStatement() {
|
|
582
|
+
const start = this.currentPos();
|
|
583
|
+
const comments = this.collectLeadingComments();
|
|
584
|
+
this.expect(TokenType.Export);
|
|
585
|
+
const target = this.expectVariable();
|
|
586
|
+
const where = this.parseWhereClause();
|
|
587
|
+
let limit;
|
|
588
|
+
if (this.check(TokenType.Limit)) {
|
|
589
|
+
limit = this.parseLimitClause();
|
|
590
|
+
}
|
|
591
|
+
return {
|
|
592
|
+
kind: 'ExportStatement',
|
|
593
|
+
target,
|
|
594
|
+
where,
|
|
457
595
|
limit,
|
|
458
596
|
range: { start, end: this.currentPos() },
|
|
459
597
|
leadingComments: comments.length > 0 ? comments : undefined
|
|
@@ -627,6 +765,31 @@ class Parser {
|
|
|
627
765
|
}
|
|
628
766
|
parsePredicateExpr() {
|
|
629
767
|
const start = this.currentPos();
|
|
768
|
+
if (this.check(TokenType.Variable)) {
|
|
769
|
+
const pred = this.parsePredicateVariable();
|
|
770
|
+
if (this.check(TokenType.LBrace)) {
|
|
771
|
+
this.error(`Predicate variables cannot use hop ranges; use a quoted predicate literal for path traversal`, this.current());
|
|
772
|
+
this.parseHopRange();
|
|
773
|
+
}
|
|
774
|
+
if (this.check(TokenType.Pipe)) {
|
|
775
|
+
this.error(`Predicate variables cannot be used in predicate alternations`, this.current());
|
|
776
|
+
while (this.match(TokenType.Pipe)) {
|
|
777
|
+
if (this.check(TokenType.String)) {
|
|
778
|
+
this.parsePredicateLiteral();
|
|
779
|
+
}
|
|
780
|
+
else if (this.check(TokenType.Variable)) {
|
|
781
|
+
this.parsePredicateVariable();
|
|
782
|
+
}
|
|
783
|
+
else {
|
|
784
|
+
break;
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
return {
|
|
789
|
+
...pred,
|
|
790
|
+
range: { start, end: this.currentPos() }
|
|
791
|
+
};
|
|
792
|
+
}
|
|
630
793
|
const first = this.parsePredicateLiteral();
|
|
631
794
|
// Check for alternation: "pred1" | "pred2"
|
|
632
795
|
if (this.check(TokenType.Pipe)) {
|
|
@@ -642,6 +805,15 @@ class Parser {
|
|
|
642
805
|
}
|
|
643
806
|
return first;
|
|
644
807
|
}
|
|
808
|
+
parsePredicateVariable() {
|
|
809
|
+
const start = this.currentPos();
|
|
810
|
+
const name = this.expectVariable();
|
|
811
|
+
return {
|
|
812
|
+
kind: 'PredicateVariable',
|
|
813
|
+
name,
|
|
814
|
+
range: { start, end: this.currentPos() }
|
|
815
|
+
};
|
|
816
|
+
}
|
|
645
817
|
parsePredicateLiteral() {
|
|
646
818
|
const start = this.currentPos();
|
|
647
819
|
const value = this.expectStringValue();
|
|
@@ -746,6 +918,16 @@ class Parser {
|
|
|
746
918
|
range: { start, end: this.currentPos() }
|
|
747
919
|
};
|
|
748
920
|
}
|
|
921
|
+
parseSetMetadataBody(start) {
|
|
922
|
+
this.expect(TokenType.LBrace);
|
|
923
|
+
const entries = this.parseObjectEntries();
|
|
924
|
+
this.expect(TokenType.RBrace);
|
|
925
|
+
return {
|
|
926
|
+
kind: 'SetMetadata',
|
|
927
|
+
entries,
|
|
928
|
+
range: { start, end: this.currentPos() }
|
|
929
|
+
};
|
|
930
|
+
}
|
|
749
931
|
parseSetPropositionsBody(start) {
|
|
750
932
|
this.expect(TokenType.LBrace);
|
|
751
933
|
const items = [];
|
|
@@ -841,6 +1023,17 @@ class Parser {
|
|
|
841
1023
|
range: { start, end: this.currentPos() }
|
|
842
1024
|
};
|
|
843
1025
|
}
|
|
1026
|
+
parseExpectVersion() {
|
|
1027
|
+
const start = this.currentPos();
|
|
1028
|
+
this.expect(TokenType.Expect);
|
|
1029
|
+
this.expect(TokenType.Version);
|
|
1030
|
+
const value = this.parseNumberOrParameterValue('EXPECT VERSION');
|
|
1031
|
+
return {
|
|
1032
|
+
kind: 'ExpectVersion',
|
|
1033
|
+
value,
|
|
1034
|
+
range: { start, end: this.currentPos() }
|
|
1035
|
+
};
|
|
1036
|
+
}
|
|
844
1037
|
// ────────────────────────────────────────────────────────────────────
|
|
845
1038
|
// ORDER BY, LIMIT, CURSOR
|
|
846
1039
|
// ────────────────────────────────────────────────────────────────────
|
|
@@ -848,6 +1041,22 @@ class Parser {
|
|
|
848
1041
|
const start = this.currentPos();
|
|
849
1042
|
this.expect(TokenType.Order);
|
|
850
1043
|
this.expect(TokenType.By);
|
|
1044
|
+
const keys = [];
|
|
1045
|
+
keys.push(this.parseOrderByKey());
|
|
1046
|
+
while (this.match(TokenType.Comma)) {
|
|
1047
|
+
keys.push(this.parseOrderByKey());
|
|
1048
|
+
}
|
|
1049
|
+
const first = keys[0];
|
|
1050
|
+
return {
|
|
1051
|
+
kind: 'OrderByClause',
|
|
1052
|
+
keys,
|
|
1053
|
+
expression: first.expression,
|
|
1054
|
+
direction: first.direction,
|
|
1055
|
+
range: { start, end: this.currentPos() }
|
|
1056
|
+
};
|
|
1057
|
+
}
|
|
1058
|
+
parseOrderByKey() {
|
|
1059
|
+
const start = this.currentPos();
|
|
851
1060
|
const expression = this.parseExpression();
|
|
852
1061
|
let direction = 'ASC';
|
|
853
1062
|
if (this.check(TokenType.Asc)) {
|
|
@@ -859,45 +1068,59 @@ class Parser {
|
|
|
859
1068
|
direction = 'DESC';
|
|
860
1069
|
}
|
|
861
1070
|
return {
|
|
862
|
-
kind: '
|
|
1071
|
+
kind: 'OrderByKey',
|
|
863
1072
|
expression,
|
|
864
1073
|
direction,
|
|
865
1074
|
range: { start, end: this.currentPos() }
|
|
866
1075
|
};
|
|
867
1076
|
}
|
|
868
|
-
|
|
1077
|
+
parseThresholdClause() {
|
|
869
1078
|
const start = this.currentPos();
|
|
870
|
-
this.expect(TokenType.
|
|
1079
|
+
this.expect(TokenType.Threshold);
|
|
1080
|
+
const value = this.parseNumberOrParameterValue('THRESHOLD');
|
|
1081
|
+
return {
|
|
1082
|
+
kind: 'ThresholdClause',
|
|
1083
|
+
value,
|
|
1084
|
+
range: { start, end: this.currentPos() }
|
|
1085
|
+
};
|
|
1086
|
+
}
|
|
1087
|
+
parseNumberOrParameterValue(context) {
|
|
871
1088
|
const tok = this.current();
|
|
1089
|
+
const start = this.currentPos();
|
|
872
1090
|
let value;
|
|
873
1091
|
if (tok.type === TokenType.Number) {
|
|
874
1092
|
value = {
|
|
875
1093
|
kind: 'NumberLiteral',
|
|
876
1094
|
value: Number(tok.value),
|
|
877
1095
|
raw: tok.value,
|
|
878
|
-
range: { start
|
|
1096
|
+
range: { start, end: start }
|
|
879
1097
|
};
|
|
880
1098
|
this.advance();
|
|
881
1099
|
value.range.end = this.currentPos();
|
|
1100
|
+
return value;
|
|
882
1101
|
}
|
|
883
|
-
|
|
1102
|
+
if (tok.type === TokenType.Parameter) {
|
|
884
1103
|
value = {
|
|
885
1104
|
kind: 'ParameterRef',
|
|
886
1105
|
name: tok.value,
|
|
887
|
-
range: { start
|
|
1106
|
+
range: { start, end: start }
|
|
888
1107
|
};
|
|
889
1108
|
this.advance();
|
|
890
1109
|
value.range.end = this.currentPos();
|
|
1110
|
+
return value;
|
|
891
1111
|
}
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
1112
|
+
this.error(`Expected number or parameter after ${context}`, tok);
|
|
1113
|
+
return {
|
|
1114
|
+
kind: 'NumberLiteral',
|
|
1115
|
+
value: 0,
|
|
1116
|
+
raw: '0',
|
|
1117
|
+
range: { start, end: start }
|
|
1118
|
+
};
|
|
1119
|
+
}
|
|
1120
|
+
parseLimitClause() {
|
|
1121
|
+
const start = this.currentPos();
|
|
1122
|
+
this.expect(TokenType.Limit);
|
|
1123
|
+
const value = this.parseNumberOrParameterValue('LIMIT');
|
|
901
1124
|
return {
|
|
902
1125
|
kind: 'LimitClause',
|
|
903
1126
|
value,
|
|
@@ -1216,7 +1439,7 @@ class Parser {
|
|
|
1216
1439
|
break;
|
|
1217
1440
|
const entryStart = this.currentPos();
|
|
1218
1441
|
const { key, isQuoted } = this.expectKeyWithQuoting();
|
|
1219
|
-
this.
|
|
1442
|
+
this.expectObjectColon(key);
|
|
1220
1443
|
const value = this.parseExpression();
|
|
1221
1444
|
entries.push({
|
|
1222
1445
|
kind: 'ObjectEntry',
|
|
@@ -1307,22 +1530,6 @@ class Parser {
|
|
|
1307
1530
|
this.advance();
|
|
1308
1531
|
return this.unescapeString(tok.value);
|
|
1309
1532
|
}
|
|
1310
|
-
expectKey() {
|
|
1311
|
-
const tok = this.current();
|
|
1312
|
-
// Keys can be identifiers, strings, or even some keywords used as keys
|
|
1313
|
-
if (tok.type === TokenType.String) {
|
|
1314
|
-
this.advance();
|
|
1315
|
-
return this.unescapeString(tok.value);
|
|
1316
|
-
}
|
|
1317
|
-
if (tok.type === TokenType.Identifier ||
|
|
1318
|
-
this.isNonAmbiguousKeyword(tok.type)) {
|
|
1319
|
-
this.advance();
|
|
1320
|
-
return tok.value;
|
|
1321
|
-
}
|
|
1322
|
-
this.error(`Expected object key but got '${tok.value}'`, tok);
|
|
1323
|
-
this.advance();
|
|
1324
|
-
return tok.value;
|
|
1325
|
-
}
|
|
1326
1533
|
expectKeyWithQuoting() {
|
|
1327
1534
|
const tok = this.current();
|
|
1328
1535
|
if (tok.type === TokenType.String) {
|
|
@@ -1354,6 +1561,25 @@ class Parser {
|
|
|
1354
1561
|
}
|
|
1355
1562
|
return comments;
|
|
1356
1563
|
}
|
|
1564
|
+
/**
|
|
1565
|
+
* Consume the `:` separating an object key from its value. A colon written
|
|
1566
|
+
* with no space before an identifier value (e.g. `status:active`) is lexed as
|
|
1567
|
+
* a single parameter placeholder token (`:active`), so surface a targeted hint
|
|
1568
|
+
* instead of the generic "Expected ':'" message.
|
|
1569
|
+
*/
|
|
1570
|
+
expectObjectColon(key) {
|
|
1571
|
+
if (this.check(TokenType.Colon)) {
|
|
1572
|
+
this.advance();
|
|
1573
|
+
return;
|
|
1574
|
+
}
|
|
1575
|
+
const tok = this.current();
|
|
1576
|
+
if (tok.type === TokenType.Parameter) {
|
|
1577
|
+
this.error(`Missing space after ':' — '${key}${tok.value}' was read as a parameter placeholder. ` +
|
|
1578
|
+
`Write '${key}: ${tok.value.slice(1)}' (or quote the value).`, tok);
|
|
1579
|
+
return;
|
|
1580
|
+
}
|
|
1581
|
+
this.expect(TokenType.Colon);
|
|
1582
|
+
}
|
|
1357
1583
|
isFunctionToken(type) {
|
|
1358
1584
|
return (type === TokenType.Count ||
|
|
1359
1585
|
type === TokenType.Sum ||
|
|
@@ -1366,7 +1592,11 @@ class Parser {
|
|
|
1366
1592
|
type === TokenType.Regex ||
|
|
1367
1593
|
type === TokenType.In ||
|
|
1368
1594
|
type === TokenType.IsNull ||
|
|
1369
|
-
type === TokenType.IsNotNull
|
|
1595
|
+
type === TokenType.IsNotNull ||
|
|
1596
|
+
type === TokenType.Add ||
|
|
1597
|
+
type === TokenType.Mul ||
|
|
1598
|
+
type === TokenType.Clamp ||
|
|
1599
|
+
type === TokenType.Coalesce);
|
|
1370
1600
|
}
|
|
1371
1601
|
/** Keywords that can also serve as property names in dot notation or object keys */
|
|
1372
1602
|
isNonAmbiguousKeyword(type) {
|
|
@@ -1385,7 +1615,12 @@ class Parser {
|
|
|
1385
1615
|
type === TokenType.By ||
|
|
1386
1616
|
type === TokenType.Order ||
|
|
1387
1617
|
type === TokenType.Set ||
|
|
1388
|
-
type === TokenType.With
|
|
1618
|
+
type === TokenType.With ||
|
|
1619
|
+
type === TokenType.Into ||
|
|
1620
|
+
type === TokenType.Expect ||
|
|
1621
|
+
type === TokenType.Version ||
|
|
1622
|
+
type === TokenType.Mode ||
|
|
1623
|
+
type === TokenType.Threshold);
|
|
1389
1624
|
}
|
|
1390
1625
|
unescapeString(raw) {
|
|
1391
1626
|
if (raw.startsWith('"') && raw.endsWith('"')) {
|
|
@@ -1415,7 +1650,7 @@ class Parser {
|
|
|
1415
1650
|
}
|
|
1416
1651
|
});
|
|
1417
1652
|
}
|
|
1418
|
-
error(message, token) {
|
|
1653
|
+
error(message, token, code = 'KIP_1001') {
|
|
1419
1654
|
this.diagnostics.push({
|
|
1420
1655
|
range: {
|
|
1421
1656
|
start: { line: token.line, column: token.column },
|
|
@@ -1423,16 +1658,19 @@ class Parser {
|
|
|
1423
1658
|
},
|
|
1424
1659
|
severity: 'error',
|
|
1425
1660
|
message,
|
|
1426
|
-
code
|
|
1661
|
+
code
|
|
1427
1662
|
});
|
|
1428
1663
|
}
|
|
1429
1664
|
recoverToNextStatement() {
|
|
1430
1665
|
const stmtStarters = new Set([
|
|
1431
1666
|
TokenType.Find,
|
|
1432
1667
|
TokenType.Upsert,
|
|
1668
|
+
TokenType.Update,
|
|
1669
|
+
TokenType.Merge,
|
|
1433
1670
|
TokenType.Delete,
|
|
1434
1671
|
TokenType.Describe,
|
|
1435
1672
|
TokenType.Search,
|
|
1673
|
+
TokenType.Export,
|
|
1436
1674
|
TokenType.EOF
|
|
1437
1675
|
]);
|
|
1438
1676
|
while (!this.isAtEnd() && !stmtStarters.has(this.current().type)) {
|