astn 0.110.18 → 0.110.20

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 (167) hide show
  1. package/dist/bin/convert_to_json.js +10 -20
  2. package/dist/bin/validate_astn.js +9 -19
  3. package/dist/generated/{interface/schemas/target/resolved.d.ts → generic/astn_target.d.ts} +1 -1
  4. package/dist/generated/generic/astn_target.js +3 -0
  5. package/dist/generated/generic/resolve.d.ts +2 -2
  6. package/dist/generated/generic/resolve.js +14 -22
  7. package/dist/generated/implementation/generic/resolve.d.ts +81 -0
  8. package/dist/generated/implementation/generic/resolve.js +251 -0
  9. package/dist/generated/implementation/generic/unmarshall.d.ts +37 -0
  10. package/dist/generated/implementation/generic/unmarshall.js +168 -0
  11. package/dist/generated/implementation/schemas/ast/marshall.d.ts +7 -0
  12. package/dist/generated/implementation/schemas/ast/marshall.js +227 -0
  13. package/dist/generated/implementation/schemas/ast/serializer.d.ts +14 -0
  14. package/dist/generated/implementation/schemas/ast/serializer.js +328 -0
  15. package/dist/generated/implementation/schemas/ast/unmarshall.d.ts +7 -0
  16. package/dist/generated/implementation/schemas/ast/unmarshall.js +239 -0
  17. package/dist/generated/implementation/schemas/ide/marshall.d.ts +4 -0
  18. package/dist/generated/implementation/schemas/ide/marshall.js +81 -0
  19. package/dist/generated/implementation/schemas/ide/serializer.d.ts +3 -0
  20. package/dist/generated/implementation/schemas/ide/serializer.js +72 -0
  21. package/dist/generated/implementation/schemas/ide/unmarshall.d.ts +4 -0
  22. package/dist/generated/implementation/schemas/ide/unmarshall.js +79 -0
  23. package/dist/generated/implementation/schemas/parse_result/marshall.d.ts +3 -0
  24. package/dist/generated/implementation/schemas/parse_result/marshall.js +184 -0
  25. package/dist/generated/implementation/schemas/parse_result/serializer.d.ts +6 -0
  26. package/dist/generated/implementation/schemas/parse_result/serializer.js +288 -0
  27. package/dist/generated/implementation/schemas/parse_result/unmarshall.d.ts +3 -0
  28. package/dist/generated/implementation/schemas/parse_result/unmarshall.js +103 -0
  29. package/dist/generated/implementation/schemas/target/marshall.d.ts +3 -0
  30. package/dist/generated/implementation/schemas/target/marshall.js +122 -0
  31. package/dist/generated/implementation/schemas/target/serializer.d.ts +3 -0
  32. package/dist/generated/implementation/schemas/target/serializer.js +122 -0
  33. package/dist/generated/implementation/schemas/target/unmarshall.d.ts +3 -0
  34. package/dist/generated/implementation/schemas/target/unmarshall.js +81 -0
  35. package/dist/generated/implementation/schemas/token/marshall.d.ts +11 -0
  36. package/dist/generated/implementation/schemas/token/marshall.js +230 -0
  37. package/dist/generated/implementation/schemas/token/unmarshall.d.ts +11 -0
  38. package/dist/generated/implementation/schemas/token/unmarshall.js +180 -0
  39. package/dist/generated/interface/core/astn_source.d.ts +116 -0
  40. package/dist/generated/interface/core/astn_source.js +3 -0
  41. package/dist/generated/interface/{schemas/target/unresolved.d.ts → core/astn_target.d.ts} +27 -27
  42. package/dist/generated/interface/core/astn_target.js +3 -0
  43. package/dist/generated/interface/core/resolve.d.ts +11 -0
  44. package/dist/generated/interface/core/resolve.js +3 -0
  45. package/dist/generated/interface/core/unconstrained.d.ts +19 -0
  46. package/dist/generated/interface/core/unconstrained.js +3 -0
  47. package/dist/generated/interface/core/unresolved.d.ts +162 -13
  48. package/dist/generated/interface/generic/resolve.d.ts +11 -0
  49. package/dist/generated/interface/generic/resolve.js +3 -0
  50. package/dist/generated/interface/schemas/ast/marshall.d.ts +226 -0
  51. package/dist/generated/interface/schemas/{ide/resolved.js → ast/marshall.js} +1 -1
  52. package/dist/generated/interface/schemas/ast/migrate_boilerplate.d.ts +134 -0
  53. package/dist/generated/interface/schemas/ast/migrate_boilerplate.js +3 -0
  54. package/dist/generated/interface/schemas/ast/serializer.d.ts +436 -0
  55. package/dist/generated/interface/schemas/ast/{unresolved.js → serializer.js} +1 -1
  56. package/dist/generated/interface/schemas/ast/unconstrained.d.ts +20 -210
  57. package/dist/generated/interface/schemas/ast/unmarshall.d.ts +134 -0
  58. package/dist/generated/interface/schemas/{ide/unresolved.js → ast/unmarshall.js} +1 -1
  59. package/dist/generated/interface/schemas/ide/marshall.d.ts +136 -0
  60. package/dist/generated/interface/schemas/{ast/resolved.js → ide/marshall.js} +1 -1
  61. package/dist/generated/interface/schemas/ide/migrate_boilerplate.d.ts +68 -0
  62. package/dist/generated/interface/schemas/ide/migrate_boilerplate.js +3 -0
  63. package/dist/generated/interface/schemas/ide/serializer.d.ts +106 -0
  64. package/dist/generated/interface/schemas/{target/unresolved.js → ide/serializer.js} +1 -1
  65. package/dist/generated/interface/schemas/ide/unconstrained.d.ts +50 -29
  66. package/dist/generated/interface/schemas/ide/unmarshall.d.ts +68 -0
  67. package/dist/generated/interface/schemas/{parse_result/unresolved.js → ide/unmarshall.js} +1 -1
  68. package/dist/generated/interface/schemas/parse_result/marshall.d.ts +106 -0
  69. package/dist/generated/interface/schemas/parse_result/{resolved.js → marshall.js} +1 -1
  70. package/dist/generated/interface/schemas/parse_result/migrate_boilerplate.d.ts +46 -0
  71. package/dist/generated/interface/schemas/parse_result/migrate_boilerplate.js +3 -0
  72. package/dist/generated/interface/schemas/parse_result/serializer.d.ts +196 -0
  73. package/dist/generated/interface/schemas/parse_result/serializer.js +3 -0
  74. package/dist/generated/interface/schemas/parse_result/unconstrained.d.ts +20 -168
  75. package/dist/generated/interface/schemas/parse_result/unmarshall.d.ts +46 -0
  76. package/dist/generated/interface/schemas/parse_result/unmarshall.js +3 -0
  77. package/dist/generated/interface/schemas/target/marshall.d.ts +126 -0
  78. package/dist/generated/interface/schemas/target/{resolved.js → marshall.js} +1 -1
  79. package/dist/generated/interface/schemas/target/migrate_boilerplate.d.ts +46 -0
  80. package/dist/generated/interface/schemas/target/migrate_boilerplate.js +3 -0
  81. package/dist/generated/interface/schemas/target/serializer.d.ts +126 -0
  82. package/dist/generated/interface/schemas/target/serializer.js +3 -0
  83. package/dist/generated/interface/schemas/target/unconstrained.d.ts +1 -1
  84. package/dist/generated/interface/schemas/target/unmarshall.d.ts +46 -0
  85. package/dist/generated/interface/schemas/target/unmarshall.js +3 -0
  86. package/dist/generated/interface/schemas/target_json/unconstrained.d.ts +1 -1
  87. package/dist/generated/interface/schemas/token/marshall.d.ts +346 -0
  88. package/dist/generated/interface/schemas/token/marshall.js +3 -0
  89. package/dist/generated/interface/schemas/token/migrate_boilerplate.d.ts +222 -0
  90. package/dist/generated/interface/schemas/token/migrate_boilerplate.js +3 -0
  91. package/dist/generated/interface/schemas/token/unconstrained.d.ts +326 -0
  92. package/dist/generated/interface/schemas/token/unconstrained.js +3 -0
  93. package/dist/generated/interface/schemas/token/unmarshall.d.ts +222 -0
  94. package/dist/generated/interface/schemas/token/unmarshall.js +3 -0
  95. package/dist/index.js +8 -18
  96. package/dist/parse/ast.d.ts +10 -0
  97. package/dist/parse/ast.js +227 -0
  98. package/dist/parse/astn_parse_generic.d.ts +8 -0
  99. package/dist/parse/astn_parse_generic.js +65 -0
  100. package/dist/parse/parse.d.ts +3 -10
  101. package/dist/parse/parse.js +19 -226
  102. package/dist/parse/parse_generic.d.ts +7 -42
  103. package/dist/parse/parse_generic.js +14 -605
  104. package/dist/{transformations/parse_generic.d.ts → parse/string_iterator.d.ts} +19 -15
  105. package/dist/parse/string_iterator.js +139 -0
  106. package/dist/parse/token.d.ts +9 -0
  107. package/dist/parse/token.js +506 -0
  108. package/dist/parse/tokenize.d.ts +8 -0
  109. package/dist/parse/tokenize.js +483 -0
  110. package/dist/serializers/json.js +8 -18
  111. package/dist/serializers/parse_result.js +8 -18
  112. package/dist/transformations/ast/ide.d.ts +3 -2
  113. package/dist/transformations/ast/ide.js +8 -18
  114. package/dist/transformations/ast/json_target.d.ts +1 -1
  115. package/dist/transformations/ast/json_target.js +8 -18
  116. package/dist/transformations/target/fountain_pen_block.js +10 -20
  117. package/dist/transformations/target_json/fountain_pen_block.js +8 -18
  118. package/package.json +5 -7
  119. package/dist/generated/interface/schemas/ast/poormans_parser.d.ts +0 -1108
  120. package/dist/generated/interface/schemas/ast/poormans_parser.js +0 -3
  121. package/dist/generated/interface/schemas/ast/resolved.d.ts +0 -1108
  122. package/dist/generated/interface/schemas/ast/unresolved.d.ts +0 -1108
  123. package/dist/generated/interface/schemas/ide/poormans_parser.d.ts +0 -161
  124. package/dist/generated/interface/schemas/ide/poormans_parser.js +0 -3
  125. package/dist/generated/interface/schemas/ide/resolved.d.ts +0 -161
  126. package/dist/generated/interface/schemas/ide/unresolved.d.ts +0 -161
  127. package/dist/generated/interface/schemas/parse_result/poormans_parser.d.ts +0 -416
  128. package/dist/generated/interface/schemas/parse_result/poormans_parser.js +0 -3
  129. package/dist/generated/interface/schemas/parse_result/resolved.d.ts +0 -416
  130. package/dist/generated/interface/schemas/parse_result/unresolved.d.ts +0 -416
  131. package/dist/generated/interface/schemas/target/poormans_parser.d.ts +0 -186
  132. package/dist/generated/interface/schemas/target/poormans_parser.js +0 -3
  133. package/dist/generated/interface/schemas/target_json/poormans_parser.d.ts +0 -169
  134. package/dist/generated/interface/schemas/target_json/poormans_parser.js +0 -3
  135. package/dist/generated/interface/schemas/target_json/resolved.d.ts +0 -169
  136. package/dist/generated/interface/schemas/target_json/resolved.js +0 -3
  137. package/dist/generated/interface/schemas/target_json/unresolved.d.ts +0 -169
  138. package/dist/generated/interface/schemas/target_json/unresolved.js +0 -3
  139. package/dist/lib/globals.d.ts +0 -24
  140. package/dist/lib/globals.js +0 -2
  141. package/dist/lib/transformations/create_error_message.d.ts +0 -5
  142. package/dist/lib/transformations/create_error_message.js +0 -89
  143. package/dist/lib/transformations/format.d.ts +0 -42
  144. package/dist/lib/transformations/format.js +0 -166
  145. package/dist/lib/transformations/fountain_pen/astn.d.ts +0 -11
  146. package/dist/lib/transformations/fountain_pen/astn.js +0 -156
  147. package/dist/lib/transformations/fountain_pen/json.d.ts +0 -4
  148. package/dist/lib/transformations/fountain_pen/json.js +0 -113
  149. package/dist/lib/transformations/parse.d.ts +0 -11
  150. package/dist/lib/transformations/parse.js +0 -257
  151. package/dist/lib/transformations/parse_generic.d.ts +0 -43
  152. package/dist/lib/transformations/parse_generic.js +0 -644
  153. package/dist/transformations/create_error_message.d.ts +0 -5
  154. package/dist/transformations/create_error_message.js +0 -89
  155. package/dist/transformations/format.d.ts +0 -42
  156. package/dist/transformations/format.js +0 -166
  157. package/dist/transformations/fountain_pen/astn.d.ts +0 -11
  158. package/dist/transformations/fountain_pen/astn.js +0 -166
  159. package/dist/transformations/fountain_pen/json.d.ts +0 -4
  160. package/dist/transformations/fountain_pen/json.js +0 -123
  161. package/dist/transformations/parse.d.ts +0 -11
  162. package/dist/transformations/parse.js +0 -257
  163. package/dist/transformations/parse_generic.js +0 -644
  164. package/dist/transformations/target/fountain_pen/astn.d.ts +0 -11
  165. package/dist/transformations/target/fountain_pen/astn.js +0 -156
  166. package/dist/transformations/target/fountain_pen/json.d.ts +0 -4
  167. package/dist/transformations/target/fountain_pen/json.js +0 -113
@@ -15,25 +15,15 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
35
25
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.create_token_iterator = exports.Tokenizer_Result = exports.Annotated_Token = exports.create_string_iterator = exports.throw_unexpected_token = exports.throw_parse_error = void 0;
26
+ exports.create_astn_token_iterator = exports.throw_unexpected_token = exports.throw_parse_error = void 0;
37
27
  const _ea = __importStar(require("exupery-core-alg"));
38
28
  const throw_parse_error = (type, range) => {
39
29
  throw new _ea.Error({
@@ -54,597 +44,16 @@ const throw_unexpected_token = (found, expected) => {
54
44
  });
55
45
  };
56
46
  exports.throw_unexpected_token = throw_unexpected_token;
57
- const op = {
58
- 'to character list': _ea.impure.text['to character list'],
59
- 'starts with': _ea.impure.text['starts with'],
60
- };
61
- const parse_whitespace = (string_iterator) => {
62
- const start = string_iterator['create location info']();
63
- return {
64
- 'value': _ea.impure.text['from character list'](_ea.pure.list.build(($i) => {
65
- while (true) {
66
- const Character = {
67
- tab: 0x09, // \t
68
- line_feed: 0x0A, // \n
69
- carriage_return: 0x0D, // \r
70
- space: 0x20, //
71
- };
72
- {
73
- const $ = string_iterator['get current character']();
74
- if ($ === null) {
75
- return;
76
- }
77
- switch ($) {
78
- case Character.tab:
79
- string_iterator['consume character']();
80
- $i['add element']($);
81
- break;
82
- case Character.line_feed:
83
- string_iterator['consume character']();
84
- $i['add element']($);
85
- break;
86
- case Character.carriage_return:
87
- string_iterator['consume character']();
88
- $i['add element']($);
89
- break;
90
- case Character.space:
91
- string_iterator['consume character']();
92
- $i['add element']($);
93
- break;
94
- default:
95
- return;
96
- }
97
- }
98
- }
99
- })),
100
- 'range': {
101
- 'start': start,
102
- 'end': string_iterator['create location info'](),
103
- }
104
- };
105
- };
106
- const parse_trivia = (string_iterator) => {
107
- return {
108
- 'leading whitespace': parse_whitespace(string_iterator),
109
- 'comments': _ea.pure.list.build(($i) => {
110
- while (true) {
111
- const $ = string_iterator['get current character']();
112
- if ($ === null) {
113
- return; //normal end of input
114
- }
115
- switch ($) {
116
- case 0x2F: // /
117
- const start = string_iterator['create location info']();
118
- const next_char = string_iterator['look ahead'](1);
119
- if (next_char === null) {
120
- const start = string_iterator['create location info']();
121
- string_iterator['consume character']();
122
- const end = string_iterator['create location info']();
123
- return (0, exports.throw_parse_error)(['lexer', ['dangling slash', null]], {
124
- 'start': start,
125
- 'end': end
126
- });
127
- }
128
- switch (next_char) {
129
- case 0x2F: // /
130
- string_iterator['consume character'](); // consume the first /
131
- string_iterator['consume character'](); // consume the second /
132
- const Character = {
133
- line_feed: 0x0A, // \n
134
- carriage_return: 0x0D, // \r
135
- solidus: 0x2F, // /
136
- };
137
- $i['add element']({
138
- 'type': ['line', null],
139
- 'content': _ea.impure.text['from character list'](_ea.pure.list.build(($i) => {
140
- while (true) {
141
- const $ = string_iterator['get current character']();
142
- if ($ === null) {
143
- return;
144
- }
145
- switch ($) {
146
- case Character.line_feed:
147
- return;
148
- case Character.carriage_return:
149
- return;
150
- default:
151
- string_iterator['consume character']();
152
- $i['add element']($);
153
- }
154
- }
155
- })),
156
- 'range': {
157
- 'start': start,
158
- 'end': string_iterator['create location info'](),
159
- },
160
- 'trailing whitespace': parse_whitespace(string_iterator)
161
- });
162
- break;
163
- case 0x2A: { // *
164
- string_iterator['consume character'](); // consume the first /
165
- string_iterator['consume character'](); // consume the asterisk
166
- $i['add element']({
167
- 'type': ['block', null],
168
- 'content': _ea.impure.text['from character list'](_ea.pure.list.build(($i) => {
169
- let found_asterisk = false;
170
- const Character = {
171
- solidus: 0x2F, // /
172
- asterisk: 0x2A, // *
173
- };
174
- while (true) {
175
- const $ = string_iterator['get current character']();
176
- if ($ === null) {
177
- return (0, exports.throw_parse_error)(['lexer', ['unterminated block comment', null]], {
178
- 'start': start,
179
- 'end': string_iterator['create location info']()
180
- });
181
- }
182
- if ($ === Character.solidus && found_asterisk) {
183
- string_iterator['consume character'](); // consume the solidus
184
- //found asterisk before solidus, so this is the end of the comment
185
- return;
186
- }
187
- //not a solidus, so this is part of the comment
188
- if (found_asterisk) {
189
- $i['add element'](Character.asterisk); // add the asterisk that was found before but was not part of the end delimiter
190
- }
191
- if ($ === Character.asterisk) {
192
- found_asterisk = true;
193
- }
194
- else {
195
- $i['add element']($);
196
- }
197
- string_iterator['consume character']();
198
- }
199
- })),
200
- 'range': {
201
- 'start': start,
202
- 'end': string_iterator['create location info'](),
203
- },
204
- 'trailing whitespace': parse_whitespace(string_iterator)
205
- });
206
- break;
207
- }
208
- default:
209
- return (0, exports.throw_parse_error)(['lexer', ['dangling slash', null]], {
210
- 'start': start,
211
- 'end': string_iterator['create location info']()
212
- });
213
- }
214
- break;
215
- default:
216
- return;
217
- }
218
- }
219
- })
220
- };
221
- };
222
- const parse_delimited_string = (string_iterator, is_end_character, allow_newlines) => {
223
- const Character = {
224
- backspace: 0x08, // \b
225
- form_feed: 0x0C, // \f
226
- tab: 0x09, // \t
227
- line_feed: 0x0A, // \n
228
- carriage_return: 0x0D, // \r
229
- quotation_mark: 0x22, // "
230
- backtick: 0x60, // `
231
- apostrophe: 0x27, // '
232
- reverse_solidus: 0x5C, // \
233
- solidus: 0x2F, // /
234
- a: 0x61, // a
235
- b: 0x62, // b
236
- f: 0x66, // f
237
- n: 0x6E, // n
238
- r: 0x72, // r
239
- t: 0x74, // t
240
- u: 0x75, // u
241
- A: 0x41, // A
242
- F: 0x46, // F
243
- };
244
- const start = string_iterator['create location info']();
245
- const txt = _ea.impure.text['from character list'](_ea.pure.list.build(($i) => {
246
- while (true) {
247
- const $ = string_iterator['get current character']();
248
- if ($ === null) {
249
- return (0, exports.throw_parse_error)(['lexer', ['unterminated string', null]], {
250
- 'start': start,
251
- 'end': string_iterator['create location info']()
252
- });
253
- }
254
- if (is_end_character($)) {
255
- string_iterator['consume character'](); // consume the end character
256
- return;
257
- }
258
- switch ($) {
259
- case Character.reverse_solidus:
260
- string_iterator['consume character']();
261
- {
262
- const $ = string_iterator['get current character']();
263
- if ($ === null) {
264
- return (0, exports.throw_parse_error)(['lexer', ['missing character after escape', null]], {
265
- 'start': start,
266
- 'end': string_iterator['create location info']()
267
- });
268
- }
269
- switch ($) {
270
- case Character.quotation_mark:
271
- string_iterator['consume character']();
272
- $i['add element'](Character.quotation_mark);
273
- break;
274
- case Character.reverse_solidus:
275
- string_iterator['consume character']();
276
- $i['add element'](Character.reverse_solidus);
277
- break;
278
- case Character.solidus:
279
- string_iterator['consume character']();
280
- $i['add element'](Character.solidus);
281
- break;
282
- case Character.b:
283
- string_iterator['consume character']();
284
- $i['add element'](Character.backspace);
285
- break;
286
- case Character.f:
287
- string_iterator['consume character']();
288
- $i['add element'](Character.form_feed);
289
- break;
290
- case Character.n:
291
- if (allow_newlines) {
292
- return (0, exports.throw_parse_error)(['lexer', ['unexpected end of line in delimited string', null]], {
293
- 'start': start,
294
- 'end': string_iterator['create location info']()
295
- });
296
- }
297
- string_iterator['consume character']();
298
- $i['add element'](Character.line_feed);
299
- break;
300
- case Character.r:
301
- if (allow_newlines) {
302
- return (0, exports.throw_parse_error)(['lexer', ['unexpected end of line in delimited string', null]], {
303
- 'start': start,
304
- 'end': string_iterator['create location info']()
305
- });
306
- }
307
- string_iterator['consume character']();
308
- $i['add element'](Character.carriage_return);
309
- break;
310
- case Character.t:
311
- string_iterator['consume character']();
312
- $i['add element'](Character.tab);
313
- break;
314
- case Character.u:
315
- string_iterator['consume character']();
316
- $i['add element'](_ea.impure.integer['parse hexadecimal'](_ea.impure.text['from character list']((_ea.pure.list.build(($i) => {
317
- const get_char = () => {
318
- const char = string_iterator['get current character']();
319
- if (char === null) {
320
- return (0, exports.throw_parse_error)(['lexer', ['unterminated unicode escape sequence', null]], {
321
- 'start': start,
322
- 'end': string_iterator['create location info']()
323
- });
324
- }
325
- if (char < Character.a || (char > Character.f && char < Character.A) || char > Character.F || char < 0x30 || char > 0x39) {
326
- return (0, exports.throw_parse_error)(['lexer', ['invalid unicode escape sequence', null]], {
327
- 'start': start,
328
- 'end': string_iterator['create location info']()
329
- });
330
- }
331
- string_iterator['consume character']();
332
- return char;
333
- };
334
- $i['add element'](get_char());
335
- $i['add element'](get_char());
336
- $i['add element'](get_char());
337
- $i['add element'](get_char());
338
- })))));
339
- break;
340
- default:
341
- return (0, exports.throw_parse_error)(['lexer', ['unknown escape character', null]], {
342
- 'start': start,
343
- 'end': string_iterator['create location info']()
344
- });
345
- }
346
- }
347
- break;
348
- default:
349
- string_iterator['consume character']();
350
- $i['add element']($);
351
- }
352
- }
353
- }));
354
- return txt;
355
- };
356
- const Whitespace = {
357
- tab: 0x09, // \t
358
- line_feed: 0x0A, // \n
359
- carriage_return: 0x0D, // \r
360
- space: 0x20, //
361
- };
362
- /**
363
- * Creates a string iterator that allows iterating over characters in a string,
364
- * while keeping track of line numbers, columns, and line indentation.
365
- */
366
- const create_string_iterator = ($, $p) => {
367
- const source = $;
368
- const characters = op['to character list']($);
369
- const length = characters.__get_length();
370
- let found_carriage_return_before = false;
371
- let position = 0;
372
- let relative_position = {
373
- 'line': 0,
374
- 'column': 0,
375
- 'line indentation': null
376
- };
377
- const consume_character = () => {
378
- const c = characters.__get_element_at(position);
379
- const start = relative_position;
380
- relative_position = c.transform(($) => {
381
- return $ === Whitespace.line_feed
382
- ? {
383
- 'line': relative_position.line + 1,
384
- 'column': 0,
385
- 'line indentation': null,
386
- }
387
- : found_carriage_return_before
388
- ? {
389
- 'line': relative_position.line + 1,
390
- 'column': 0,
391
- 'line indentation': null,
392
- }
393
- : {
394
- 'line': relative_position.line,
395
- 'column': relative_position['column'] + ($ === Whitespace.tab
396
- ? $p['tab size']
397
- : 1),
398
- 'line indentation': relative_position['line indentation'] !== null
399
- ? relative_position['line indentation']
400
- : $ === Whitespace.space || $ === Whitespace.tab
401
- ? null
402
- : relative_position['column'],
403
- };
404
- }, () => relative_position //this is weird, we were already at the end of the list
405
- );
406
- // check for control characters
407
- c.map(($) => {
408
- if ($ < 0x20 && $ !== Whitespace.tab && $ !== Whitespace.line_feed && $ !== Whitespace.carriage_return) {
409
- (0, exports.throw_parse_error)(['lexer', ['unexpected control character', $]], {
410
- 'start': {
411
- 'absolute': position - 1,
412
- 'relative': {
413
- 'line': relative_position.line,
414
- 'column': relative_position['column'] - 1,
415
- }
416
- },
417
- 'end': {
418
- 'absolute': position,
419
- 'relative': {
420
- 'line': relative_position.line,
421
- 'column': relative_position['column'],
422
- }
423
- }
424
- });
425
- }
426
- });
427
- found_carriage_return_before = c.transform(($) => $ === Whitespace.carriage_return, () => false);
428
- position += 1;
429
- };
430
- return {
431
- 'consume string': ($) => {
432
- op['to character list']($).__for_each(() => {
433
- consume_character();
434
- });
435
- },
436
- 'consume character': consume_character,
437
- 'get current character': () => {
438
- if (position === length) {
439
- return null;
440
- }
441
- return characters.__get_element_at(position).transform(($) => $, () => null);
442
- },
443
- 'look ahead': ($) => {
444
- const next_position = position + $;
445
- if (next_position >= length) {
446
- return null;
447
- }
448
- return characters.__get_element_at(next_position).transform(($) => $, () => null);
449
- },
450
- 'create location info': () => {
451
- return {
452
- 'absolute': position,
453
- 'relative': {
454
- 'line': relative_position.line,
455
- 'column': relative_position['column'],
456
- }
457
- };
458
- },
459
- 'create offset location info': (subtract) => {
460
- return {
461
- 'absolute': position - subtract,
462
- 'relative': {
463
- 'line': relative_position.line,
464
- 'column': relative_position['column'] - subtract,
465
- }
466
- };
467
- },
468
- 'create location info string': () => `${relative_position.line}:${relative_position['column']}`,
469
- 'get line indentation': () => {
470
- return relative_position['line indentation'] !== null
471
- ? relative_position['line indentation']
472
- : relative_position['column'];
473
- },
474
- 'starts with': ($) => {
475
- return op['starts with'](source, $, position);
476
- }
477
- };
478
- };
479
- exports.create_string_iterator = create_string_iterator;
480
- const Annotated_Token = (st) => {
481
- const $ = st['get current character']();
482
- if ($ === null) {
483
- return (0, exports.throw_parse_error)(['lexer', ['unexpected end of input', null]], {
484
- 'start': st['create location info'](),
485
- 'end': st['create location info'](),
486
- });
487
- }
488
- return {
489
- 'start': st['create location info'](),
490
- 'type': _ea.block(() => {
491
- const Character = {
492
- open_angle_bracket: 0x3C, // <
493
- open_brace: 0x7B, // {
494
- open_bracket: 0x5B, // [
495
- open_paren: 0x28, // (
496
- close_angle_bracket: 0x3E, // >
497
- close_brace: 0x7D, // }
498
- close_bracket: 0x5D, // ]
499
- close_paren: 0x29, // )
500
- apostrophe: 0x27, // '
501
- asterisk: 0x2A, // *
502
- at: 0x40, // @
503
- backtick: 0x60, // `
504
- bang: 0x21,
505
- colon: 0x3A, // :
506
- comma: 0x2C, // ,
507
- pipe: 0x7C, // |
508
- quotation_mark: 0x22, // "
509
- slash: 0x2F, // /
510
- tilde: 0x7E, // ~
511
- space: 0x20, // space
512
- tab: 0x09, // \t
513
- };
514
- switch ($) {
515
- case Character.open_brace:
516
- st['consume character']();
517
- return ['{', null];
518
- case Character.open_bracket:
519
- st['consume character']();
520
- return ['[', null];
521
- case Character.open_angle_bracket:
522
- st['consume character']();
523
- return ['<', null];
524
- case Character.open_paren:
525
- st['consume character']();
526
- return ['(', null];
527
- case Character.close_brace:
528
- st['consume character']();
529
- return ['}', null];
530
- case Character.close_bracket:
531
- st['consume character']();
532
- return [']', null];
533
- case Character.close_angle_bracket:
534
- st['consume character']();
535
- return ['>', null];
536
- case Character.close_paren:
537
- st['consume character']();
538
- return [')', null];
539
- //individuals
540
- case Character.pipe:
541
- st['consume character']();
542
- return ['|', null];
543
- case Character.tilde:
544
- st['consume character']();
545
- return ['~', null];
546
- case Character.asterisk:
547
- st['consume character']();
548
- return ['*', null];
549
- case Character.at:
550
- st['consume character']();
551
- return ['@', null];
552
- case Character.bang:
553
- st['consume character']();
554
- return ['!', null];
555
- case Character.colon:
556
- st['consume character']();
557
- return [':', null];
558
- case Character.comma:
559
- st['consume character']();
560
- return [',', null];
561
- case Character.quotation_mark:
562
- st['consume character']();
563
- return ['string', {
564
- 'value': parse_delimited_string(st, ($) => $ === Character.quotation_mark, true),
565
- 'type': ['quoted', null],
566
- }];
567
- case Character.backtick:
568
- st['consume character']();
569
- return ['string', {
570
- 'value': parse_delimited_string(st, ($) => $ === Character.backtick, false),
571
- 'type': ['backticked', null],
572
- }];
573
- case Character.apostrophe:
574
- st['consume character']();
575
- return ['string', {
576
- 'value': parse_delimited_string(st, ($) => $ === Character.apostrophe, false),
577
- 'type': ['apostrophed', null],
578
- }];
579
- default:
580
- return ['string', {
581
- 'value': _ea.impure.text['from character list'](_ea.pure.list.build(($i) => {
582
- while (true) {
583
- const $ = st['get current character']();
584
- if ($ === null) {
585
- return;
586
- }
587
- if ($ === Character.open_brace ||
588
- $ === Character.close_brace ||
589
- $ === Character.open_bracket ||
590
- $ === Character.close_bracket ||
591
- $ === Character.open_angle_bracket ||
592
- $ === Character.close_angle_bracket ||
593
- $ === Character.open_paren ||
594
- $ === Character.close_paren ||
595
- $ === Character.apostrophe ||
596
- $ === Character.asterisk ||
597
- $ === Character.at ||
598
- $ === Character.backtick ||
599
- $ === Character.bang ||
600
- $ === Character.colon ||
601
- $ === Character.comma ||
602
- $ === Character.pipe ||
603
- $ === Character.quotation_mark ||
604
- $ === Character.slash ||
605
- $ === Character.tilde ||
606
- $ === Whitespace.space ||
607
- $ === Whitespace.tab ||
608
- $ === Whitespace.line_feed ||
609
- $ === Whitespace.carriage_return) {
610
- return;
611
- }
612
- st['consume character']();
613
- $i['add element']($);
614
- }
615
- })),
616
- 'type': ['undelimited', null],
617
- }];
618
- }
619
- }),
620
- 'end': st['create location info'](),
621
- 'trailing trivia': parse_trivia(st)
622
- };
623
- };
624
- exports.Annotated_Token = Annotated_Token;
625
- const Tokenizer_Result = ($, $p) => {
626
- return {
627
- 'leading trivia': parse_trivia($p['string iterator']),
628
- 'tokens': _ea.pure.list.build($i => {
629
- while ($p['string iterator']['get current character']() !== null) {
630
- const token = (0, exports.Annotated_Token)($p['string iterator']);
631
- $i['add element'](token);
632
- }
633
- }),
634
- 'end': $p['string iterator']['create location info']()
635
- };
636
- };
637
- exports.Tokenizer_Result = Tokenizer_Result;
638
- const create_token_iterator = ($) => {
47
+ const create_astn_token_iterator = ($, end) => {
639
48
  let position = 0;
640
49
  return {
641
50
  'get required token': (pet) => {
642
- return $.tokens.__get_element_at(position).transform(($) => $, () => (0, exports.throw_parse_error)(['parser', {
51
+ return $.__get_element_at(position).transform(($) => $, () => (0, exports.throw_parse_error)(['parser', {
643
52
  'expected': pet,
644
53
  'cause': ['missing token', null]
645
54
  }], {
646
- 'start': $.end,
647
- 'end': $.end,
55
+ 'start': end,
56
+ 'end': end,
648
57
  }));
649
58
  },
650
59
  'consume token': () => {
@@ -652,5 +61,5 @@ const create_token_iterator = ($) => {
652
61
  },
653
62
  };
654
63
  };
655
- exports.create_token_iterator = create_token_iterator;
656
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VfZ2VuZXJpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZS9wYXJzZV9nZW5lcmljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF1QztBQU9oQyxNQUFNLGlCQUFpQixHQUFHLENBQzdCLElBQW9DLEVBQ3BDLEtBQWdCLEVBQ1gsRUFBRTtJQUNQLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUEyQjtRQUMxQyxNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxLQUFLO0tBQ2pCLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQVJZLFFBQUEsaUJBQWlCLHFCQVE3QjtBQUVNLE1BQU0sc0JBQXNCLEdBQUcsQ0FDbEMsS0FBbUMsRUFDbkMsUUFBd0UsRUFDbkUsRUFBRTtJQUNQLE9BQU8sSUFBQSx5QkFBaUIsRUFDcEIsQ0FBQyxRQUFRLEVBQUU7WUFDUCxVQUFVLEVBQUUsUUFBUTtZQUNwQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRTtvQkFDMUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJO2lCQUN0QixDQUFDO1NBQ0wsQ0FBQyxFQUNGO1FBQ0ksT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRztLQUNuQixDQUNKLENBQUE7QUFDTCxDQUFDLENBQUE7QUFoQlksUUFBQSxzQkFBc0IsMEJBZ0JsQztBQTRCRCxNQUFNLEVBQUUsR0FBRztJQUNQLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3pELGFBQWEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7Q0FDaEQsQ0FBQTtBQUVELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxlQUFnQyxFQUFrQixFQUFFO0lBQzFFLE1BQU0sS0FBSyxH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
64
+ exports.create_astn_token_iterator = create_astn_token_iterator;
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VfZ2VuZXJpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZS9wYXJzZV9nZW5lcmljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQXVDO0FBUWhDLE1BQU0saUJBQWlCLEdBQUcsQ0FDN0IsSUFBc0MsRUFDdEMsS0FBb0IsRUFDZixFQUFFO0lBQ1AsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQTZCO1FBQzVDLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLEtBQUs7S0FDakIsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBUlksUUFBQSxpQkFBaUIscUJBUTdCO0FBRU0sTUFBTSxzQkFBc0IsR0FBRyxDQUNsQyxLQUE4QixFQUM5QixRQUEwRSxFQUNyRSxFQUFFO0lBQ1AsT0FBTyxJQUFBLHlCQUFpQixFQUNwQixDQUFDLFFBQVEsRUFBRTtZQUNQLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFO29CQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUk7aUJBQ3RCLENBQUM7U0FDTCxDQUFDLEVBQ0Y7UUFDSSxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDcEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHO0tBQ25CLENBQ0osQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQWhCWSxRQUFBLHNCQUFzQiwwQkFnQmxDO0FBSU0sTUFBTSwwQkFBMEIsR0FBRyxDQUFDLENBQWtDLEVBQUUsR0FBZ0IsRUFBdUIsRUFBRTtJQUNwSCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUE7SUFDaEIsT0FBTztRQUNILG9CQUFvQixFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDMUIsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUN6QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUNSLEdBQUcsRUFBRSxDQUFDLElBQUEseUJBQWlCLEVBQ25CLENBQUMsUUFBUSxFQUFFO29CQUNQLFVBQVUsRUFBRSxHQUFHO29CQUNmLE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUM7aUJBQ25DLENBQUMsRUFDRjtnQkFDSSxPQUFPLEVBQUUsR0FBRztnQkFDWixLQUFLLEVBQUUsR0FBRzthQUNiLENBQ0osQ0FDSixDQUFBO1FBQ0wsQ0FBQztRQUNELGVBQWUsRUFBRSxHQUFHLEVBQUU7WUFDbEIsUUFBUSxJQUFJLENBQUMsQ0FBQTtRQUNqQixDQUFDO0tBQ0osQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQXRCWSxRQUFBLDBCQUEwQiw4QkFzQnRDIn0=