desmost 0.10.1 → 0.11.0

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.
Files changed (164) hide show
  1. package/README.md +5 -5
  2. package/dist/compiler/compile.d.ts +1 -1
  3. package/dist/compiler/compile.js +1 -1
  4. package/dist/compiler/compiler.d.ts.map +1 -1
  5. package/dist/compiler/compiler.js +9 -8
  6. package/dist/compiler/compiler.js.map +1 -1
  7. package/dist/compiler/format.js +1 -1
  8. package/dist/compiler/format.js.map +1 -1
  9. package/dist/decompiler/decompile.d.ts +13 -5
  10. package/dist/decompiler/decompile.d.ts.map +1 -1
  11. package/dist/decompiler/decompile.js +24 -13
  12. package/dist/decompiler/decompile.js.map +1 -1
  13. package/dist/decompiler/emit.d.ts +5 -2
  14. package/dist/decompiler/emit.d.ts.map +1 -1
  15. package/dist/decompiler/emit.js +41 -20
  16. package/dist/decompiler/emit.js.map +1 -1
  17. package/dist/decompiler/extract.d.ts +1 -9
  18. package/dist/decompiler/extract.d.ts.map +1 -1
  19. package/dist/decompiler/extract.js +24 -58
  20. package/dist/decompiler/extract.js.map +1 -1
  21. package/dist/decompiler/format.d.ts +0 -1
  22. package/dist/decompiler/format.d.ts.map +1 -1
  23. package/dist/decompiler/format.js +3 -9
  24. package/dist/decompiler/format.js.map +1 -1
  25. package/dist/errors.d.ts +14 -7
  26. package/dist/errors.d.ts.map +1 -1
  27. package/dist/errors.js +20 -2
  28. package/dist/errors.js.map +1 -1
  29. package/dist/magic/expr/index.js +6 -6
  30. package/dist/magic/expr/index.js.map +1 -1
  31. package/dist/magic/expr/latex.d.ts +5 -2
  32. package/dist/magic/expr/latex.d.ts.map +1 -1
  33. package/dist/magic/expr/latex.js +4 -2
  34. package/dist/magic/expr/latex.js.map +1 -1
  35. package/dist/magic/expr/text.d.ts +5 -2
  36. package/dist/magic/expr/text.d.ts.map +1 -1
  37. package/dist/magic/expr/text.js +4 -2
  38. package/dist/magic/expr/text.js.map +1 -1
  39. package/dist/magic/global/{dark-mode.d.ts → dark.d.ts} +6 -2
  40. package/dist/magic/global/dark.d.ts.map +1 -0
  41. package/dist/magic/global/dark.js +20 -0
  42. package/dist/magic/global/dark.js.map +1 -0
  43. package/dist/magic/global/desmos.d.ts +4 -1
  44. package/dist/magic/global/desmos.d.ts.map +1 -1
  45. package/dist/magic/global/desmos.js +23 -0
  46. package/dist/magic/global/desmos.js.map +1 -1
  47. package/dist/magic/global/index.d.ts +5 -5
  48. package/dist/magic/global/index.d.ts.map +1 -1
  49. package/dist/magic/global/index.js +8 -11
  50. package/dist/magic/global/index.js.map +1 -1
  51. package/dist/magic/global/viewport.d.ts +3 -0
  52. package/dist/magic/global/viewport.d.ts.map +1 -1
  53. package/dist/magic/global/viewport.js +20 -0
  54. package/dist/magic/global/viewport.js.map +1 -1
  55. package/dist/magic/incantation.d.ts +15 -2
  56. package/dist/magic/incantation.d.ts.map +1 -1
  57. package/dist/magic/incantation.js +8 -1
  58. package/dist/magic/incantation.js.map +1 -1
  59. package/dist/magic/local/anim.d.ts +5 -1
  60. package/dist/magic/local/anim.d.ts.map +1 -1
  61. package/dist/magic/local/anim.js +12 -1
  62. package/dist/magic/local/anim.js.map +1 -1
  63. package/dist/magic/local/colour.d.ts +7 -3
  64. package/dist/magic/local/colour.d.ts.map +1 -1
  65. package/dist/magic/local/colour.js +13 -3
  66. package/dist/magic/local/colour.js.map +1 -1
  67. package/dist/magic/local/dashed.d.ts +5 -1
  68. package/dist/magic/local/dashed.d.ts.map +1 -1
  69. package/dist/magic/local/dashed.js +12 -1
  70. package/dist/magic/local/dashed.js.map +1 -1
  71. package/dist/magic/local/fill.d.ts +5 -1
  72. package/dist/magic/local/fill.d.ts.map +1 -1
  73. package/dist/magic/local/fill.js +15 -1
  74. package/dist/magic/local/fill.js.map +1 -1
  75. package/dist/magic/local/hide.d.ts +5 -1
  76. package/dist/magic/local/hide.d.ts.map +1 -1
  77. package/dist/magic/local/hide.js +12 -1
  78. package/dist/magic/local/hide.js.map +1 -1
  79. package/dist/magic/local/index.d.ts +13 -2
  80. package/dist/magic/local/index.d.ts.map +1 -1
  81. package/dist/magic/local/index.js +24 -24
  82. package/dist/magic/local/index.js.map +1 -1
  83. package/dist/magic/local/label.d.ts +6 -2
  84. package/dist/magic/local/label.d.ts.map +1 -1
  85. package/dist/magic/local/label.js +19 -1
  86. package/dist/magic/local/label.js.map +1 -1
  87. package/dist/magic/local/line.d.ts +5 -1
  88. package/dist/magic/local/line.d.ts.map +1 -1
  89. package/dist/magic/local/line.js +19 -1
  90. package/dist/magic/local/line.js.map +1 -1
  91. package/dist/magic/local/no-line.d.ts +5 -1
  92. package/dist/magic/local/no-line.d.ts.map +1 -1
  93. package/dist/magic/local/no-line.js +12 -1
  94. package/dist/magic/local/no-line.js.map +1 -1
  95. package/dist/magic/local/point.d.ts +5 -1
  96. package/dist/magic/local/point.d.ts.map +1 -1
  97. package/dist/magic/local/point.js +19 -1
  98. package/dist/magic/local/point.js.map +1 -1
  99. package/dist/magic/local/secret.d.ts +5 -1
  100. package/dist/magic/local/secret.d.ts.map +1 -1
  101. package/dist/magic/local/secret.js +12 -1
  102. package/dist/magic/local/secret.js.map +1 -1
  103. package/dist/magic/local/slider.d.ts +5 -1
  104. package/dist/magic/local/slider.d.ts.map +1 -1
  105. package/dist/magic/local/slider.js +13 -1
  106. package/dist/magic/local/slider.js.map +1 -1
  107. package/dist/parser/ast.d.ts +9 -3
  108. package/dist/parser/ast.d.ts.map +1 -1
  109. package/dist/parser/ast.js +3 -1
  110. package/dist/parser/ast.js.map +1 -1
  111. package/dist/parser/desmost-parser.d.ts +2 -2
  112. package/dist/parser/desmost-parser.d.ts.map +1 -1
  113. package/dist/parser/desmost-parser.js +6 -4
  114. package/dist/parser/desmost-parser.js.map +1 -1
  115. package/dist/parser/errors.d.ts +11 -0
  116. package/dist/parser/errors.d.ts.map +1 -0
  117. package/dist/parser/errors.js +4 -0
  118. package/dist/parser/errors.js.map +1 -0
  119. package/dist/parser/generic-parser.d.ts +7 -5
  120. package/dist/parser/generic-parser.d.ts.map +1 -1
  121. package/dist/parser/generic-parser.js +7 -10
  122. package/dist/parser/generic-parser.js.map +1 -1
  123. package/package.json +1 -1
  124. package/src/compiler/compile.ts +1 -1
  125. package/src/compiler/compiler.ts +10 -9
  126. package/src/compiler/format.ts +1 -1
  127. package/src/decompiler/decompile.ts +30 -14
  128. package/src/decompiler/emit.ts +57 -25
  129. package/src/decompiler/extract.ts +30 -89
  130. package/src/decompiler/format.ts +3 -14
  131. package/src/decompiler/readme.md +2 -2
  132. package/src/errors.ts +13 -7
  133. package/src/magic/.template.ts +8 -0
  134. package/src/magic/expr/index.ts +6 -7
  135. package/src/magic/expr/latex.ts +8 -4
  136. package/src/magic/expr/text.ts +8 -4
  137. package/src/magic/global/dark.ts +29 -0
  138. package/src/magic/global/desmos.ts +35 -5
  139. package/src/magic/global/index.ts +8 -14
  140. package/src/magic/global/viewport.ts +29 -0
  141. package/src/magic/incantation.ts +28 -6
  142. package/src/magic/local/anim.ts +16 -3
  143. package/src/magic/local/colour.ts +18 -6
  144. package/src/magic/local/dashed.ts +16 -2
  145. package/src/magic/local/fill.ts +20 -3
  146. package/src/magic/local/hide.ts +16 -2
  147. package/src/magic/local/index.ts +24 -25
  148. package/src/magic/local/label.ts +31 -8
  149. package/src/magic/local/line.ts +25 -3
  150. package/src/magic/local/no-line.ts +16 -2
  151. package/src/magic/local/point.ts +27 -3
  152. package/src/magic/local/secret.ts +16 -2
  153. package/src/magic/local/slider.ts +18 -3
  154. package/src/parser/ast.ts +10 -7
  155. package/src/parser/desmost-parser.ts +10 -6
  156. package/src/parser/errors.ts +10 -0
  157. package/src/parser/generic-parser.ts +9 -11
  158. package/svelte/desmost.svelte +107 -107
  159. package/dist/magic/expr/index.d.ts +0 -3
  160. package/dist/magic/expr/index.d.ts.map +0 -1
  161. package/dist/magic/global/dark-mode.d.ts.map +0 -1
  162. package/dist/magic/global/dark-mode.js +0 -9
  163. package/dist/magic/global/dark-mode.js.map +0 -1
  164. package/src/magic/global/dark-mode.ts +0 -15
@@ -1,15 +1,19 @@
1
1
  import { Incantation, ArgIncantation, type LOCAL } from "../incantation.js";
2
+ import { Ast } from "../../parser/index.js";
2
3
  interface SliderBounds {
3
4
  min: number | string;
4
5
  max: number | string;
5
6
  step?: number | string;
6
7
  }
7
8
  export declare class SliderIncantation extends ArgIncantation<LOCAL> {
8
- readonly description = "Set the bounds of the slider for a variable.";
9
+ readonly effect = Incantation.Effect.LOCAL;
9
10
  readonly identifier = "slider";
10
11
  readonly requires_arg = true;
11
12
  readonly arg_type = Incantation.ArgType.OBJECT;
13
+ readonly description = "Set the bounds of the slider for a variable.";
12
14
  apply(target: Desmos.ExpressionState, data: SliderBounds): void;
15
+ extract(target: Desmos.Expression): Ast.IncantationInvocation<LOCAL> | void;
13
16
  }
17
+ export declare const slider: SliderIncantation;
14
18
  export {};
15
19
  //# sourceMappingURL=slider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../src/magic/local/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGzE,UAAU,YAAY;IAErB,GAAG,EAAI,MAAM,GAAG,MAAM,CAAC;IACvB,GAAG,EAAI,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAGD,qBAAa,iBAAkB,SAAQ,cAAc,CAAC,KAAK,CAAC;IAE3D,SAAkB,WAAW,kDACoB;IAEjD,SAAkB,UAAU,YAAa;IACzC,SAAkB,YAAY,QAAO;IACrC,SAAkB,QAAQ,8BAAiC;IAElD,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,YAAY;CAKjE"}
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../src/magic/local/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,UAAU,YAAY;IAErB,GAAG,EAAI,MAAM,GAAG,MAAM,CAAC;IACvB,GAAG,EAAI,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAGD,qBAAa,iBAAkB,SAAQ,cAAc,CAAC,KAAK,CAAC;IAE3D,SAAkB,MAAM,4BAAiC;IACzD,SAAkB,UAAU,YAAa;IACzC,SAAkB,YAAY,QAAO;IACrC,SAAkB,QAAQ,8BAAiC;IAC3D,SAAkB,WAAW,kDACoB;IAExC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,YAAY;IAMxD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,IAAI;CAUpF;AAED,eAAO,MAAM,MAAM,mBAA0B,CAAC"}
@@ -1,12 +1,24 @@
1
1
  import { Incantation, ArgIncantation } from "../incantation.js";
2
+ import { Ast } from "../../parser/index.js";
2
3
  export class SliderIncantation extends ArgIncantation {
3
- description = "Set the bounds of the slider for a variable.";
4
+ effect = Incantation.Effect.LOCAL;
4
5
  identifier = "slider";
5
6
  requires_arg = true;
6
7
  arg_type = Incantation.ArgType.OBJECT;
8
+ description = "Set the bounds of the slider for a variable.";
7
9
  apply(target, data) {
8
10
  super.require_expr_type(target.type, "expression");
9
11
  target.sliderBounds = data;
10
12
  }
13
+ extract(target) {
14
+ if (target.sliderBounds != undefined) {
15
+ return {
16
+ kind: Ast.Kind.INCANTATION_INVOCATION,
17
+ incantation: slider,
18
+ arg_raw: super.emit_object_arg(target.sliderBounds),
19
+ };
20
+ }
21
+ }
11
22
  }
23
+ export const slider = new SliderIncantation();
12
24
  //# sourceMappingURL=slider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slider.js","sourceRoot":"","sources":["../../../src/magic/local/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAWzE,MAAM,OAAO,iBAAkB,SAAQ,cAAqB;IAEzC,WAAW,GAC1B,8CAA8C,CAAA;IAE/B,UAAU,GAAK,QAAQ,CAAA;IACvB,YAAY,GAAG,IAAI,CAAA;IACnB,QAAQ,GAAO,WAAW,CAAC,OAAO,CAAC,MAAM,CAAA;IAElD,KAAK,CAAC,MAA8B,EAAE,IAAkB;QAEhE,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACnD,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;IAC5B,CAAC;CACD"}
1
+ {"version":3,"file":"slider.js","sourceRoot":"","sources":["../../../src/magic/local/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAWnC,MAAM,OAAO,iBAAkB,SAAQ,cAAqB;IAEzC,MAAM,GAAS,WAAW,CAAC,MAAM,CAAC,KAAK,CAAA;IACvC,UAAU,GAAK,QAAQ,CAAA;IACvB,YAAY,GAAG,IAAI,CAAA;IACnB,QAAQ,GAAO,WAAW,CAAC,OAAO,CAAC,MAAM,CAAA;IACzC,WAAW,GAC1B,8CAA8C,CAAA;IAExC,KAAK,CAAC,MAA8B,EAAE,IAAkB;QAEhE,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACnD,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEQ,OAAO,CAAC,MAAyB;QAEzC,IAAI,MAAM,CAAC,YAAY,IAAI,SAAS,EAAE,CAAC;YACtC,OAAO;gBACN,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,sBAAsB;gBACrC,WAAW,EAAE,MAAM;gBACnB,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC;aACnD,CAAC;QACH,CAAC;IACF,CAAC;CACD;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
@@ -1,17 +1,23 @@
1
1
  import { Incantation, ArgIncantation } from "../magic/index.js";
2
2
  export declare namespace Ast {
3
- /** What kind of AST node this is. */
3
+ /**
4
+ * What kind of AST node this is.
5
+ */
4
6
  enum Kind {
5
7
  EXPRESSION = "Expression",
6
8
  INCANTATION_INVOCATION = "Incantation-Invocation"
7
9
  }
8
- /** A Desmos expression to add to the calculator. */
10
+ /**
11
+ * A Desmos expression to add to the calculator.
12
+ */
9
13
  interface Expression {
10
14
  kind: Kind.EXPRESSION;
11
15
  data: Desmos.ExpressionState;
12
16
  incantations: IncantationInvocation<Incantation.Effect.LOCAL>[];
13
17
  }
14
- /** A pending incantation invocation that requires applying its argument (if any), then applying its effect. */
18
+ /**
19
+ * A pending incantation invocation that requires applying its argument (if any), then applying its effect.
20
+ */
15
21
  type IncantationInvocation<Effect extends Incantation.Effect = Incantation.Effect> = {
16
22
  kind: Kind.INCANTATION_INVOCATION;
17
23
  incantation: Incantation<Effect>;
@@ -1 +1 @@
1
- {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/parser/ast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGvD,yBAAiB,GAAG,CACpB;IACC,qCAAqC;IACrC,KAAY,IAAI;QAEf,UAAU,eAA2B;QACrC,sBAAsB,2BAA2B;KACjD;IAGD,oDAAoD;IACpD,UAAiB,UAAU;QAE1B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAA;QACrB,IAAI,EAAE,MAAM,CAAC,eAAe,CAAA;QAC5B,YAAY,EAAE,qBAAqB,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;KAC/D;IAGD,+GAA+G;IAC/G,KAAY,qBAAqB,CAAC,MAAM,SAAS,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IACrF;QACD,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAA;QACjC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;KAChC,GACC;QACD,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAA;QACjC,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3B,CAAC;CACH;AAED,iDAAiD;AACjD,MAAM,MAAM,GAAG,GACZ,GAAG,CAAC,UAAU,GACd,GAAG,CAAC,qBAAqB,CAC3B"}
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/parser/ast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGvD,yBAAiB,GAAG,CACpB;IACC;;OAEG;IACH,KAAY,IAAI;QACf,UAAU,eAA2B;QACrC,sBAAsB,2BAA2B;KACjD;IAED;;OAEG;IACH,UAAiB,UAAU;QAE1B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAA;QACrB,IAAI,EAAE,MAAM,CAAC,eAAe,CAAA;QAC5B,YAAY,EAAE,qBAAqB,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;KAC/D;IAED;;OAEG;IACH,KAAY,qBAAqB,CAAC,MAAM,SAAS,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IACrF;QACD,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAA;QACjC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;KAChC,GACC;QACD,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAA;QACjC,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3B,CAAC;CACH;AAED,iDAAiD;AACjD,MAAM,MAAM,GAAG,GACZ,GAAG,CAAC,UAAU,GACd,GAAG,CAAC,qBAAqB,CAC3B"}
@@ -1,7 +1,9 @@
1
1
  import { Incantation, ArgIncantation } from "../magic/index.js";
2
2
  export var Ast;
3
3
  (function (Ast) {
4
- /** What kind of AST node this is. */
4
+ /**
5
+ * What kind of AST node this is.
6
+ */
5
7
  let Kind;
6
8
  (function (Kind) {
7
9
  Kind["EXPRESSION"] = "Expression";
@@ -1 +1 @@
1
- {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/parser/ast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGvD,MAAM,KAAW,GAAG,CA8BnB;AA9BD,WAAiB,GAAG;IAEnB,qCAAqC;IACrC,IAAY,IAIX;IAJD,WAAY,IAAI;QAEf,iCAAqC,CAAA;QACrC,yDAAiD,CAAA;IAClD,CAAC,EAJW,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAIf;AAuBF,CAAC,EA9BgB,GAAG,KAAH,GAAG,QA8BnB"}
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/parser/ast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGvD,MAAM,KAAW,GAAG,CAiCnB;AAjCD,WAAiB,GAAG;IAEnB;;OAEG;IACH,IAAY,IAGX;IAHD,WAAY,IAAI;QACf,iCAAqC,CAAA;QACrC,yDAAiD,CAAA;IAClD,CAAC,EAHW,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAGf;AAyBF,CAAC,EAjCgB,GAAG,KAAH,GAAG,QAiCnB"}
@@ -1,8 +1,8 @@
1
1
  import { GenericParser } from "./generic-parser.js";
2
2
  import { Ast } from "./ast.js";
3
+ import type { NoMatch } from "./errors.js";
3
4
  import type { DesmostOptions } from "../options.js";
4
- import { DesmostError } from "../errors.js";
5
- import type { NoMatch, Fallible } from "../errors.js";
5
+ import { DesmostError, type Fallible } from "../errors.js";
6
6
  import { Incantation } from "../magic/index.js";
7
7
  import type { GLOBAL, LOCAL } from "../magic/index.js";
8
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"desmost-parser.d.ts","sourceRoot":"","sources":["../../src/parser/desmost-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAY,YAAY,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGnD,OAAO,EACN,WAAW,EAEX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAQ,MAAM,UAAU,CAAC;AAGpD;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAEnB,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc;gBAAlD,MAAM,EAAE,MAAM,EAAY,OAAO,CAAC,EAAE,cAAc,YAAA;IAQ9D;;;;;;;;;;;;;;;;;OAiBG;IACI,UAAU,IAChB,QAAQ,CAAC;QAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IAyDhE;;;;;OAKG;IACH,aAAa,IACZ,QAAQ,CACN;QAAE,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;KAAE,GACpD;QAAE,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAA;KAAE,CAC/C;IAoCF;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC;IAoC3B;;;;;OAKG;IACH,cAAc,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IA6B1C,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAezC;;OAEG;IACH,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC;IAW9B;;OAEG;IACH,qBAAqB,CAAC,MAAM,SAAS,WAAW,CAAC,MAAM,EACtD,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,GACjC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IAuCxD;;OAEG;IACH,0BAA0B,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC;IA+BhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsDG;IACH,qBAAqB;IACpB;;;;;;;OAOG;IACH,QAAQ,EAAE,WAAW,CAAC,OAAO,GAC3B,QAAQ,CAAC,MAAM,CAAC;CA2FnB"}
1
+ {"version":3,"file":"desmost-parser.d.ts","sourceRoot":"","sources":["../../src/parser/desmost-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,UAAU,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGxD,OAAO,EACN,WAAW,EAEX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAQ,MAAM,UAAU,CAAC;AAGpD;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAEnB,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc;gBAAlD,MAAM,EAAE,MAAM,EAAY,OAAO,CAAC,EAAE,cAAc,YAAA;IAQ9D;;;;;;;;;;;;;;;;;OAiBG;IACI,UAAU,IAChB,QAAQ,CAAC;QAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IAyDhE;;;;;OAKG;IACH,aAAa,IACZ,QAAQ,CACN;QAAE,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;KAAE,GACpD;QAAE,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAA;KAAE,CAC/C;IAoCF;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC;IAoC3B;;;;;OAKG;IACH,cAAc,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IA6B1C,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAezC;;OAEG;IACH,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC;IAW9B;;OAEG;IACH,qBAAqB,CAAC,MAAM,SAAS,WAAW,CAAC,MAAM,EACtD,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,GACjC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IAuCxD;;OAEG;IACH,0BAA0B,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC;IAkChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsDG;IACH,qBAAqB;IACpB;;;;;;;OAOG;IACH,QAAQ,EAAE,WAAW,CAAC,OAAO,GAC3B,QAAQ,CAAC,MAAM,CAAC;CA2FnB"}
@@ -1,6 +1,7 @@
1
1
  import { GenericParser } from "./generic-parser.js";
2
2
  import { Ast } from "./ast.js";
3
- import { NO_MATCH, DesmostError } from "../errors.js";
3
+ import { NO_MATCH, INVALID_PARSE } from "./errors.js";
4
+ import { DesmostError } from "../errors.js";
4
5
  import * as utils from "../utils.js";
5
6
  import { Incantation, ArgIncantation, GLOBAL_INCANTATIONS, LOCAL_INCANTATIONS, EXPR_INCANTATIONS } from "../magic/index.js";
6
7
  /**
@@ -84,7 +85,7 @@ export class DesmostParser extends GenericParser {
84
85
  parse_pre_sep() {
85
86
  // 1 global incantation
86
87
  try {
87
- let r = this.try_parse_incantation(GLOBAL_INCANTATIONS);
88
+ let r = this.try_parse_incantation(Object.values(GLOBAL_INCANTATIONS));
88
89
  if (r !== NO_MATCH) {
89
90
  this.eat_whitespace();
90
91
  return { global: r };
@@ -98,7 +99,7 @@ export class DesmostParser extends GenericParser {
98
99
  let incantations = [];
99
100
  while (this.current === "/") {
100
101
  try {
101
- var invocation = this.try_parse_incantation(LOCAL_INCANTATIONS);
102
+ var invocation = this.try_parse_incantation(Object.values(LOCAL_INCANTATIONS));
102
103
  }
103
104
  catch (e) {
104
105
  this.errors.push(e);
@@ -240,7 +241,8 @@ export class DesmostParser extends GenericParser {
240
241
  this.i = init;
241
242
  return NO_MATCH;
242
243
  }
243
- let incantation = EXPR_INCANTATIONS.find(inc => inc.identifier === ident || inc.alias === ident);
244
+ let incantation = Object.values(EXPR_INCANTATIONS)
245
+ .find(inc => inc.identifier === ident || inc.alias === ident);
244
246
  if (incantation == undefined) {
245
247
  this.i = init;
246
248
  return NO_MATCH;
@@ -1 +1 @@
1
- {"version":3,"file":"desmost-parser.js","sourceRoot":"","sources":["../../src/parser/desmost-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAElC,OAAO,EACN,WAAW,EAAE,cAAc,EAC3B,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAC1D,MAAM,UAAU,CAAC;AAIlB;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,aAAa;IAET;IAAtC,YAAY,MAAc,EAAY,OAAwB;QAE7D,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAFgB,YAAO,GAAP,OAAO,CAAiB;IAG9D,CAAC;IAGD,qBAAqB;IAErB;;;;;;;;;;;;;;;;;OAiBG;IACI,UAAU;QAGhB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YAC1B,UAAU;YACV,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC;gBACnC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,CAAC;iBACI,CAAC;gBACL,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACnC,CAAC;QACF,CAAC;aACI,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAE7B,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;gBACnB,WAAW;gBACX,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACvB,CAAC;YACF,CAAC;iBACI,CAAC;gBACL,qBAAqB;gBACrB,IAAI,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;gBAE5B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClB,CAAC;gBAED,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBAElC,KAAK,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;oBACrC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrC,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACF,CAAC;aACI,CAAC;YACL,SAAS;YACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,aAAa;QAMZ,uBAAuB;QACvB,IAAI,CAAC;YACJ,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;YAExD,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACpB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACtB,CAAC;QACF,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;YAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,wBAAwB;QACxB,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,OAAO,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACJ,IAAI,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,CAAC,EAAE,CAAC;gBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;gBAC7B,SAAS;YACV,CAAC;YAED,IAAI,UAAU,KAAK,QAAQ;gBAAE,MAAM;YACnC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;QACrB,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,SAAS;QAER,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,IAAI,CAAC;YACJ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;gBACd,GAAG,EAAG,qFAAqF,IAAI,CAAC,OAAO,EAAE,IAAI;gBAC7G,IAAI,EAAE,yBAAyB,IAAI,CAAC,OAAO,EAAE,IAAI;aACjD,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,CAAC;YAE9C,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;YAElB,OAAO,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;YAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC;gBAC7C,GAAG,EAAE,kCAAkC;gBACvC,IAAI,EAAE;oBACL,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK;oBAC9D,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;iBACnD;aACD,CAAC,CAAC,CAAC;YAEJ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,cAAc;QAEb,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,cAAc;YACd,KAAK,IAAI;gBACR,OAAO;oBACN,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU;oBACzB,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;oBACpB,YAAY,EAAE,EAAE;iBAChB,CAAC;YAEH,mBAAmB;YACnB,KAAK,GAAG;gBACP,IAAI,WAAW,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBACpD,IAAI,WAAW,KAAK,QAAQ;oBAAE,OAAO,WAAW,CAAC;YACjD,0CAA0C;YAE3C,cAAc;YACd;gBACC,OAAO;oBACN,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU;oBACzB,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE;oBAClC,YAAY,EAAE,EAAE;iBAChB,CAAC;QACJ,CAAC;IACF,CAAC;IAED,aAAa;QAEZ,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAE7B,OAAO;YACN,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;YAC5B,YAAY,EAAE,EAAE;SAChB,CAAC;IACH,CAAC;IAGD,qBAAqB;IAErB;;OAEG;IACH,UAAU;QAET,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAElB,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,qBAAqB,CACpB,YAAmC;QAGnC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAElB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAEpD,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YACd,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,IAAI,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QAC5F,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YACd,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,GAAG,SAAS,CAAC;QAExB,IAAI,WAAW,YAAY,cAAc,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC5D,CAAC;iBACI,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;gBACnC,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC;oBACnC,GAAG,EAAG,6BAA6B,WAAW,CAAC,UAAU,EAAE;oBAC3D,IAAI,EAAE,IAAI,WAAW,CAAC,UAAU,oCAAoC,WAAW,CAAC,QAAQ,IAAI;iBAC5F,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,OAAO;YACN,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,sBAAsB;YACrC,WAAW;YACX,OAAO;SACP,CAAC;IACH,CAAC;IAED;;OAEG;IACH,0BAA0B;QAEzB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAElB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAEpD,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YACd,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,IAAI,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACjG,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YACd,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,gHAAgH;QAChH,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAE,WAAoC,CAAC,QAAQ,CAAC,CAAC;QAEzF,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjC,OAAO;YACN,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU;YACzB,IAAI;YACJ,YAAY,EAAE,EAAE;SAChB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsDG;IACH,qBAAqB;IACpB;;;;;;;OAOG;IACH,QAA6B;QAG7B,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;YACb,GAAG,EAAE,8DAA8D,IAAI,CAAC,OAAO,EAAE,IAAI;SACrF,CAAC,CAAC;QAEH,8EAA8E;QAC9E,IAAI,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QAE/B,mDAAmD;QACnD,IAAI,wBAAwB,GAAa,EAAE,CAAC;QAE5C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,wFAAwF;YACxF,mFAAmF;YACnF,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,oCAAoC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnF,CAAC;YAED,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YAEpB,QAAQ,IAAI,CAAC,OAAO,EACpB,CAAC;gBACA,KAAK,IAAI,CAAC,SAAS;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAM;gBAEnD,KAAK,GAAG;oBAAG,KAAK,CAAC,IAAI,CAAM,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAC5F,KAAK,GAAG;oBAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAAC,MAAM;YAC7F,CAAC;YAED,IAAI,QAAQ,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,EAC3C,CAAC;gBACA,IAAI,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC1D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACrB,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC;qBACI,IAAI,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;oBACjE,KAAK,CAAC,GAAG,EAAE,CAAC;oBACZ,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAEtC,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC9C,OAAO,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;oBAC7G,CAAC;gBACF,CAAC;gBAED,QAAQ,IAAI,CAAC,OAAO,EACpB,CAAC;oBACA,KAAK,GAAG;wBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBAAC,MAAM;oBAC9D,KAAK,GAAG;wBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAAC,MAAM;oBAE1C,KAAK,IAAI,CAAC,OAAO;wBAChB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACjE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACzB,MAAM;oBACP,KAAK,IAAI,CAAC,OAAO;wBAChB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACjE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACzB,MAAM;oBACP,KAAK,IAAI,CAAC,QAAQ;wBACjB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACjE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACzB,MAAM;gBACR,CAAC;YACF,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,oCAAoC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,0DAA0D;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzD,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC;YAC5E,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;YACd,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;YAEd,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YAErE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACtB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEvB,IAAI,QAAQ,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7C,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,OAAO,GAAG,CAAC;IACZ,CAAC;CACD;AAGD,MAAM,YAAY;IAEjB,KAAK,GAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAE1B,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,oCAAoC;IACpC,IAAI,GAAG;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,GAAQ,EAAE,OAA+B;QAE7C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAE7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,GAAG;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,+EAA+E;IAC/E,OAAO,CAAC,GAAQ;QAEf,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACb,CAAC;aAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED,8FAA8F;IAC9F,SAAS,CAAC,GAAQ,EAAE,OAA+B;QAElD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAE7C,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAE7B,gJAAgJ;QAChJ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,2EAA2E;IAC3E,WAAW,CAAC,GAAQ,EAAE,OAA+B;QAEpD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAE7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,YAAY,CAAC,OAA0C;QAEtD,OAAO,OAAO,CACZ,OAAO,EAAE,IAAI,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;eAC5D,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CACtC,CAAC;IACH,CAAC;CACD;AAWD,IAAK,IAMJ;AAND,WAAK,IAAI;IAER,wBAAgB,CAAA;IAChB,qBAAe,CAAA;IACf,sBAAe,CAAA;IACf,sBAAe,CAAA;AAChB,CAAC,EANI,IAAI,KAAJ,IAAI,QAMR;AAED,IAAK,GAQJ;AARD,WAAK,GAAG;IACP,kBAAY,CAAA;IACZ,kBAAY,CAAA;IACZ,8BAAyB,CAAA;IACzB,kBAAqB,CAAA;IACrB,mBAAqB,CAAA;IACrB,kBAAsB,CAAA;IACtB,oBAAuB,CAAA;AACxB,CAAC,EARI,GAAG,KAAH,GAAG,QAQP"}
1
+ {"version":3,"file":"desmost-parser.js","sourceRoot":"","sources":["../../src/parser/desmost-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** The parser failed to parse something (usually during speculative parsing), which only results in internal backtracking. */
2
+ export declare const NO_MATCH: unique symbol;
3
+ /** The compiler encountered a non-fatal recoverable failure (usually during speculative parsing), which only results in internal backtracking. */
4
+ export type NoMatch = typeof NO_MATCH & {
5
+ readonly __brand?: unique symbol;
6
+ };
7
+ export declare const INVALID_PARSE: unique symbol;
8
+ export type InvalidParse = typeof INVALID_PARSE & {
9
+ readonly __brand?: unique symbol;
10
+ };
11
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/parser/errors.ts"],"names":[],"mappings":"AAAA,8HAA8H;AAC9H,eAAO,MAAM,QAAQ,eAAqB,CAAC;AAE3C,kJAAkJ;AAClJ,MAAM,MAAM,OAAO,GAAG,OAAO,QAAQ,GAAG;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC;AAG7E,eAAO,MAAM,aAAa,eAA0B,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,OAAO,aAAa,GAAG;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** The parser failed to parse something (usually during speculative parsing), which only results in internal backtracking. */
2
+ export const NO_MATCH = Symbol("no-match");
3
+ export const INVALID_PARSE = Symbol("invalid-parse");
4
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/parser/errors.ts"],"names":[],"mappings":"AAAA,8HAA8H;AAC9H,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAM3C,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { DesmostError } from "../errors.js";
2
- import type { NoMatch, Fallible } from "../errors.js";
1
+ import type { NoMatch } from "./errors.js";
2
+ import { DesmostError, type Fallible } from "../errors.js";
3
3
  /**
4
4
  * A stateful lazy parser, providing core (non-Desmost-specific) methods for parsing.
5
5
  *
@@ -58,13 +58,15 @@ export declare class GenericParser {
58
58
  protected try_eat(raw: string): void | NoMatch;
59
59
  protected try_eat_identifier(): string | NoMatch;
60
60
  /**
61
- * Consume 0 or more space or tab characters.
61
+ * Consume 0 or more space or tab characters (but not newlines).
62
+ *
63
+ * This is always safe to call, and will match 0 characters if the parser is out of bounds.
62
64
  */
63
65
  protected eat_whitespace(): void;
64
66
  /**
65
- * Consume 0 or more whitespace characters.
67
+ * Consume 0 or more whitespace characters (including newlines).
66
68
  *
67
- * Same as `.consume_spaces()`, but allows tabs and newlines.
69
+ * This is always safe to call, and will match 0 characters if the parser is out of bounds.
68
70
  */
69
71
  protected eat_newlines(): void;
70
72
  protected eat_end_of_block(error_data?: DesmostError.Data): Fallible<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"generic-parser.d.ts","sourceRoot":"","sources":["../../src/parser/generic-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,YAAY,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAQnD;;;;GAIG;AACH,qBAAa,aAAa;;IAEzB,gCAAgC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEjC,yEAAyE;IACzE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAI;IAEvB,mDAAmD;IACnD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEjC,4DAA4D;IAC5D,MAAM,EAAE,YAAY,EAAE,CAAA;IAGtB,4CAA4C;gBAChC,MAAM,EAAE,MAAM;IAQ1B;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,OAAO;IAKlC;;OAEG;IACH,SAAS,KAAK,OAAO,IAAI,MAAM,GAAG,SAAS,CAG1C;IAED,SAAS,CAAC,IAAI,IAAI,MAAM,GAAG,SAAS;IAKpC;;OAEG;IACH,SAAS,CAAC,SAAS,IAAI,MAAM;IAK7B;;;;OAIG;IACI,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM;IAUpC;;;;OAIG;IACH,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAQjE;;;;OAIG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI,GAAG,OAAO;IAkBvC;;OAEG;IACH,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAgC1E;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAkB9C,SAAS,CAAC,kBAAkB,IAAI,MAAM,GAAG,OAAO;IAgBhD;;OAEG;IACH,SAAS,CAAC,cAAc,IAAI,IAAI;IAUhC;;;;OAIG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAc9B,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;CAW1E"}
1
+ {"version":3,"file":"generic-parser.d.ts","sourceRoot":"","sources":["../../src/parser/generic-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAQxD;;;;GAIG;AACH,qBAAa,aAAa;;IAEzB,gCAAgC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEjC,yEAAyE;IACzE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAI;IAEvB,mDAAmD;IACnD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEjC,4DAA4D;IAC5D,MAAM,EAAE,YAAY,EAAE,CAAA;IAGtB,4CAA4C;gBAChC,MAAM,EAAE,MAAM;IAQ1B;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,OAAO;IAKlC;;OAEG;IACH,SAAS,KAAK,OAAO,IAAI,MAAM,GAAG,SAAS,CAG1C;IAED,SAAS,CAAC,IAAI,IAAI,MAAM,GAAG,SAAS;IAKpC;;OAEG;IACH,SAAS,CAAC,SAAS,IAAI,MAAM;IAK7B;;;;OAIG;IACI,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM;IAUpC;;;;OAIG;IACH,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAQjE;;;;OAIG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI,GAAG,OAAO;IAkBvC;;OAEG;IACH,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAgC1E;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAkB9C,SAAS,CAAC,kBAAkB,IAAI,MAAM,GAAG,OAAO;IAgBhD;;;;OAIG;IACH,SAAS,CAAC,cAAc,IAAI,IAAI;IAOhC;;;;OAIG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAW9B,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;CAW1E"}
@@ -1,4 +1,5 @@
1
- import { NO_MATCH, DesmostError } from "../errors.js";
1
+ import { NO_MATCH, INVALID_PARSE } from "./errors.js";
2
+ import { DesmostError } from "../errors.js";
2
3
  const IGNORED_CHARACTERS = new Set([
3
4
  '\r',
4
5
  ]);
@@ -143,25 +144,21 @@ export class GenericParser {
143
144
  return this.source.slice(init, this.i);
144
145
  }
145
146
  /**
146
- * Consume 0 or more space or tab characters.
147
+ * Consume 0 or more space or tab characters (but not newlines).
148
+ *
149
+ * This is always safe to call, and will match 0 characters if the parser is out of bounds.
147
150
  */
148
151
  eat_whitespace() {
149
- /* NOTE: Callers should be able to assume this is safe to call even when at end of input, since it should just match 0 characters */
150
- if (this.out_of_bounds())
151
- return;
152
152
  while (this.current === ' ' || this.current === '\t') {
153
153
  this.advance();
154
154
  }
155
155
  }
156
156
  /**
157
- * Consume 0 or more whitespace characters.
157
+ * Consume 0 or more whitespace characters (including newlines).
158
158
  *
159
- * Same as `.consume_spaces()`, but allows tabs and newlines.
159
+ * This is always safe to call, and will match 0 characters if the parser is out of bounds.
160
160
  */
161
161
  eat_newlines() {
162
- /* NOTE: Callers should be able to assume this is safe to call even when at end of input, since it should just match 0 characters */
163
- if (this.i >= this.length)
164
- return;
165
162
  while (this.current === ' '
166
163
  || this.current === '\n'
167
164
  || this.current === '\t') {
@@ -1 +1 @@
1
- {"version":3,"file":"generic-parser.js","sourceRoot":"","sources":["../../src/parser/generic-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic-parser.js","sourceRoot":"","sources":["../../src/parser/generic-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAiB,MAAM,WAAW,CAAC;AAGxD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IAClC,IAAI;CACJ,CAAC,CAAC;AAGH;;;;GAIG;AACH,MAAM,OAAO,aAAa;IAEzB,gCAAgC;IACb,MAAM,CAAQ;IAEjC,yEAAyE;IAC/D,CAAC,GAAW,CAAC,CAAA;IAEvB,mDAAmD;IAChC,MAAM,CAAQ;IAEjC,4DAA4D;IAC5D,MAAM,CAAgB;IAGtB,4CAA4C;IAC5C,YAAY,MAAc;QAEzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IAClB,CAAC;IAGD;;OAEG;IACO,aAAa;QAEtB,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAc,OAAO;QAEpB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAES,IAAI;QAEb,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACO,SAAS;QAElB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,GAAY;QAE1B,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;QAEf,OAAO,CACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;cACpD,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CACzC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACO,OAAO,CAAC,UAA8B;QAE/C,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CAAC,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACO,WAAW;QAEpB,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;IAED,QAAQ;QAEP,IAAI,CAAC,CAAC,EAAE,CAAC;QAET,mEAAmE;QACnE,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,CAAC,EAAE,CAAC;QACV,CAAC;IACF,CAAC;IAED;;OAEG;IACO,GAAG,CAAC,GAAW,EAAE,UAA8B;QAExD,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CAAC,aAAa,CAAC;gBACpC,GAAG,EAAE,8BAA8B,GAAG,IAAI;gBAC1C,IAAI,EAAE;oBACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC9B;aACD,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,GAAG,CAAC,CAAC;QAEX,OAAO,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC;gBACZ,GAAG,EAAE,8BAA8B,GAAG,IAAI;gBAC1C,IAAI,EAAE;oBACL,IAAI,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;iBACjC;aACD,CAAC,CAAC;YAEH,EAAE,EAAE,CAAC;YACL,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM;gBAAE,OAAO;QAC/B,CAAC;QAED,MAAM,IAAI,YAAY,CAAC,eAAe,CAAC;YACtC,GAAG,EAAE,eAAe,GAAG,oBAAoB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;YACjE,GAAG,UAAU;SACb,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,OAAO,CAAC,GAAW;QAE5B,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,GAAG,CAAC,CAAC;QAEX,OAAO,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,QAAQ;gBAAE,MAAM;YAE1B,EAAE,EAAE,CAAC;YACL,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM;gBAAE,OAAO;YAC9B,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM;gBAAE,MAAM;QACnC,CAAC;QAED,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACd,OAAO,QAAQ,CAAC;IACjB,CAAC;IAES,kBAAkB;QAE3B,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAElB,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAE3B,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACpB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;gBACd,OAAO,QAAQ,CAAC;YACjB,CAAC;QACF,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACO,cAAc;QAEvB,OAAO,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC;IACF,CAAC;IAED;;;;OAIG;IACO,YAAY;QAErB,OACC,IAAI,CAAC,OAAO,KAAK,GAAG;eACjB,IAAI,CAAC,OAAO,KAAK,IAAI;eACrB,IAAI,CAAC,OAAO,KAAK,IAAI,EACvB,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC;IACF,CAAC;IAES,gBAAgB,CAAC,UAA8B;QAExD,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAElC,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YACd,GAAG,EAAE,0DAA0D,IAAI,CAAC,OAAO,EAAE,IAAI;YACjF,GAAG,UAAU;SACb,CAAC,CAAC;IACJ,CAAC;CACD"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "desmost",
3
3
  "author": "Sup#2.0",
4
- "version": "0.10.1",
4
+ "version": "0.11.0",
5
5
  "license": "MIT",
6
6
 
7
7
  "description": "A tiny DSL for compiling LaTeX to Desmos",
@@ -30,7 +30,7 @@ export function compile(
30
30
  /**
31
31
  * Compilation options.
32
32
  *
33
- * See {@linkcode DesmostOptions} for the options available.
33
+ * See {@linkcode DesmostOptions} for available options.
34
34
  */
35
35
  options?: Partial<DesmostOptions>,
36
36
  ): void | DesmostDebug
@@ -77,7 +77,7 @@ export class DesmostCompiler
77
77
 
78
78
  /* To aggregate errors at the start, we need a target to retroactively inject errors into */
79
79
  if (this.options.place_errors === "start") {
80
- this.desmos.setExpression({ id: "deferred", latex: " " }); // FIXME check if ` ` needed
80
+ this.desmos.setExpression({ id: "desmost-deferred", type: "text", text: "" });
81
81
  }
82
82
 
83
83
  /* The compiler is lazy, parsing and evaluating one block at a time (as opposed to first parsing the entire AST). We don't need the whole AST, so this saves memory. */
@@ -88,13 +88,13 @@ export class DesmostCompiler
88
88
  while (!done) {
89
89
  done = this.compile_next();
90
90
  }
91
+
92
+ if (this.options.keep_trailing_blanks) {
93
+ this.flush_pending_blanks();
94
+ }
91
95
  }
92
96
  catch (e) {
93
- this.errors.push(e as Error); // FIXME Should probably override as critical
94
- }
95
-
96
- if (this.options.keep_trailing_blanks) {
97
- this.flush_pending_blanks();
97
+ this.evaluate_error(e as Error);
98
98
  }
99
99
 
100
100
  /* NOTE: No need to check `options.place_errors`!
@@ -105,12 +105,12 @@ export class DesmostCompiler
105
105
  */
106
106
  if (this.errors.length > 0) {
107
107
  this.desmos.setExpression({
108
- id: "deferred",
108
+ id: "desmost-deferred",
109
109
  type: "text",
110
- text: this.errors.map(err => format_error(err, this.options)).join("\n\n"),
110
+ text: this.errors.map(err => format_error(err, this.options)).join(`\n\n`),
111
111
  });
112
112
  } else {
113
- this.desmos.removeExpression({ id: "deferred" });
113
+ this.desmos.removeExpression({ id: "desmost-deferred" });
114
114
  }
115
115
 
116
116
  if (this.options.debug) {
@@ -244,6 +244,7 @@ export class DesmostCompiler
244
244
  {
245
245
  switch (this.options.errors) {
246
246
  case "crash":
247
+ this.desmos.setBlank();
247
248
  throw error;
248
249
 
249
250
  case "suppress":
@@ -66,7 +66,7 @@ export function prettify_latex(latex: string): string
66
66
  latex = latex.replaceAll(/(:|,)(?!\\ ) */g, "$1\\ ");
67
67
 
68
68
  latex = latex.replaceAll(
69
- /(?<=[^\w]|^)\\?(length|mean|median|count|total|repeat|join|sort|shuffle|unique|mod|ceil|floor|round|sign) ?(?=\(|\\left\()/g,
69
+ /(?<=[^\w]|^)\\?(length|mean|median|min|max|count|total|repeat|join|sort|shuffle|unique|mod|ceil|floor|round|sign) ?(?=\(|\\left\()/g,
70
70
  "\\operatorname{$1}"
71
71
  );
72
72
 
@@ -1,8 +1,9 @@
1
- import { emit_global_incantation, emit_expression } from "./emit";
2
- import { extract_settings, extract_viewport, extract_expression } from "./extract";
1
+ import { emit_incantation, emit_expression } from "./emit";
2
+ import { extract_expression } from "./extract";
3
3
 
4
+ import { fill_defaults, type DesmostOptions } from "../options";
4
5
  import { Ast } from "../parser";
5
- import type { DesmostOptions } from "../options";
6
+ import { GLOBAL_INCANTATIONS } from "../magic";
6
7
 
7
8
 
8
9
  export interface SemiStructuredAst
@@ -13,7 +14,9 @@ export interface SemiStructuredAst
13
14
 
14
15
 
15
16
  /**
16
- * Decompile Desmos into raw Desmost source code.
17
+ * Decompile Desmos into Desmost.
18
+ *
19
+ * This extracts relevant state from the given `desmos` calculator instance, emitting the minimal raw source code that would reconstruct that calculator instance.
17
20
  *
18
21
  * The caller must also supply a `blank` calculator instance. This is used as a reference for default field values, so that emitted incantations like `/desmos{}` don't get filled with a huge amount of noise.
19
22
  */
@@ -30,23 +33,36 @@ export function decompile(
30
33
  */
31
34
  blank?: Desmos.Calculator,
32
35
 
33
- // TODO doc
36
+ /**
37
+ * Decompilation options.
38
+ *
39
+ * See {@linkcode DesmostOptions} for available options.
40
+ */
34
41
  options?: Partial<DesmostOptions>,
35
42
  ): string
36
43
  {
37
- return ast_to_source(desmos_to_ast(desmos, blank ?? desmos));
44
+ let opts = fill_defaults(options);
45
+
46
+ let ast = desmos_to_ast(desmos, blank ?? desmos, opts);
47
+ let src = ast_to_source(ast, opts);
48
+
49
+ return src;
38
50
  }
39
51
 
40
52
  /**
41
53
  * Decompile `desmos` into a semi-structured AST.
42
54
  */
43
- export function desmos_to_ast(desmos: Desmos.Calculator, blank: Desmos.Calculator): SemiStructuredAst
55
+ export function desmos_to_ast(
56
+ desmos: Desmos.Calculator,
57
+ blank: Desmos.Calculator,
58
+ options: DesmostOptions,
59
+ ): SemiStructuredAst
44
60
  {
45
61
  return {
46
62
  globals: [
47
- extract_settings(desmos, blank),
48
- extract_viewport(desmos, blank),
49
- ].filter(x => x != null),
63
+ GLOBAL_INCANTATIONS.desmos.extract(desmos, blank),
64
+ GLOBAL_INCANTATIONS.viewport.extract(desmos, blank),
65
+ ].filter(x => x != undefined),
50
66
  locals: desmos.getExpressions().map(extract_expression),
51
67
  };
52
68
  }
@@ -54,11 +70,11 @@ export function desmos_to_ast(desmos: Desmos.Calculator, blank: Desmos.Calculato
54
70
  /**
55
71
  * Emit the Desmost source code representation of `ast`.
56
72
  */
57
- export function ast_to_source(ast: SemiStructuredAst): string
73
+ export function ast_to_source(ast: SemiStructuredAst, options: DesmostOptions): string
58
74
  {
59
75
  return (
60
- ast.globals.map(emit_global_incantation).join("\n")
61
- + "\n\n"
62
- + ast.locals.map(emit_expression).join("\n")
76
+ ast.globals.map(inc => emit_incantation(inc, options, { expand: true })).join("\n")
77
+ + (options.keep_leading_blanks ? "\n" : "\n\n")
78
+ + ast.locals.map(expr => emit_expression(expr, options)).join("\n")
63
79
  );
64
80
  }