@traqula/generator-sparql-1-2 0.0.15 → 0.0.17

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/lib/index.cjs CHANGED
@@ -24,8 +24,8 @@ __export(index_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(index_exports);
26
26
 
27
- // ../../packages/core/lib/CoreFactory.js
28
- var CoreFactory = class {
27
+ // ../../packages/core/lib/AstCoreFactory.js
28
+ var AstCoreFactory = class {
29
29
  wrap(val, loc) {
30
30
  return { val, loc };
31
31
  }
@@ -151,214 +151,6 @@ var CoreFactory = class {
151
151
  }
152
152
  };
153
153
 
154
- // ../../packages/core/lib/generator-builder/dynamicGenerator.js
155
- var DynamicGenerator = class {
156
- rules;
157
- factory = new CoreFactory();
158
- __context = void 0;
159
- origSource = "";
160
- generatedUntil = 0;
161
- expectsSpace;
162
- stringBuilder = [];
163
- constructor(rules) {
164
- this.rules = rules;
165
- for (const rule of Object.values(rules)) {
166
- this[rule.name] = ((input, context, args) => {
167
- this.expectsSpace = false;
168
- this.stringBuilder.length = 0;
169
- this.origSource = context.origSource;
170
- this.generatedUntil = context?.offset ?? 0;
171
- this.setContext(context);
172
- this.subrule(rule, input, args);
173
- this.catchup(this.origSource.length);
174
- return this.stringBuilder.join("");
175
- });
176
- }
177
- }
178
- setContext(context) {
179
- this.__context = context;
180
- }
181
- getSafeContext() {
182
- return this.__context;
183
- }
184
- subrule = (cstDef, ast, ...arg) => {
185
- const def = this.rules[cstDef.name];
186
- if (!def) {
187
- throw new Error(`Rule ${cstDef.name} not found`);
188
- }
189
- const generate = () => def.gImpl({
190
- SUBRULE: this.subrule,
191
- PRINT: this.print,
192
- PRINT_SPACE_LEFT: this.printSpaceLeft,
193
- PRINT_WORD: this.printWord,
194
- PRINT_WORDS: this.printWords,
195
- CATCHUP: this.catchup,
196
- HANDLE_LOC: this.handleLoc
197
- })(ast, this.getSafeContext(), ...arg);
198
- if (this.factory.isLocalized(ast)) {
199
- this.handleLoc(ast, generate);
200
- } else {
201
- generate();
202
- }
203
- };
204
- handleLoc = (localized, handle) => {
205
- if (this.factory.isSourceLocationNoMaterialize(localized.loc)) {
206
- return;
207
- }
208
- if (this.factory.isSourceLocationStringReplace(localized.loc)) {
209
- this.catchup(localized.loc.start);
210
- this.print(localized.loc.newSource);
211
- this.generatedUntil = localized.loc.end;
212
- return;
213
- }
214
- if (this.factory.isSourceLocationNodeReplace(localized.loc)) {
215
- this.catchup(localized.loc.start);
216
- this.generatedUntil = localized.loc.end;
217
- }
218
- if (this.factory.isSourceLocationSource(localized.loc)) {
219
- this.catchup(localized.loc.start);
220
- }
221
- const ret = handle();
222
- if (this.factory.isSourceLocationSource(localized.loc)) {
223
- this.catchup(localized.loc.end);
224
- }
225
- return ret;
226
- };
227
- catchup = (until) => {
228
- const start = this.generatedUntil;
229
- if (start < until) {
230
- this.print(this.origSource.slice(start, until));
231
- }
232
- this.generatedUntil = Math.max(this.generatedUntil, until);
233
- };
234
- print = (...args) => {
235
- const pureArgs = args.filter((x) => x.length > 0);
236
- if (pureArgs.length > 0) {
237
- const [head2, ...tail] = pureArgs;
238
- if (this.expectsSpace) {
239
- this.expectsSpace = false;
240
- const blanks = /* @__PURE__ */ new Set(["\n", " ", " "]);
241
- if (this.stringBuilder.length > 0 && !(blanks.has(head2[0]) || blanks.has(this.stringBuilder.at(-1).at(-1)))) {
242
- this.stringBuilder.push(" ");
243
- }
244
- }
245
- this.stringBuilder.push(head2);
246
- this.stringBuilder.push(...tail);
247
- }
248
- };
249
- printWord = (...args) => {
250
- this.expectsSpace = true;
251
- this.print(...args);
252
- this.expectsSpace = true;
253
- };
254
- printSpaceLeft = (...args) => {
255
- this.expectsSpace = true;
256
- this.print(...args);
257
- };
258
- printWords = (...args) => {
259
- for (const arg of args) {
260
- this.printWord(arg);
261
- }
262
- };
263
- };
264
-
265
- // ../../packages/core/lib/generator-builder/generatorBuilder.js
266
- function listToRuleDefMap(rules) {
267
- const newRules = {};
268
- for (const rule of rules) {
269
- newRules[rule.name] = rule;
270
- }
271
- return newRules;
272
- }
273
- var GeneratorBuilder = class _GeneratorBuilder {
274
- static create(start) {
275
- if (start instanceof _GeneratorBuilder) {
276
- return new _GeneratorBuilder({ ...start.rules });
277
- }
278
- return new _GeneratorBuilder(listToRuleDefMap(start));
279
- }
280
- rules;
281
- constructor(startRules) {
282
- this.rules = startRules;
283
- }
284
- widenContext() {
285
- return this;
286
- }
287
- typePatch() {
288
- return this;
289
- }
290
- /**
291
- * Change the implementation of an existing generator rule.
292
- */
293
- patchRule(patch) {
294
- const self2 = this;
295
- self2.rules[patch.name] = patch;
296
- return self2;
297
- }
298
- /**
299
- * Add a rule to the grammar. If the rule already exists, but the implementation differs, an error will be thrown.
300
- */
301
- addRuleRedundant(rule) {
302
- const self2 = this;
303
- const rules = self2.rules;
304
- if (rules[rule.name] !== void 0 && rules[rule.name] !== rule) {
305
- throw new Error(`Rule ${rule.name} already exists in the GeneratorBuilder`);
306
- }
307
- rules[rule.name] = rule;
308
- return self2;
309
- }
310
- /**
311
- * Add a rule to the grammar. Will raise a typescript error if the rule already exists in the grammar.
312
- */
313
- addRule(rule) {
314
- return this.addRuleRedundant(rule);
315
- }
316
- addMany(...rules) {
317
- this.rules = { ...this.rules, ...listToRuleDefMap(rules) };
318
- return this;
319
- }
320
- /**
321
- * Delete a grammar rule by its name.
322
- */
323
- deleteRule(ruleName) {
324
- delete this.rules[ruleName];
325
- return this;
326
- }
327
- /**
328
- * Merge this grammar GeneratorBuilder with another.
329
- * It is best to merge the bigger grammar with the smaller one.
330
- * If the two builders both have a grammar rule with the same name,
331
- * no error will be thrown case they map to the same ruledef object.
332
- * If they map to a different object, an error will be thrown.
333
- * To fix this problem, the overridingRules array should contain a rule with the same conflicting name,
334
- * this rule implementation will be used.
335
- */
336
- merge(GeneratorBuilder2, overridingRules) {
337
- const otherRules = { ...GeneratorBuilder2.rules };
338
- const myRules = this.rules;
339
- for (const rule of Object.values(myRules)) {
340
- if (otherRules[rule.name] === void 0) {
341
- otherRules[rule.name] = rule;
342
- } else {
343
- const existingRule = otherRules[rule.name];
344
- if (existingRule !== rule) {
345
- const override = overridingRules.find((x) => x.name === rule.name);
346
- if (override) {
347
- otherRules[rule.name] = override;
348
- } else {
349
- throw new Error(`Rule with name "${rule.name}" already exists in the GeneratorBuilder, specify an override to resolve conflict`);
350
- }
351
- }
352
- }
353
- }
354
- this.rules = otherRules;
355
- return this;
356
- }
357
- build() {
358
- return new DynamicGenerator(this.rules);
359
- }
360
- };
361
-
362
154
  // ../../node_modules/lodash-es/_freeGlobal.js
363
155
  var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
364
156
  var freeGlobal_default = freeGlobal;
@@ -9570,28 +9362,284 @@ applyMixins(Parser, [
9570
9362
  PerformanceTracer
9571
9363
  ]);
9572
9364
 
9573
- // ../../packages/core/lib/lexer-builder/LexerBuilder.js
9574
- var LexerBuilder = class _LexerBuilder {
9575
- tokens;
9576
- static create(starter) {
9577
- return new _LexerBuilder(starter);
9365
+ // ../../packages/core/lib/utils.js
9366
+ function unCapitalize(str2) {
9367
+ return str2.charAt(0).toLowerCase() + str2.slice(1);
9368
+ }
9369
+ function createToken2(config) {
9370
+ return createToken(config);
9371
+ }
9372
+ var traqulaIndentation = "When you use this string, you expect traqula to handle indentation after every newline";
9373
+
9374
+ // ../../packages/core/lib/generator-builder/dynamicGenerator.js
9375
+ var DynamicGenerator = class {
9376
+ rules;
9377
+ factory = new AstCoreFactory();
9378
+ __context = void 0;
9379
+ origSource = "";
9380
+ generatedUntil = 0;
9381
+ expectsSpace;
9382
+ stringBuilder = [];
9383
+ constructor(rules) {
9384
+ this.rules = rules;
9385
+ for (const rule of Object.values(rules)) {
9386
+ this[rule.name] = ((input, context, args) => {
9387
+ this.expectsSpace = false;
9388
+ this.stringBuilder.length = 0;
9389
+ this.origSource = context.origSource;
9390
+ this.generatedUntil = context?.offset ?? 0;
9391
+ this.setContext(context);
9392
+ this.subrule(rule, input, args);
9393
+ this.catchup(this.origSource.length);
9394
+ return this.stringBuilder.join("");
9395
+ });
9396
+ }
9578
9397
  }
9579
- constructor(starter) {
9580
- this.tokens = starter?.tokens ? [...starter.tokens] : [];
9398
+ setContext(context) {
9399
+ this.__context = context;
9581
9400
  }
9582
- merge(merge, overwrite = []) {
9583
- const extraTokens = merge.tokens.filter((token) => {
9584
- const overwriteToken = overwrite.find((t) => t.name === token.name);
9585
- if (overwriteToken) {
9586
- return false;
9587
- }
9588
- const match = this.tokens.find((t) => t.name === token.name);
9589
- if (match) {
9590
- if (match !== token) {
9591
- throw new Error(`Token with name ${token.name} already exists. Implementation is different and no overwrite was provided.`);
9592
- }
9593
- return false;
9594
- }
9401
+ getSafeContext() {
9402
+ return this.__context;
9403
+ }
9404
+ subrule = (cstDef, ast, ...arg) => {
9405
+ const def = this.rules[cstDef.name];
9406
+ if (!def) {
9407
+ throw new Error(`Rule ${cstDef.name} not found`);
9408
+ }
9409
+ const generate = () => def.gImpl({
9410
+ SUBRULE: this.subrule,
9411
+ PRINT: this.print,
9412
+ PRINT_SPACE_LEFT: this.printSpaceLeft,
9413
+ PRINT_WORD: this.printWord,
9414
+ PRINT_WORDS: this.printWords,
9415
+ PRINT_ON_EMPTY: this.printOnEmpty,
9416
+ CATCHUP: this.catchup,
9417
+ HANDLE_LOC: this.handleLoc
9418
+ })(ast, this.getSafeContext(), ...arg);
9419
+ if (this.factory.isLocalized(ast)) {
9420
+ this.handleLoc(ast, generate);
9421
+ } else {
9422
+ generate();
9423
+ }
9424
+ };
9425
+ handleLoc = (localized, handle) => {
9426
+ if (this.factory.isSourceLocationNoMaterialize(localized.loc)) {
9427
+ return;
9428
+ }
9429
+ if (this.factory.isSourceLocationStringReplace(localized.loc)) {
9430
+ this.catchup(localized.loc.start);
9431
+ this.print(localized.loc.newSource);
9432
+ this.generatedUntil = localized.loc.end;
9433
+ return;
9434
+ }
9435
+ if (this.factory.isSourceLocationNodeReplace(localized.loc)) {
9436
+ this.catchup(localized.loc.start);
9437
+ this.generatedUntil = localized.loc.end;
9438
+ }
9439
+ if (this.factory.isSourceLocationSource(localized.loc)) {
9440
+ this.catchup(localized.loc.start);
9441
+ }
9442
+ const ret = handle();
9443
+ if (this.factory.isSourceLocationSource(localized.loc)) {
9444
+ this.catchup(localized.loc.end);
9445
+ }
9446
+ return ret;
9447
+ };
9448
+ catchup = (until) => {
9449
+ const start = this.generatedUntil;
9450
+ if (start < until) {
9451
+ this.print(this.origSource.slice(start, until));
9452
+ }
9453
+ this.generatedUntil = Math.max(this.generatedUntil, until);
9454
+ };
9455
+ print = (...args) => {
9456
+ const pureArgs = args.filter((x) => x.length > 0);
9457
+ if (pureArgs.length > 0) {
9458
+ const head2 = pureArgs[0];
9459
+ if (this.expectsSpace) {
9460
+ this.expectsSpace = false;
9461
+ const blanks = /* @__PURE__ */ new Set(["\n", " ", " "]);
9462
+ if (this.stringBuilder.length > 0 && !(blanks.has(head2[0]) || blanks.has(this.stringBuilder.at(-1).at(-1)))) {
9463
+ this.stringBuilder.push(" ");
9464
+ }
9465
+ }
9466
+ const context = this.getSafeContext();
9467
+ if (context[traqulaIndentation] && typeof context[traqulaIndentation] === "number") {
9468
+ const indent = context[traqulaIndentation];
9469
+ for (const str2 of pureArgs) {
9470
+ const [noNl, ...postNl] = str2.split("\n");
9471
+ this.stringBuilder.push(noNl);
9472
+ for (const subStr of postNl.map((line) => line.trimStart())) {
9473
+ this.stringBuilder.push("\n", " ".repeat(indent));
9474
+ if (subStr.length > 0) {
9475
+ this.stringBuilder.push(subStr);
9476
+ }
9477
+ }
9478
+ }
9479
+ } else {
9480
+ this.stringBuilder.push(...pureArgs);
9481
+ }
9482
+ }
9483
+ };
9484
+ printWord = (...args) => {
9485
+ this.expectsSpace = true;
9486
+ this.print(...args);
9487
+ this.expectsSpace = true;
9488
+ };
9489
+ printSpaceLeft = (...args) => {
9490
+ this.expectsSpace = true;
9491
+ this.print(...args);
9492
+ };
9493
+ printWords = (...args) => {
9494
+ for (const arg of args) {
9495
+ this.printWord(arg);
9496
+ }
9497
+ };
9498
+ printOnEmpty = (...args) => {
9499
+ let counter = this.stringBuilder.length - 1;
9500
+ let onEmpty = true;
9501
+ const isEmptyTest = /^[ \t\n]*$/u;
9502
+ while (counter >= 0 && onEmpty) {
9503
+ const cur = this.stringBuilder[counter];
9504
+ const indexOfNl = cur.lastIndexOf("\n");
9505
+ if (indexOfNl >= 0) {
9506
+ onEmpty = isEmptyTest.test(cur.slice(indexOfNl));
9507
+ if (onEmpty) {
9508
+ const newVal = cur.slice(0, indexOfNl);
9509
+ if (newVal) {
9510
+ this.stringBuilder[counter] = cur.slice(0, indexOfNl);
9511
+ } else {
9512
+ this.stringBuilder.splice(counter, 1);
9513
+ }
9514
+ }
9515
+ break;
9516
+ }
9517
+ onEmpty = isEmptyTest.test(cur);
9518
+ counter--;
9519
+ }
9520
+ this.print("\n", ...args);
9521
+ };
9522
+ };
9523
+
9524
+ // ../../packages/core/lib/generator-builder/generatorBuilder.js
9525
+ function listToRuleDefMap(rules) {
9526
+ const newRules = {};
9527
+ for (const rule of rules) {
9528
+ newRules[rule.name] = rule;
9529
+ }
9530
+ return newRules;
9531
+ }
9532
+ var GeneratorBuilder = class _GeneratorBuilder {
9533
+ static create(start) {
9534
+ if (start instanceof _GeneratorBuilder) {
9535
+ return new _GeneratorBuilder({ ...start.rules });
9536
+ }
9537
+ return new _GeneratorBuilder(listToRuleDefMap(start));
9538
+ }
9539
+ rules;
9540
+ constructor(startRules) {
9541
+ this.rules = startRules;
9542
+ }
9543
+ widenContext() {
9544
+ return this;
9545
+ }
9546
+ typePatch() {
9547
+ return this;
9548
+ }
9549
+ /**
9550
+ * Change the implementation of an existing generator rule.
9551
+ */
9552
+ patchRule(patch) {
9553
+ const self2 = this;
9554
+ self2.rules[patch.name] = patch;
9555
+ return self2;
9556
+ }
9557
+ /**
9558
+ * Add a rule to the grammar. If the rule already exists, but the implementation differs, an error will be thrown.
9559
+ */
9560
+ addRuleRedundant(rule) {
9561
+ const self2 = this;
9562
+ const rules = self2.rules;
9563
+ if (rules[rule.name] !== void 0 && rules[rule.name] !== rule) {
9564
+ throw new Error(`Rule ${rule.name} already exists in the GeneratorBuilder`);
9565
+ }
9566
+ rules[rule.name] = rule;
9567
+ return self2;
9568
+ }
9569
+ /**
9570
+ * Add a rule to the grammar. Will raise a typescript error if the rule already exists in the grammar.
9571
+ */
9572
+ addRule(rule) {
9573
+ return this.addRuleRedundant(rule);
9574
+ }
9575
+ addMany(...rules) {
9576
+ this.rules = { ...this.rules, ...listToRuleDefMap(rules) };
9577
+ return this;
9578
+ }
9579
+ /**
9580
+ * Delete a grammar rule by its name.
9581
+ */
9582
+ deleteRule(ruleName) {
9583
+ delete this.rules[ruleName];
9584
+ return this;
9585
+ }
9586
+ /**
9587
+ * Merge this grammar GeneratorBuilder with another.
9588
+ * It is best to merge the bigger grammar with the smaller one.
9589
+ * If the two builders both have a grammar rule with the same name,
9590
+ * no error will be thrown case they map to the same ruledef object.
9591
+ * If they map to a different object, an error will be thrown.
9592
+ * To fix this problem, the overridingRules array should contain a rule with the same conflicting name,
9593
+ * this rule implementation will be used.
9594
+ */
9595
+ merge(GeneratorBuilder2, overridingRules) {
9596
+ const otherRules = { ...GeneratorBuilder2.rules };
9597
+ const myRules = this.rules;
9598
+ for (const rule of Object.values(myRules)) {
9599
+ if (otherRules[rule.name] === void 0) {
9600
+ otherRules[rule.name] = rule;
9601
+ } else {
9602
+ const existingRule = otherRules[rule.name];
9603
+ if (existingRule !== rule) {
9604
+ const override = overridingRules.find((x) => x.name === rule.name);
9605
+ if (override) {
9606
+ otherRules[rule.name] = override;
9607
+ } else {
9608
+ throw new Error(`Rule with name "${rule.name}" already exists in the GeneratorBuilder, specify an override to resolve conflict`);
9609
+ }
9610
+ }
9611
+ }
9612
+ }
9613
+ this.rules = otherRules;
9614
+ return this;
9615
+ }
9616
+ build() {
9617
+ return new DynamicGenerator(this.rules);
9618
+ }
9619
+ };
9620
+
9621
+ // ../../packages/core/lib/lexer-builder/LexerBuilder.js
9622
+ var LexerBuilder = class _LexerBuilder {
9623
+ tokens;
9624
+ static create(starter) {
9625
+ return new _LexerBuilder(starter);
9626
+ }
9627
+ constructor(starter) {
9628
+ this.tokens = starter?.tokens ? [...starter.tokens] : [];
9629
+ }
9630
+ merge(merge, overwrite = []) {
9631
+ const extraTokens = merge.tokens.filter((token) => {
9632
+ const overwriteToken = overwrite.find((t) => t.name === token.name);
9633
+ if (overwriteToken) {
9634
+ return false;
9635
+ }
9636
+ const match = this.tokens.find((t) => t.name === token.name);
9637
+ if (match) {
9638
+ if (match !== token) {
9639
+ throw new Error(`Token with name ${token.name} already exists. Implementation is different and no overwrite was provided.`);
9640
+ }
9641
+ return false;
9642
+ }
9595
9643
  return true;
9596
9644
  });
9597
9645
  this.tokens.push(...extraTokens);
@@ -9667,16 +9715,13 @@ var LexerBuilder = class _LexerBuilder {
9667
9715
  }
9668
9716
  };
9669
9717
 
9670
- // ../../packages/core/lib/utils.js
9671
- function unCapitalize(str2) {
9672
- return str2.charAt(0).toLowerCase() + str2.slice(1);
9673
- }
9674
- function createToken2(config) {
9675
- return createToken(config);
9676
- }
9677
-
9678
9718
  // ../../packages/core/lib/Transformers.js
9679
9719
  var TransformerType = class {
9720
+ clone(obj) {
9721
+ const newObj = Object.create(Object.getPrototypeOf(obj));
9722
+ Object.defineProperties(newObj, Object.getOwnPropertyDescriptors(obj));
9723
+ return newObj;
9724
+ }
9680
9725
  safeObjectVisit(value, mapper) {
9681
9726
  if (value && typeof value === "object") {
9682
9727
  if (Array.isArray(value)) {
@@ -9686,104 +9731,213 @@ var TransformerType = class {
9686
9731
  }
9687
9732
  return value;
9688
9733
  }
9689
- transformNode(curObject, nodeCallBacks) {
9690
- let continueCheck;
9691
- let transformation;
9692
- const casted = curObject;
9693
- if (casted.type) {
9694
- continueCheck = nodeCallBacks[casted.type]?.continue;
9695
- transformation = nodeCallBacks[casted.type]?.transform;
9696
- }
9697
- let shouldContinue = true;
9698
- if (continueCheck) {
9699
- shouldContinue = continueCheck(curObject);
9700
- }
9701
- if (!shouldContinue) {
9702
- return curObject;
9703
- }
9704
- const copy3 = { ...curObject };
9705
- for (const [key, value] of Object.entries(copy3)) {
9706
- copy3[key] = this.safeObjectVisit(value, (obj) => this.transformNode(obj, nodeCallBacks));
9707
- }
9708
- if (transformation) {
9709
- return transformation(copy3);
9710
- }
9711
- return copy3;
9734
+ /**
9735
+ * Recursively transforms all objects that are not arrays. Mapper is called on deeper objects first.
9736
+ * @param startObject object to start iterating from
9737
+ * @param mapper mapper to transform the various objects - argument is a copy of the original
9738
+ * @param preVisitor callback that is evaluated before iterating deeper.
9739
+ * If continues is false, we do not iterate deeper, current object is still mapped. - default: true
9740
+ * If shortcut is true, we do not iterate deeper, nor do we branch out, this mapper will be the last one called.
9741
+ * - Default false
9742
+ */
9743
+ transformObject(startObject, mapper, preVisitor = () => ({})) {
9744
+ let didShortCut = false;
9745
+ const recurse = (curObject) => {
9746
+ const copy3 = this.clone(curObject);
9747
+ const context = preVisitor(copy3);
9748
+ didShortCut = context.shortcut ?? false;
9749
+ const continues = context.continue ?? true;
9750
+ if (continues && !didShortCut) {
9751
+ for (const [key, value] of Object.entries(copy3)) {
9752
+ if (didShortCut) {
9753
+ return copy3;
9754
+ }
9755
+ copy3[key] = this.safeObjectVisit(value, (obj) => recurse(obj));
9756
+ }
9757
+ }
9758
+ return mapper(copy3);
9759
+ };
9760
+ return recurse(startObject);
9712
9761
  }
9713
- visitNode(curObject, nodeCallBacks) {
9714
- let callback;
9715
- const casted = curObject;
9716
- if (casted.type) {
9717
- callback = nodeCallBacks[casted.type];
9718
- }
9719
- let shouldIterate = true;
9720
- if (callback) {
9721
- shouldIterate = callback(curObject);
9722
- }
9723
- if (shouldIterate) {
9724
- for (const value of Object.values(curObject)) {
9725
- this.safeObjectVisit(value, (obj) => this.visitNode(obj, nodeCallBacks));
9762
+ /**
9763
+ * Visitor that visits all objects. Visits deeper objects first.
9764
+ */
9765
+ visitObject(startObject, visitor, preVisitor = () => ({})) {
9766
+ let didShortCut = false;
9767
+ const recurse = (curObject) => {
9768
+ const context = preVisitor(curObject);
9769
+ didShortCut = context.shortcut ?? false;
9770
+ const continues = context.continue ?? true;
9771
+ if (continues && !didShortCut) {
9772
+ for (const value of Object.values(curObject)) {
9773
+ if (didShortCut) {
9774
+ return;
9775
+ }
9776
+ this.safeObjectVisit(value, (obj) => recurse(obj));
9777
+ }
9726
9778
  }
9727
- }
9779
+ visitor(curObject);
9780
+ };
9781
+ recurse(startObject);
9782
+ }
9783
+ transformNode(startObject, nodeCallBacks) {
9784
+ const transformWrapper = (curObject) => {
9785
+ const casted = curObject;
9786
+ if (casted.type) {
9787
+ const ogFunc = nodeCallBacks[casted.type]?.transform;
9788
+ if (ogFunc) {
9789
+ return ogFunc(casted);
9790
+ }
9791
+ }
9792
+ return curObject;
9793
+ };
9794
+ const preTransformWrapper = (curObject) => {
9795
+ const casted = curObject;
9796
+ if (casted.type) {
9797
+ const ogFunc = nodeCallBacks[casted.type]?.preVisitor;
9798
+ if (ogFunc) {
9799
+ return ogFunc(casted);
9800
+ }
9801
+ }
9802
+ return {};
9803
+ };
9804
+ return this.transformObject(startObject, transformWrapper, preTransformWrapper);
9805
+ }
9806
+ visitNode(startObject, nodeCallBacks) {
9807
+ const visitWrapper = (curObject) => {
9808
+ const casted = curObject;
9809
+ if (casted.type) {
9810
+ const ogFunc = nodeCallBacks[casted.type]?.visitor;
9811
+ if (ogFunc) {
9812
+ ogFunc(casted);
9813
+ }
9814
+ }
9815
+ };
9816
+ const preVisitWrapper = (curObject) => {
9817
+ const casted = curObject;
9818
+ if (casted.type) {
9819
+ const ogFunc = nodeCallBacks[casted.type]?.preVisitor;
9820
+ if (ogFunc) {
9821
+ return ogFunc(casted);
9822
+ }
9823
+ }
9824
+ return {};
9825
+ };
9826
+ this.visitObject(startObject, visitWrapper, preVisitWrapper);
9827
+ }
9828
+ traverseNodes(currentNode, traverse) {
9829
+ let didShortCut = false;
9830
+ const recurse = (curNode) => {
9831
+ const traverser = traverse[curNode.type];
9832
+ if (traverser) {
9833
+ const { next, shortcut } = traverser(curNode);
9834
+ didShortCut = shortcut ?? false;
9835
+ if (!didShortCut) {
9836
+ for (const node of next ?? []) {
9837
+ if (didShortCut) {
9838
+ return;
9839
+ }
9840
+ recurse(node);
9841
+ }
9842
+ }
9843
+ }
9844
+ };
9845
+ recurse(currentNode);
9728
9846
  }
9729
9847
  };
9730
9848
  var TransformerSubType = class extends TransformerType {
9731
- // Public visitObjects(curObject: object, visitor: (current: object) => void): void {
9732
- // for (const value of Object.values(curObject)) {
9733
- // this.safeObjectVisit(value, obj => this.visitObjects(obj, visitor));
9734
- // }
9735
- // }
9736
- transformNodeSpecific(curObject, nodeCallBacks, nodeSpecificCallBacks = {}) {
9737
- let continueCheck;
9738
- let transformation;
9739
- const casted = curObject;
9740
- if (casted.type && casted.subType) {
9741
- const specific = nodeSpecificCallBacks[casted.type];
9742
- if (specific) {
9743
- continueCheck = specific[casted.subType]?.continue;
9744
- transformation = specific[casted.subType]?.transform;
9745
- }
9746
- }
9747
- let shouldContinue = true;
9748
- if (continueCheck) {
9749
- shouldContinue = continueCheck(curObject);
9750
- }
9751
- if (!shouldContinue) {
9752
- return curObject;
9753
- }
9754
- const copy3 = { ...curObject };
9755
- for (const [key, value] of Object.entries(copy3)) {
9756
- copy3[key] = this.safeObjectVisit(value, (obj) => this.transformNodeSpecific(obj, nodeCallBacks, nodeSpecificCallBacks));
9757
- }
9758
- if (transformation) {
9759
- return transformation(copy3);
9760
- }
9761
- return copy3;
9849
+ transformNodeSpecific(startObject, nodeCallBacks, nodeSpecificCallBacks) {
9850
+ const transformWrapper = (curObject) => {
9851
+ let ogTransform;
9852
+ const casted = curObject;
9853
+ if (casted.type && casted.subType) {
9854
+ const specific = nodeSpecificCallBacks[casted.type];
9855
+ if (specific) {
9856
+ ogTransform = specific[casted.subType]?.transform;
9857
+ }
9858
+ if (!ogTransform) {
9859
+ ogTransform = nodeCallBacks[casted.type]?.transform;
9860
+ }
9861
+ }
9862
+ return ogTransform ? ogTransform(casted) : curObject;
9863
+ };
9864
+ const preVisitWrapper = (curObject) => {
9865
+ let ogPreVisit;
9866
+ const casted = curObject;
9867
+ if (casted.type && casted.subType) {
9868
+ const specific = nodeSpecificCallBacks[casted.type];
9869
+ if (specific) {
9870
+ ogPreVisit = specific[casted.subType]?.preVisitor;
9871
+ }
9872
+ if (!ogPreVisit) {
9873
+ ogPreVisit = nodeCallBacks[casted.type]?.preVisitor;
9874
+ }
9875
+ }
9876
+ return ogPreVisit ? ogPreVisit(casted) : curObject;
9877
+ };
9878
+ return this.transformObject(startObject, transformWrapper, preVisitWrapper);
9762
9879
  }
9763
9880
  /**
9764
9881
  * When both nodeCallBack and NodeSpecific callBack are matched, will only look at nodeSpecifCallback
9765
9882
  */
9766
- visitNodeSpecific(curObject, nodeCallBacks, nodeSpecificCallBacks = {}) {
9767
- let callback;
9768
- const casted = curObject;
9769
- if (casted.type && casted.subType) {
9770
- const specific = nodeSpecificCallBacks[casted.type];
9771
- if (specific) {
9772
- callback = specific[casted.subType];
9883
+ visitNodeSpecific(startObject, nodeCallBacks, nodeSpecificCallBacks) {
9884
+ const visitWrapper = (curObject) => {
9885
+ let ogTransform;
9886
+ const casted = curObject;
9887
+ if (casted.type && casted.subType) {
9888
+ const specific = nodeSpecificCallBacks[casted.type];
9889
+ if (specific) {
9890
+ ogTransform = specific[casted.subType]?.visitor;
9891
+ }
9892
+ if (!ogTransform) {
9893
+ ogTransform = nodeCallBacks[casted.type]?.visitor;
9894
+ }
9773
9895
  }
9774
- }
9775
- if (!callback && casted.type) {
9776
- callback = nodeCallBacks[curObject.type];
9777
- }
9778
- let shouldIterate = true;
9779
- if (callback) {
9780
- shouldIterate = callback(curObject) ?? true;
9781
- }
9782
- if (shouldIterate) {
9783
- for (const value of Object.values(curObject)) {
9784
- this.safeObjectVisit(value, (obj) => this.visitNodeSpecific(obj, nodeCallBacks, nodeSpecificCallBacks));
9896
+ if (ogTransform) {
9897
+ ogTransform(casted);
9785
9898
  }
9786
- }
9899
+ };
9900
+ const preVisitWrapper = (curObject) => {
9901
+ let ogPreVisit;
9902
+ const casted = curObject;
9903
+ if (casted.type && casted.subType) {
9904
+ const specific = nodeSpecificCallBacks[casted.type];
9905
+ if (specific) {
9906
+ ogPreVisit = specific[casted.subType]?.preVisitor;
9907
+ }
9908
+ if (!ogPreVisit) {
9909
+ ogPreVisit = nodeCallBacks[casted.type]?.preVisitor;
9910
+ }
9911
+ }
9912
+ return ogPreVisit ? ogPreVisit(casted) : curObject;
9913
+ };
9914
+ this.visitObject(startObject, visitWrapper, preVisitWrapper);
9915
+ }
9916
+ traverseSubNodes(currentNode, traverseNode, traverseSubNode) {
9917
+ let didShortCut = false;
9918
+ const recurse = (curNode) => {
9919
+ let traverser;
9920
+ const subObj = traverseSubNode[curNode.type];
9921
+ if (subObj) {
9922
+ traverser = subObj[curNode.subType];
9923
+ }
9924
+ if (!traverser) {
9925
+ traverser = traverseNode[curNode.type];
9926
+ }
9927
+ if (traverser) {
9928
+ const { next, shortcut } = traverser(curNode);
9929
+ didShortCut = shortcut ?? false;
9930
+ if (!didShortCut) {
9931
+ for (const node of next ?? []) {
9932
+ if (didShortCut) {
9933
+ return;
9934
+ }
9935
+ recurse(node);
9936
+ }
9937
+ }
9938
+ }
9939
+ };
9940
+ recurse(currentNode);
9787
9941
  }
9788
9942
  };
9789
9943
 
@@ -11181,8 +11335,8 @@ function UpdateOperationFactoryMixin(Base) {
11181
11335
  };
11182
11336
  }
11183
11337
 
11184
- // ../../packages/rules-sparql-1-1/lib/factory.js
11185
- var Factory = class extends asArg(CoreFactory).call(ContextFactoryMixin).call(ExpressionFactoryMixin).call(GraphRefFactoryMixin).call(PathFactoryMixin).call(PatternFactoryMixin).call(QueryFactoryMixin).call(SolutionModifiersFactoryMixin).call(TermFactoryMixin).call(UpdateOperationFactoryMixin).returns() {
11338
+ // ../../packages/rules-sparql-1-1/lib/astFactory.js
11339
+ var AstFactory = class extends asArg(AstCoreFactory).call(ContextFactoryMixin).call(ExpressionFactoryMixin).call(GraphRefFactoryMixin).call(PathFactoryMixin).call(PatternFactoryMixin).call(QueryFactoryMixin).call(SolutionModifiersFactoryMixin).call(TermFactoryMixin).call(UpdateOperationFactoryMixin).returns() {
11186
11340
  alwaysSparql11(obj) {
11187
11341
  return true;
11188
11342
  }
@@ -11279,12 +11433,12 @@ var CommonIRIs;
11279
11433
  CommonIRIs2["NIL"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil";
11280
11434
  CommonIRIs2["TYPE"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
11281
11435
  })(CommonIRIs || (CommonIRIs = {}));
11282
- var TransformerSparql11 = class extends TransformerSubType {
11436
+ var AstTransformer = class extends TransformerSubType {
11283
11437
  };
11284
11438
 
11285
11439
  // ../../packages/rules-sparql-1-1/lib/validation/validators.js
11286
- var F = new Factory();
11287
- var transformer = new TransformerSparql11();
11440
+ var F = new AstFactory();
11441
+ var transformer = new AstTransformer();
11288
11442
  function getAggregatesOfExpression(expression2) {
11289
11443
  if (F.isExpressionAggregate(expression2)) {
11290
11444
  return [expression2];
@@ -11363,77 +11517,69 @@ function queryIsGood(query2) {
11363
11517
  }
11364
11518
  }
11365
11519
  }
11520
+ function notUndefined(some2) {
11521
+ return some2 !== void 0;
11522
+ }
11366
11523
  function findPatternBoundedVars(iter, boundedVars) {
11367
- if (F.isQuery(iter) || F.isUpdate(iter)) {
11368
- if (F.isQuerySelect(iter) || F.isQueryDescribe(iter)) {
11369
- if (iter.where && iter.variables.some((x) => F.isWildcard(x))) {
11370
- findPatternBoundedVars(iter.where, boundedVars);
11371
- } else {
11372
- for (const v of iter.variables) {
11373
- findPatternBoundedVars(v, boundedVars);
11374
- }
11375
- }
11376
- if (iter.solutionModifiers.group) {
11377
- const grouping = iter.solutionModifiers.group;
11378
- for (const g of grouping.groupings) {
11379
- if ("variable" in g) {
11380
- findPatternBoundedVars(g.variable, boundedVars);
11381
- }
11382
- }
11383
- }
11384
- if (iter.values?.values && iter.values.values.length > 0) {
11385
- const values3 = iter.values.values;
11386
- for (const v of Object.keys(values3[0])) {
11524
+ transformer.traverseSubNodes(iter, {
11525
+ query: (op) => ({ next: [
11526
+ op.solutionModifiers.group
11527
+ ].filter(notUndefined) }),
11528
+ triple: (op) => ({ next: [op.subject, op.predicate, op.object] }),
11529
+ path: (op) => ({ next: op.items }),
11530
+ tripleCollection: (op) => ({ next: [op.identifier, ...op.triples] })
11531
+ }, {
11532
+ query: {
11533
+ select: (op) => ({ next: [
11534
+ ...op.variables.some((x) => F.isWildcard(x)) ? [op.where] : op.variables,
11535
+ op.solutionModifiers.group,
11536
+ op.values
11537
+ ].filter(notUndefined) }),
11538
+ describe: (op) => ({ next: [
11539
+ ...op.variables.some((x) => F.isWildcard(x)) ? [op.where] : op.variables,
11540
+ op.solutionModifiers.group,
11541
+ op.values
11542
+ ].filter(notUndefined) })
11543
+ },
11544
+ solutionModifier: {
11545
+ group: (op) => ({
11546
+ next: op.groupings.filter((g) => "variable" in g).map((x) => x.variable)
11547
+ }),
11548
+ having: (op) => ({ next: op.having }),
11549
+ order: (op) => ({ next: op.orderDefs.map((x) => x.expression) })
11550
+ },
11551
+ pattern: {
11552
+ values: (op) => {
11553
+ for (const v of Object.keys(op.values.at(0) ?? {})) {
11387
11554
  boundedVars.add(v);
11388
11555
  }
11556
+ return {};
11557
+ },
11558
+ bgp: (op) => ({ next: op.triples }),
11559
+ group: (op) => ({ next: op.patterns }),
11560
+ union: (op) => ({ next: op.patterns }),
11561
+ optional: (op) => ({ next: op.patterns }),
11562
+ service: (op) => ({ next: [op.name, ...op.patterns] }),
11563
+ bind: (op) => ({ next: [op.variable] }),
11564
+ graph: (op) => ({ next: [op.name, ...op.patterns] }),
11565
+ minus: (op) => ({ next: op.patterns.slice(0, 1) })
11566
+ },
11567
+ term: {
11568
+ variable: (op) => {
11569
+ boundedVars.add(op.value);
11570
+ return {};
11389
11571
  }
11390
11572
  }
11391
- } else if (F.isTerm(iter)) {
11392
- if (F.isTermVariable(iter)) {
11393
- boundedVars.add(iter.value);
11394
- }
11395
- } else if (F.isTriple(iter)) {
11396
- findPatternBoundedVars(iter.subject, boundedVars);
11397
- findPatternBoundedVars(iter.predicate, boundedVars);
11398
- findPatternBoundedVars(iter.object, boundedVars);
11399
- } else if (F.isPath(iter)) {
11400
- if (!F.isTerm(iter)) {
11401
- for (const item of iter.items) {
11402
- findPatternBoundedVars(item, boundedVars);
11403
- }
11404
- }
11405
- } else if (F.isTripleCollection(iter) || F.isPatternBgp(iter)) {
11406
- for (const triple of iter.triples) {
11407
- findPatternBoundedVars(triple, boundedVars);
11408
- }
11409
- } else if (F.isPatternGroup(iter) || F.isPatternUnion(iter) || F.isPatternOptional(iter) || F.isPatternService(iter)) {
11410
- for (const pattern of iter.patterns) {
11411
- findPatternBoundedVars(pattern, boundedVars);
11412
- }
11413
- if (F.isPatternService(iter)) {
11414
- findPatternBoundedVars(iter.name, boundedVars);
11415
- }
11416
- } else if (F.isPatternBind(iter)) {
11417
- findPatternBoundedVars(iter.variable, boundedVars);
11418
- } else if (F.isPatternValues(iter)) {
11419
- for (const variable of Object.keys(iter.values.at(0) ?? {})) {
11420
- boundedVars.add(variable);
11421
- }
11422
- } else if (F.isPatternGraph(iter)) {
11423
- findPatternBoundedVars(iter.name, boundedVars);
11424
- for (const pattern of iter.patterns) {
11425
- findPatternBoundedVars(pattern, boundedVars);
11426
- }
11427
- }
11573
+ });
11428
11574
  }
11429
11575
  function checkNote13(patterns) {
11430
11576
  for (const [index, pattern] of patterns.entries()) {
11431
11577
  if (F.isPatternBind(pattern) && index > 0 && F.isPatternBgp(patterns[index - 1])) {
11432
11578
  const bgp = patterns[index - 1];
11433
11579
  const variables = [];
11434
- transformer.visitNodeSpecific(bgp, {}, { term: { variable: (var_2) => {
11580
+ transformer.visitNodeSpecific(bgp, {}, { term: { variable: { visitor: (var_2) => {
11435
11581
  variables.push(var_2);
11436
- } } });
11582
+ } } } });
11437
11583
  if (variables.some((var_2) => var_2.value === pattern.variable.value)) {
11438
11584
  throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);
11439
11585
  }
@@ -11459,12 +11605,12 @@ function updateNoReuseBlankNodeLabels(updateQuery) {
11459
11605
  const operation = update2.operation;
11460
11606
  if (operation.subType === "insertdata") {
11461
11607
  const blankNodesHere = /* @__PURE__ */ new Set();
11462
- transformer.visitNodeSpecific(operation, {}, { term: { blankNode: (blankNode2) => {
11608
+ transformer.visitNodeSpecific(operation, {}, { term: { blankNode: { visitor: (blankNode2) => {
11463
11609
  blankNodesHere.add(blankNode2.label);
11464
11610
  if (blankLabelsUsedInInsertData.has(blankNode2.label)) {
11465
11611
  throw new Error("Detected reuse blank node across different INSERT DATA clauses");
11466
11612
  }
11467
- } } });
11613
+ } } } });
11468
11614
  for (const blankNode2 of blankNodesHere) {
11469
11615
  blankLabelsUsedInInsertData.add(blankNode2);
11470
11616
  }
@@ -11503,22 +11649,22 @@ var rdfLiteral = {
11503
11649
  return OPTION(() => OR([
11504
11650
  { ALT: () => {
11505
11651
  const lang2 = CONSUME(terminals_exports.langTag);
11506
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(value, lang2), value.value, lang2.image.slice(1).toLowerCase()));
11652
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(value, lang2), value.value, lang2.image.slice(1).toLowerCase()));
11507
11653
  } },
11508
11654
  { ALT: () => {
11509
11655
  CONSUME(symbols_exports.hathat);
11510
11656
  const iriVal = SUBRULE1(iri2);
11511
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(value, iriVal), value.value, iriVal));
11657
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(value, iriVal), value.value, iriVal));
11512
11658
  } }
11513
11659
  ])) ?? value;
11514
11660
  },
11515
- gImpl: ({ SUBRULE, PRINT, PRINT_SPACE_LEFT }) => (ast, { factory }) => {
11516
- factory.printFilter(ast, () => PRINT_SPACE_LEFT(stringEscapedLexical(ast.value)));
11661
+ gImpl: ({ SUBRULE, PRINT, PRINT_SPACE_LEFT }) => (ast, { astFactory }) => {
11662
+ astFactory.printFilter(ast, () => PRINT_SPACE_LEFT(stringEscapedLexical(ast.value)));
11517
11663
  if (ast.langOrIri) {
11518
11664
  if (typeof ast.langOrIri === "string") {
11519
- factory.printFilter(ast, () => PRINT("@", ast.langOrIri));
11665
+ astFactory.printFilter(ast, () => PRINT("@", ast.langOrIri));
11520
11666
  } else {
11521
- factory.printFilter(ast, () => PRINT("^^"));
11667
+ astFactory.printFilter(ast, () => PRINT("^^"));
11522
11668
  SUBRULE(iri2, ast.langOrIri);
11523
11669
  }
11524
11670
  }
@@ -11540,7 +11686,7 @@ var numericLiteralUnsigned = {
11540
11686
  { ALT: () => [CONSUME(terminals_exports.decimal), CommonIRIs.DECIMAL] },
11541
11687
  { ALT: () => [CONSUME(terminals_exports.double), CommonIRIs.DOUBLE] }
11542
11688
  ]);
11543
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(parsed[0]), parsed[0].image, C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), parsed[1])));
11689
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
11544
11690
  }
11545
11691
  };
11546
11692
  var numericLiteralPositive = {
@@ -11551,7 +11697,7 @@ var numericLiteralPositive = {
11551
11697
  { ALT: () => [CONSUME(terminals_exports.decimalPositive), CommonIRIs.DECIMAL] },
11552
11698
  { ALT: () => [CONSUME(terminals_exports.doublePositive), CommonIRIs.DOUBLE] }
11553
11699
  ]);
11554
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(parsed[0]), parsed[0].image, C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), parsed[1])));
11700
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
11555
11701
  }
11556
11702
  };
11557
11703
  var numericLiteralNegative = {
@@ -11562,7 +11708,7 @@ var numericLiteralNegative = {
11562
11708
  { ALT: () => [CONSUME(terminals_exports.decimalNegative), CommonIRIs.DECIMAL] },
11563
11709
  { ALT: () => [CONSUME(terminals_exports.doubleNegative), CommonIRIs.DOUBLE] }
11564
11710
  ]);
11565
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(parsed[0]), parsed[0].image, C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), parsed[1])));
11711
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
11566
11712
  }
11567
11713
  };
11568
11714
  var booleanLiteral = {
@@ -11572,7 +11718,7 @@ var booleanLiteral = {
11572
11718
  { ALT: () => CONSUME(true_) },
11573
11719
  { ALT: () => CONSUME(false_) }
11574
11720
  ]);
11575
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(token), token.image.toLowerCase(), C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), CommonIRIs.BOOLEAN)));
11721
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(token), token.image.toLowerCase(), C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), CommonIRIs.BOOLEAN)));
11576
11722
  }
11577
11723
  };
11578
11724
  var string = {
@@ -11597,7 +11743,7 @@ var string = {
11597
11743
  } }
11598
11744
  ]);
11599
11745
  return ACTION(() => {
11600
- const F3 = C.factory;
11746
+ const F3 = C.astFactory;
11601
11747
  const value = x[1].replaceAll(/\\([tnrbf"'\\])/gu, (_, char) => {
11602
11748
  switch (char) {
11603
11749
  case "t":
@@ -11624,16 +11770,16 @@ var iri2 = {
11624
11770
  { ALT: () => SUBRULE(iriFull) },
11625
11771
  { ALT: () => SUBRULE(prefixedName) }
11626
11772
  ]),
11627
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => F3.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
11773
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => F3.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
11628
11774
  };
11629
11775
  var iriFull = {
11630
11776
  name: "iriFull",
11631
11777
  impl: ({ ACTION, CONSUME }) => (C) => {
11632
11778
  const iriToken = CONSUME(terminals_exports.iriRef);
11633
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));
11779
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));
11634
11780
  },
11635
- gImpl: ({ PRINT }) => (ast, { factory }) => {
11636
- factory.printFilter(ast, () => PRINT("<", ast.value, ">"));
11781
+ gImpl: ({ PRINT }) => (ast, { astFactory: F3 }) => {
11782
+ F3.printFilter(ast, () => PRINT("<", ast.value, ">"));
11637
11783
  }
11638
11784
  };
11639
11785
  var prefixedName = {
@@ -11643,16 +11789,16 @@ var prefixedName = {
11643
11789
  const longName = CONSUME(terminals_exports.pNameLn);
11644
11790
  return ACTION(() => {
11645
11791
  const [prefix, localName] = longName.image.split(":");
11646
- return C.factory.namedNode(C.factory.sourceLocation(longName), localName, prefix);
11792
+ return C.astFactory.namedNode(C.astFactory.sourceLocation(longName), localName, prefix);
11647
11793
  });
11648
11794
  } },
11649
11795
  { ALT: () => {
11650
11796
  const shortName = CONSUME(terminals_exports.pNameNs);
11651
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(shortName), "", shortName.image.slice(0, -1)));
11797
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(shortName), "", shortName.image.slice(0, -1)));
11652
11798
  } }
11653
11799
  ]),
11654
- gImpl: ({ PRINT_WORD }) => (ast, { factory }) => {
11655
- factory.printFilter(ast, () => PRINT_WORD(ast.prefix, ":", ast.value));
11800
+ gImpl: ({ PRINT_WORD }) => (ast, { astFactory: F3 }) => {
11801
+ F3.printFilter(ast, () => PRINT_WORD(ast.prefix, ":", ast.value));
11656
11802
  }
11657
11803
  };
11658
11804
  var canCreateBlankNodes = Symbol("canCreateBlankNodes");
@@ -11662,11 +11808,11 @@ var blankNode = {
11662
11808
  const result = OR([
11663
11809
  { ALT: () => {
11664
11810
  const labelToken = CONSUME(terminals_exports.blankNodeLabel);
11665
- return ACTION(() => C.factory.blankNode(labelToken.image.slice(2), C.factory.sourceLocation(labelToken)));
11811
+ return ACTION(() => C.astFactory.blankNode(labelToken.image.slice(2), C.astFactory.sourceLocation(labelToken)));
11666
11812
  } },
11667
11813
  { ALT: () => {
11668
11814
  const anonToken = CONSUME(terminals_exports.anon);
11669
- return ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocation(anonToken)));
11815
+ return ACTION(() => C.astFactory.blankNode(void 0, C.astFactory.sourceLocation(anonToken)));
11670
11816
  } }
11671
11817
  ]);
11672
11818
  ACTION(() => {
@@ -11676,15 +11822,15 @@ var blankNode = {
11676
11822
  });
11677
11823
  return result;
11678
11824
  },
11679
- gImpl: ({ PRINT_WORD }) => (ast, { factory }) => {
11680
- factory.printFilter(ast, () => PRINT_WORD("_:", ast.label.replace(/^e_/u, "")));
11825
+ gImpl: ({ PRINT_WORD }) => (ast, { astFactory }) => {
11826
+ astFactory.printFilter(ast, () => PRINT_WORD("_:", ast.label.replace(/^e_/u, "")));
11681
11827
  }
11682
11828
  };
11683
11829
  var verbA = {
11684
11830
  name: "VerbA",
11685
11831
  impl: ({ ACTION, CONSUME }) => (C) => {
11686
11832
  const token = CONSUME(a);
11687
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.TYPE, void 0));
11833
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(token), CommonIRIs.TYPE, void 0));
11688
11834
  }
11689
11835
  };
11690
11836
 
@@ -11701,7 +11847,7 @@ var prologue = {
11701
11847
  ]));
11702
11848
  return result;
11703
11849
  },
11704
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
11850
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
11705
11851
  for (const context of ast) {
11706
11852
  if (F3.isContextDefinitionBase(context)) {
11707
11853
  SUBRULE(baseDecl2, context);
@@ -11716,11 +11862,12 @@ var baseDecl2 = {
11716
11862
  impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11717
11863
  const base = CONSUME(baseDecl);
11718
11864
  const val = SUBRULE(iriFull);
11719
- return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));
11865
+ return ACTION(() => C.astFactory.contextDefinitionBase(C.astFactory.sourceLocation(base, val), val));
11720
11866
  },
11721
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
11867
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
11722
11868
  F3.printFilter(ast, () => PRINT_WORD("BASE"));
11723
11869
  SUBRULE(iri2, ast.value);
11870
+ F3.printFilter(ast, () => PRINT_WORD("\n"));
11724
11871
  }
11725
11872
  };
11726
11873
  var prefixDecl2 = {
@@ -11729,13 +11876,14 @@ var prefixDecl2 = {
11729
11876
  const prefix = CONSUME(prefixDecl);
11730
11877
  const name = CONSUME(terminals_exports.pNameNs).image.slice(0, -1);
11731
11878
  const value = SUBRULE(iriFull);
11732
- return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));
11879
+ return ACTION(() => C.astFactory.contextDefinitionPrefix(C.astFactory.sourceLocation(prefix, value), name, value));
11733
11880
  },
11734
- gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F3 }) => {
11881
+ gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { astFactory: F3 }) => {
11735
11882
  F3.printFilter(ast, () => {
11736
11883
  PRINT_WORDS("PREFIX", `${ast.key}:`);
11737
11884
  });
11738
11885
  SUBRULE(iri2, ast.value);
11886
+ F3.printFilter(ast, () => PRINT_WORDS("\n"));
11739
11887
  }
11740
11888
  };
11741
11889
  var verb = {
@@ -11751,7 +11899,7 @@ var varOrTerm = {
11751
11899
  { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
11752
11900
  { ALT: () => SUBRULE(graphTerm) }
11753
11901
  ]),
11754
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
11902
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
11755
11903
  if (F3.isTermVariable(ast)) {
11756
11904
  return SUBRULE(var_, ast);
11757
11905
  }
@@ -11772,9 +11920,9 @@ var var_ = {
11772
11920
  { ALT: () => CONSUME(terminals_exports.var1) },
11773
11921
  { ALT: () => CONSUME(terminals_exports.var2) }
11774
11922
  ]);
11775
- return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));
11923
+ return ACTION(() => C.astFactory.variable(varToken.image.slice(1), C.astFactory.sourceLocation(varToken)));
11776
11924
  },
11777
- gImpl: ({ PRINT_WORD }) => (ast, { factory: F3 }) => {
11925
+ gImpl: ({ PRINT_WORD }) => (ast, { astFactory: F3 }) => {
11778
11926
  F3.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));
11779
11927
  }
11780
11928
  };
@@ -11788,10 +11936,10 @@ var graphTerm = {
11788
11936
  { GATE: () => C.parseMode.has("canCreateBlankNodes"), ALT: () => SUBRULE(blankNode) },
11789
11937
  { ALT: () => {
11790
11938
  const tokenNil = CONSUME(terminals_exports.nil);
11791
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(tokenNil), CommonIRIs.NIL));
11939
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(tokenNil), CommonIRIs.NIL));
11792
11940
  } }
11793
11941
  ]),
11794
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
11942
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
11795
11943
  if (F3.isTermNamed(ast)) {
11796
11944
  SUBRULE(iri2, ast);
11797
11945
  } else if (F3.isTermLiteral(ast)) {
@@ -11811,14 +11959,14 @@ function datasetClauseUsing(name, token) {
11811
11959
  return OR([
11812
11960
  { ALT: () => {
11813
11961
  const iri3 = SUBRULE(defaultGraphClause);
11814
- return ACTION(() => C.factory.wrap({ clauseType: "default", value: iri3 }, C.factory.sourceLocation(start, iri3)));
11962
+ return ACTION(() => C.astFactory.wrap({ clauseType: "default", value: iri3 }, C.astFactory.sourceLocation(start, iri3)));
11815
11963
  } },
11816
11964
  { ALT: () => {
11817
11965
  const namedClause = SUBRULE(namedGraphClause);
11818
- return ACTION(() => C.factory.wrap({
11966
+ return ACTION(() => C.astFactory.wrap({
11819
11967
  clauseType: "named",
11820
11968
  value: namedClause.val
11821
- }, C.factory.sourceLocation(start, namedClause)));
11969
+ }, C.astFactory.sourceLocation(start, namedClause)));
11822
11970
  } }
11823
11971
  ]);
11824
11972
  }
@@ -11839,9 +11987,9 @@ function datasetClauseUsingStar(name, subRule, fromUsing) {
11839
11987
  const clause = SUBRULE(subRule);
11840
11988
  clauses.push(clause);
11841
11989
  });
11842
- return ACTION(() => C.factory.datasetClauses(clauses.map((clause) => clause.val), C.factory.sourceLocation(...clauses)));
11990
+ return ACTION(() => C.astFactory.datasetClauses(clauses.map((clause) => clause.val), C.astFactory.sourceLocation(...clauses)));
11843
11991
  },
11844
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
11992
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
11845
11993
  for (const clause of ast.clauses) {
11846
11994
  F3.printFilter(ast, () => PRINT_WORD(fromUsing));
11847
11995
  if (clause.clauseType === "named") {
@@ -11859,7 +12007,7 @@ var namedGraphClause = {
11859
12007
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11860
12008
  const named2 = CONSUME(graph_exports.named);
11861
12009
  const iri3 = SUBRULE(sourceSelector);
11862
- return ACTION(() => C.factory.wrap(iri3, C.factory.sourceLocation(named2, iri3)));
12010
+ return ACTION(() => C.astFactory.wrap(iri3, C.astFactory.sourceLocation(named2, iri3)));
11863
12011
  }
11864
12012
  };
11865
12013
  var sourceSelector = {
@@ -11876,7 +12024,7 @@ function funcExpr1(func) {
11876
12024
  CONSUME(symbols_exports.LParen);
11877
12025
  const arg = SUBRULE(expression);
11878
12026
  const close = CONSUME(symbols_exports.RParen);
11879
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12027
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg], C.astFactory.sourceLocation(operator, close)));
11880
12028
  }
11881
12029
  };
11882
12030
  }
@@ -11890,7 +12038,7 @@ function funcExpr2(func) {
11890
12038
  CONSUME(symbols_exports.comma);
11891
12039
  const arg2 = SUBRULE2(expression);
11892
12040
  const close = CONSUME(symbols_exports.RParen);
11893
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2], C.factory.sourceLocation(operator, close)));
12041
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg1, arg2], C.astFactory.sourceLocation(operator, close)));
11894
12042
  }
11895
12043
  };
11896
12044
  }
@@ -11906,7 +12054,7 @@ function funcExpr3(func) {
11906
12054
  CONSUME2(symbols_exports.comma);
11907
12055
  const arg3 = SUBRULE3(expression);
11908
12056
  const close = CONSUME(symbols_exports.RParen);
11909
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
12057
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg1, arg2, arg3], C.astFactory.sourceLocation(operator, close)));
11910
12058
  }
11911
12059
  };
11912
12060
  }
@@ -11918,7 +12066,7 @@ function funcVar1(func) {
11918
12066
  CONSUME(symbols_exports.LParen);
11919
12067
  const arg = SUBRULE(var_);
11920
12068
  const close = CONSUME(symbols_exports.RParen);
11921
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12069
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg], C.astFactory.sourceLocation(operator, close)));
11922
12070
  }
11923
12071
  };
11924
12072
  }
@@ -11932,11 +12080,11 @@ function funcExprOrNil1(func) {
11932
12080
  CONSUME(symbols_exports.LParen);
11933
12081
  const arg = SUBRULE(expression);
11934
12082
  const close = CONSUME(symbols_exports.RParen);
11935
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12083
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg], C.astFactory.sourceLocation(operator, close)));
11936
12084
  } },
11937
12085
  { ALT: () => {
11938
12086
  const nil2 = CONSUME(terminals_exports.nil);
11939
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12087
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [], C.astFactory.sourceLocation(operator, nil2)));
11940
12088
  } }
11941
12089
  ]);
11942
12090
  }
@@ -11948,7 +12096,7 @@ function funcNil1(func) {
11948
12096
  impl: ({ ACTION, CONSUME }) => (C) => {
11949
12097
  const operator = CONSUME(func);
11950
12098
  const nil2 = CONSUME(terminals_exports.nil);
11951
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12099
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [], C.astFactory.sourceLocation(operator, nil2)));
11952
12100
  }
11953
12101
  };
11954
12102
  }
@@ -11958,7 +12106,7 @@ function funcExprList1(func) {
11958
12106
  impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11959
12107
  const operator = CONSUME(func);
11960
12108
  const args = SUBRULE(expressionList);
11961
- return ACTION(() => C.factory.expressionOperation(operator.image, args.val, C.factory.sourceLocation(operator, args)));
12109
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, args.val, C.astFactory.sourceLocation(operator, args)));
11962
12110
  }
11963
12111
  };
11964
12112
  }
@@ -11976,7 +12124,7 @@ function funcExpr2or3(func) {
11976
12124
  return SUBRULE3(expression);
11977
12125
  });
11978
12126
  const close = CONSUME(symbols_exports.RParen);
11979
- return ACTION(() => C.factory.expressionOperation(operator.image, arg3 ? [arg1, arg2, arg3] : [arg1, arg2], C.factory.sourceLocation(operator, close)));
12127
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, arg3 ? [arg1, arg2, arg3] : [arg1, arg2], C.astFactory.sourceLocation(operator, close)));
11980
12128
  }
11981
12129
  };
11982
12130
  }
@@ -11996,7 +12144,7 @@ function funcExpr3or4(func) {
11996
12144
  return SUBRULE4(expression);
11997
12145
  });
11998
12146
  const close = CONSUME(symbols_exports.RParen);
11999
- return ACTION(() => C.factory.expressionOperation(operator.image, arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
12147
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3], C.astFactory.sourceLocation(operator, close)));
12000
12148
  }
12001
12149
  };
12002
12150
  }
@@ -12006,7 +12154,7 @@ function funcGroupGraphPattern(func) {
12006
12154
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12007
12155
  const operator = CONSUME(func);
12008
12156
  const group = SUBRULE(groupGraphPattern);
12009
- return ACTION(() => C.factory.expressionPatternOperation(operator.image, group, C.factory.sourceLocation(operator, group)));
12157
+ return ACTION(() => C.astFactory.expressionPatternOperation(operator.image, group, C.astFactory.sourceLocation(operator, group)));
12010
12158
  }
12011
12159
  };
12012
12160
  }
@@ -12019,7 +12167,7 @@ function baseAggregateFunc(func) {
12019
12167
  const distinct2 = OPTION(() => CONSUME(distinct));
12020
12168
  const expr1 = SUBRULE(expression);
12021
12169
  const close = CONSUME(symbols_exports.RParen);
12022
- return ACTION(() => C.factory.aggregate(operator.image, distinct2 !== void 0, expr1, void 0, C.factory.sourceLocation(operator, close)));
12170
+ return ACTION(() => C.astFactory.aggregate(operator.image, distinct2 !== void 0, expr1, void 0, C.astFactory.sourceLocation(operator, close)));
12023
12171
  }
12024
12172
  };
12025
12173
  }
@@ -12159,17 +12307,17 @@ var aggregateCount = {
12159
12307
  const expressionVal = OR([
12160
12308
  { ALT: () => {
12161
12309
  const starToken = CONSUME(symbols_exports.star);
12162
- return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));
12310
+ return ACTION(() => C.astFactory.wildcard(C.astFactory.sourceLocation(starToken)));
12163
12311
  } },
12164
12312
  { ALT: () => SUBRULE(expression) }
12165
12313
  ]);
12166
12314
  const closeToken = CONSUME(symbols_exports.RParen);
12167
12315
  return ACTION(() => {
12168
- const F3 = C.factory;
12169
- if (C.factory.isWildcard(expressionVal)) {
12170
- return F3.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.factory.sourceLocation(operatorToken, closeToken));
12316
+ const F3 = C.astFactory;
12317
+ if (C.astFactory.isWildcard(expressionVal)) {
12318
+ return F3.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.astFactory.sourceLocation(operatorToken, closeToken));
12171
12319
  }
12172
- return F3.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.factory.sourceLocation(operatorToken, closeToken));
12320
+ return F3.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.astFactory.sourceLocation(operatorToken, closeToken));
12173
12321
  });
12174
12322
  }
12175
12323
  };
@@ -12193,7 +12341,7 @@ var aggregateGroup_concat = {
12193
12341
  });
12194
12342
  const closeToken = CONSUME(symbols_exports.RParen);
12195
12343
  return ACTION(() => {
12196
- const F3 = C.factory;
12344
+ const F3 = C.astFactory;
12197
12345
  return F3.aggregate(operatorToken.image, Boolean(distinctToken), expr, sep?.value ?? " ", F3.sourceLocation(operatorToken, closeToken));
12198
12346
  });
12199
12347
  }
@@ -12223,7 +12371,7 @@ var aggregate = {
12223
12371
  });
12224
12372
  return result;
12225
12373
  },
12226
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12374
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12227
12375
  F3.printFilter(ast, () => {
12228
12376
  PRINT_WORD(ast.aggregation.toUpperCase(), "(");
12229
12377
  if (ast.distinct) {
@@ -12250,7 +12398,7 @@ var path = {
12250
12398
  };
12251
12399
  var pathGenerator = {
12252
12400
  name: "path",
12253
- gImpl: ({ PRINT, SUBRULE }) => (ast, { factory: F3 }, braces = true) => {
12401
+ gImpl: ({ PRINT, SUBRULE }) => (ast, { astFactory: F3 }, braces = true) => {
12254
12402
  if (F3.isTerm(ast) && F3.isTermNamed(ast)) {
12255
12403
  SUBRULE(iri2, ast);
12256
12404
  } else {
@@ -12299,7 +12447,7 @@ function pathChainHelper(name, SEP, subType, subRule) {
12299
12447
  tailEnd = SUBRULE2(subRule);
12300
12448
  tail.push(tailEnd);
12301
12449
  });
12302
- return ACTION(() => tail.length === 0 ? head2 : C.factory.path(subType, [head2, ...tail], C.factory.sourceLocation(head2, tailEnd)));
12450
+ return ACTION(() => tail.length === 0 ? head2 : C.astFactory.path(subType, [head2, ...tail], C.astFactory.sourceLocation(head2, tailEnd)));
12303
12451
  }
12304
12452
  };
12305
12453
  }
@@ -12310,7 +12458,7 @@ var pathEltOrInverse = {
12310
12458
  { ALT: () => {
12311
12459
  const hat2 = CONSUME(symbols_exports.hat);
12312
12460
  const item = SUBRULE2(pathElt);
12313
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12461
+ return ACTION(() => C.astFactory.path("^", [item], C.astFactory.sourceLocation(hat2, item)));
12314
12462
  } }
12315
12463
  ])
12316
12464
  };
@@ -12321,7 +12469,7 @@ var pathElt = {
12321
12469
  impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
12322
12470
  const item = SUBRULE(pathPrimary);
12323
12471
  const modification = OPTION(() => SUBRULE(pathMod));
12324
- return ACTION(() => modification === void 0 ? item : C.factory.path(modification.image, [item], C.factory.sourceLocation(item, modification)));
12472
+ return ACTION(() => modification === void 0 ? item : C.astFactory.path(modification.image, [item], C.astFactory.sourceLocation(item, modification)));
12325
12473
  }
12326
12474
  };
12327
12475
  var pathMod = {
@@ -12353,7 +12501,7 @@ var pathNegatedPropertySet = {
12353
12501
  return OR([
12354
12502
  { ALT: () => {
12355
12503
  const noAlternative = SUBRULE1(pathOneInPropertySet);
12356
- return ACTION(() => C.factory.path("!", [noAlternative], C.factory.sourceLocation(exclamation2, noAlternative)));
12504
+ return ACTION(() => C.astFactory.path("!", [noAlternative], C.astFactory.sourceLocation(exclamation2, noAlternative)));
12357
12505
  } },
12358
12506
  { ALT: () => {
12359
12507
  const open = CONSUME(symbols_exports.LParen);
@@ -12366,7 +12514,7 @@ var pathNegatedPropertySet = {
12366
12514
  });
12367
12515
  const close = CONSUME(symbols_exports.RParen);
12368
12516
  return ACTION(() => {
12369
- const F3 = C.factory;
12517
+ const F3 = C.astFactory;
12370
12518
  if (tail.length === 0) {
12371
12519
  return F3.path("!", [head2], F3.sourceLocation(exclamation2, close));
12372
12520
  }
@@ -12387,7 +12535,7 @@ var pathOneInPropertySet = {
12387
12535
  { ALT: () => SUBRULE2(iri2) },
12388
12536
  { ALT: () => SUBRULE2(verbA) }
12389
12537
  ]);
12390
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12538
+ return ACTION(() => C.astFactory.path("^", [item], C.astFactory.sourceLocation(hat2, item)));
12391
12539
  } }
12392
12540
  ])
12393
12541
  };
@@ -12412,33 +12560,35 @@ function triplesDotSeperated(triplesSameSubjectSubrule) {
12412
12560
  });
12413
12561
  }
12414
12562
  });
12415
- return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));
12563
+ return ACTION(() => C.astFactory.patternBgp(triples, C.astFactory.sourceLocation(...triples, dotToken)));
12416
12564
  };
12417
12565
  }
12418
12566
  var triplesBlock = {
12419
12567
  name: "triplesBlock",
12420
12568
  impl: (implArgs) => (C) => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C),
12421
- gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
12569
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { astFactory: F3 }) => {
12422
12570
  for (const [index, triple] of ast.triples.entries()) {
12423
12571
  HANDLE_LOC(triple, () => {
12424
12572
  const nextTriple = ast.triples.at(index);
12425
12573
  if (F3.isTripleCollection(triple)) {
12426
12574
  SUBRULE(graphNodePath, triple);
12427
- F3.printFilter(triple, () => PRINT_WORD("."));
12575
+ F3.printFilter(triple, () => PRINT_WORD(".\n"));
12428
12576
  } else {
12429
12577
  SUBRULE(graphNodePath, triple.subject);
12578
+ F3.printFilter(triple, () => PRINT_WORD(""));
12430
12579
  if (F3.isTerm(triple.predicate) && F3.isTermVariable(triple.predicate)) {
12431
12580
  SUBRULE(varOrTerm, triple.predicate);
12432
12581
  } else {
12433
12582
  SUBRULE(pathGenerator, triple.predicate, void 0);
12434
12583
  }
12584
+ F3.printFilter(triple, () => PRINT_WORD(""));
12435
12585
  SUBRULE(graphNodePath, triple.object);
12436
12586
  if (nextTriple === void 0 || F3.isTripleCollection(nextTriple) || !F3.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
12437
- F3.printFilter(ast, () => PRINT_WORD("."));
12587
+ F3.printFilter(ast, () => PRINT_WORD(".\n"));
12438
12588
  } else if (F3.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
12439
12589
  F3.printFilter(ast, () => PRINT_WORD(","));
12440
12590
  } else {
12441
- F3.printFilter(ast, () => PRINT_WORD(";"));
12591
+ F3.printFilter(ast, () => PRINT_WORD(";\n"));
12442
12592
  }
12443
12593
  }
12444
12594
  });
@@ -12451,24 +12601,24 @@ function triplesSameSubjectImpl(name, allowPaths) {
12451
12601
  impl: ({ ACTION, SUBRULE, OR }) => (C) => OR([
12452
12602
  { ALT: () => {
12453
12603
  const subject = SUBRULE(varOrTerm);
12454
- const res = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, ACTION(() => C.factory.dematerialized(subject)));
12604
+ const res = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, ACTION(() => C.astFactory.dematerialized(subject)));
12455
12605
  return ACTION(() => {
12456
12606
  if (res.length > 0) {
12457
12607
  res[0].subject = subject;
12458
- res[0].loc = C.factory.sourceLocation(subject, res[0]);
12608
+ res[0].loc = C.astFactory.sourceLocation(subject, res[0]);
12459
12609
  }
12460
12610
  return res;
12461
12611
  });
12462
12612
  } },
12463
12613
  { ALT: () => {
12464
12614
  const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);
12465
- const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, ACTION(() => C.factory.graphNodeIdentifier(subjectNode)));
12615
+ const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, ACTION(() => C.astFactory.graphNodeIdentifier(subjectNode)));
12466
12616
  return ACTION(() => {
12467
12617
  if (restNode.length === 0) {
12468
12618
  return [subjectNode];
12469
12619
  }
12470
12620
  restNode[0].subject = subjectNode;
12471
- restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);
12621
+ restNode[0].loc = C.astFactory.sourceLocation(subjectNode, restNode[0]);
12472
12622
  return restNode;
12473
12623
  });
12474
12624
  } }
@@ -12552,7 +12702,7 @@ function objectImpl(name, allowPaths) {
12552
12702
  name,
12553
12703
  impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {
12554
12704
  const node = SUBRULE(allowPaths ? graphNodePath : graphNode);
12555
- return ACTION(() => C.factory.triple(subject, predicate, node));
12705
+ return ACTION(() => C.astFactory.triple(subject, predicate, node));
12556
12706
  }
12557
12707
  };
12558
12708
  }
@@ -12569,7 +12719,7 @@ function collectionImpl(name, allowPaths) {
12569
12719
  });
12570
12720
  const endToken = CONSUME(symbols_exports.RParen);
12571
12721
  return ACTION(() => {
12572
- const F3 = C.factory;
12722
+ const F3 = C.astFactory;
12573
12723
  const triples = [];
12574
12724
  const predFirst = F3.namedNode(F3.sourceLocationNoMaterialize(), CommonIRIs.FIRST, void 0);
12575
12725
  const predRest = F3.namedNode(F3.sourceLocationNoMaterialize(), CommonIRIs.REST, void 0);
@@ -12593,7 +12743,7 @@ function collectionImpl(name, allowPaths) {
12593
12743
  return F3.tripleCollectionList(listHead, triples, F3.sourceLocation(startToken, endToken));
12594
12744
  });
12595
12745
  },
12596
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12746
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12597
12747
  F3.printFilter(ast, () => PRINT_WORD("("));
12598
12748
  for (const [idx, triple] of ast.triples.entries()) {
12599
12749
  if (idx % 2 === 0) {
@@ -12624,13 +12774,17 @@ function blankNodePropertyListImpl(name, allowPaths) {
12624
12774
  name,
12625
12775
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12626
12776
  const startToken = CONSUME(symbols_exports.LSquare);
12627
- const blankNode2 = ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocationNoMaterialize()));
12777
+ const blankNode2 = ACTION(() => C.astFactory.blankNode(void 0, C.astFactory.sourceLocationNoMaterialize()));
12628
12778
  const propList = SUBRULE(propertyPathNotEmptyImpl, blankNode2);
12629
12779
  const endToken = CONSUME(symbols_exports.RSquare);
12630
- return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(blankNode2, propList, C.factory.sourceLocation(startToken, endToken)));
12780
+ return ACTION(() => C.astFactory.tripleCollectionBlankNodeProperties(blankNode2, propList, C.astFactory.sourceLocation(startToken, endToken)));
12631
12781
  },
12632
- gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
12633
- F3.printFilter(ast, () => PRINT("["));
12782
+ gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC, PRINT_ON_EMPTY }) => (ast, c) => {
12783
+ const { astFactory: F3, indentInc } = c;
12784
+ F3.printFilter(ast, () => {
12785
+ c[traqulaIndentation] += indentInc;
12786
+ PRINT("[\n");
12787
+ });
12634
12788
  for (const triple of ast.triples) {
12635
12789
  HANDLE_LOC(triple, () => {
12636
12790
  if (F3.isTerm(triple.predicate) && F3.isTermVariable(triple.predicate)) {
@@ -12638,11 +12792,15 @@ function blankNodePropertyListImpl(name, allowPaths) {
12638
12792
  } else {
12639
12793
  SUBRULE(pathGenerator, triple.predicate, void 0);
12640
12794
  }
12795
+ F3.printFilter(triple, () => PRINT_WORD(""));
12641
12796
  SUBRULE(graphNodePath, triple.object);
12642
- F3.printFilter(ast, () => PRINT_WORD(";"));
12797
+ F3.printFilter(ast, () => PRINT_WORD(";\n"));
12643
12798
  });
12644
12799
  }
12645
- F3.printFilter(ast, () => PRINT("]"));
12800
+ F3.printFilter(ast, () => {
12801
+ c[traqulaIndentation] -= indentInc;
12802
+ PRINT_ON_EMPTY("]");
12803
+ });
12646
12804
  }
12647
12805
  };
12648
12806
  }
@@ -12659,7 +12817,7 @@ function graphNodeImpl(name, allowPaths) {
12659
12817
  ALT: () => SUBRULE(triplesNodeRule)
12660
12818
  }
12661
12819
  ]),
12662
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
12820
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
12663
12821
  if (F3.isTerm(ast)) {
12664
12822
  SUBRULE(varOrTerm, ast);
12665
12823
  } else {
@@ -12677,9 +12835,9 @@ var whereClause = {
12677
12835
  impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
12678
12836
  const where2 = OPTION(() => CONSUME(where));
12679
12837
  const group = SUBRULE(groupGraphPattern);
12680
- return ACTION(() => C.factory.wrap(group, C.factory.sourceLocation(where2, group)));
12838
+ return ACTION(() => C.astFactory.wrap(group, C.astFactory.sourceLocation(where2, group)));
12681
12839
  },
12682
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12840
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12683
12841
  F3.printFilter(ast, () => PRINT_WORD("WHERE"));
12684
12842
  SUBRULE(groupGraphPattern, ast.val);
12685
12843
  }
@@ -12693,19 +12851,26 @@ var groupGraphPattern = {
12693
12851
  { ALT: () => SUBRULE(groupGraphPatternSub) }
12694
12852
  ]);
12695
12853
  const close = CONSUME(symbols_exports.RCurly);
12696
- return ACTION(() => C.factory.patternGroup(patterns, C.factory.sourceLocation(open, close)));
12854
+ return ACTION(() => C.astFactory.patternGroup(patterns, C.astFactory.sourceLocation(open, close)));
12697
12855
  },
12698
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12699
- F3.printFilter(ast, () => PRINT_WORD("{"));
12856
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
12857
+ const { astFactory: F3, indentInc } = C;
12858
+ F3.printFilter(ast, () => {
12859
+ C[traqulaIndentation] += indentInc;
12860
+ PRINT_WORD("{\n");
12861
+ });
12700
12862
  for (const pattern of ast.patterns) {
12701
12863
  SUBRULE(generatePattern, pattern);
12702
12864
  }
12703
- F3.printFilter(ast, () => PRINT_WORD("}"));
12865
+ F3.printFilter(ast, () => {
12866
+ C[traqulaIndentation] -= indentInc;
12867
+ PRINT_ON_EMPTY("}\n");
12868
+ });
12704
12869
  }
12705
12870
  };
12706
12871
  var generatePattern = {
12707
12872
  name: "generatePattern",
12708
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
12873
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
12709
12874
  if (ast.type === "query") {
12710
12875
  SUBRULE(query, F3.querySelect({
12711
12876
  context: [],
@@ -12794,9 +12959,9 @@ var optionalGraphPattern = {
12794
12959
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12795
12960
  const optional2 = CONSUME(optional);
12796
12961
  const group = SUBRULE(groupGraphPattern);
12797
- return ACTION(() => C.factory.patternOptional(group.patterns, C.factory.sourceLocation(optional2, group)));
12962
+ return ACTION(() => C.astFactory.patternOptional(group.patterns, C.astFactory.sourceLocation(optional2, group)));
12798
12963
  },
12799
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12964
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12800
12965
  F3.printFilter(ast, () => PRINT_WORD("OPTIONAL"));
12801
12966
  SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc));
12802
12967
  }
@@ -12807,9 +12972,9 @@ var graphGraphPattern = {
12807
12972
  const graph2 = CONSUME(graph_exports.graph);
12808
12973
  const name = SUBRULE(varOrIri);
12809
12974
  const group = SUBRULE(groupGraphPattern);
12810
- return ACTION(() => C.factory.patternGraph(name, group.patterns, C.factory.sourceLocation(graph2, group)));
12975
+ return ACTION(() => C.astFactory.patternGraph(name, group.patterns, C.astFactory.sourceLocation(graph2, group)));
12811
12976
  },
12812
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12977
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12813
12978
  F3.printFilter(ast, () => PRINT_WORD("GRAPH"));
12814
12979
  SUBRULE(varOrTerm, ast.name);
12815
12980
  SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc));
@@ -12825,9 +12990,9 @@ var serviceGraphPattern = {
12825
12990
  }) ?? false;
12826
12991
  const name = SUBRULE1(varOrIri);
12827
12992
  const group = SUBRULE1(groupGraphPattern);
12828
- return ACTION(() => C.factory.patternService(name, group.patterns, silent2, C.factory.sourceLocation(service2, group)));
12993
+ return ACTION(() => C.astFactory.patternService(name, group.patterns, silent2, C.astFactory.sourceLocation(service2, group)));
12829
12994
  },
12830
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12995
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12831
12996
  F3.printFilter(ast, () => {
12832
12997
  PRINT_WORD("SERVICE");
12833
12998
  if (ast.silent) {
@@ -12847,14 +13012,14 @@ var bind2 = {
12847
13012
  CONSUME(as);
12848
13013
  const variable = SUBRULE(var_);
12849
13014
  const close = CONSUME(symbols_exports.RParen);
12850
- return ACTION(() => C.factory.patternBind(expressionVal, variable, C.factory.sourceLocation(bind3, close)));
13015
+ return ACTION(() => C.astFactory.patternBind(expressionVal, variable, C.astFactory.sourceLocation(bind3, close)));
12851
13016
  },
12852
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13017
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12853
13018
  F3.printFilter(ast, () => PRINT_WORD("BIND", "("));
12854
13019
  SUBRULE(expression, ast.expression);
12855
13020
  F3.printFilter(ast, () => PRINT_WORD("AS"));
12856
13021
  SUBRULE(var_, ast.variable);
12857
- F3.printFilter(ast, () => PRINT_WORD(")"));
13022
+ F3.printFilter(ast, () => PRINT_WORD(")\n"));
12858
13023
  }
12859
13024
  };
12860
13025
  var inlineData = {
@@ -12862,16 +13027,19 @@ var inlineData = {
12862
13027
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12863
13028
  const values3 = CONSUME(values2);
12864
13029
  const datablock = SUBRULE(dataBlock);
12865
- return ACTION(() => C.factory.patternValues(datablock.val, C.factory.sourceLocation(values3, datablock)));
13030
+ return ACTION(() => C.astFactory.patternValues(datablock.val, C.astFactory.sourceLocation(values3, datablock)));
12866
13031
  },
12867
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13032
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
13033
+ const { astFactory: F3, indentInc } = C;
12868
13034
  const variables = Object.keys(ast.values.at(0) ?? {});
12869
13035
  F3.printFilter(ast, () => {
13036
+ PRINT_ON_EMPTY("");
12870
13037
  PRINT_WORD("VALUES", "(");
12871
13038
  for (const variable of variables) {
12872
13039
  PRINT_WORD(`?${variable}`);
12873
13040
  }
12874
- PRINT_WORD(")", "{");
13041
+ C[traqulaIndentation] += indentInc;
13042
+ PRINT_WORD(")", "{\n");
12875
13043
  });
12876
13044
  for (const mapping of ast.values) {
12877
13045
  F3.printFilter(ast, () => PRINT_WORD("("));
@@ -12882,9 +13050,12 @@ var inlineData = {
12882
13050
  SUBRULE(graphNodePath, mapping[variable]);
12883
13051
  }
12884
13052
  }
12885
- F3.printFilter(ast, () => PRINT_WORD(")"));
13053
+ F3.printFilter(ast, () => PRINT_WORD(")\n"));
12886
13054
  }
12887
- F3.printFilter(ast, () => PRINT_WORD("}"));
13055
+ F3.printFilter(ast, () => {
13056
+ C[traqulaIndentation] -= indentInc;
13057
+ PRINT_ON_EMPTY("}\n");
13058
+ });
12888
13059
  }
12889
13060
  };
12890
13061
  var dataBlock = {
@@ -12907,7 +13078,7 @@ var inlineDataOneVar = {
12907
13078
  });
12908
13079
  });
12909
13080
  const close = CONSUME(symbols_exports.RCurly);
12910
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(varVal, close)));
13081
+ return ACTION(() => C.astFactory.wrap(res, C.astFactory.sourceLocation(varVal, close)));
12911
13082
  }
12912
13083
  };
12913
13084
  var inlineDataFull = {
@@ -12924,7 +13095,7 @@ var inlineDataFull = {
12924
13095
  res.push({});
12925
13096
  });
12926
13097
  const close = CONSUME1(symbols_exports.RCurly);
12927
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(nil2, close)));
13098
+ return ACTION(() => C.astFactory.wrap(res, C.astFactory.sourceLocation(nil2, close)));
12928
13099
  } },
12929
13100
  { ALT: () => {
12930
13101
  const open = CONSUME1(symbols_exports.LParen);
@@ -12956,7 +13127,7 @@ var inlineDataFull = {
12956
13127
  });
12957
13128
  });
12958
13129
  const close = CONSUME2(symbols_exports.RCurly);
12959
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(open, close)));
13130
+ return ACTION(() => C.astFactory.wrap(res, C.astFactory.sourceLocation(open, close)));
12960
13131
  } }
12961
13132
  ]);
12962
13133
  }
@@ -12979,9 +13150,9 @@ var minusGraphPattern = {
12979
13150
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12980
13151
  const minus2 = CONSUME(minus);
12981
13152
  const group = SUBRULE(groupGraphPattern);
12982
- return ACTION(() => C.factory.patternMinus(group.patterns, C.factory.sourceLocation(minus2, group)));
13153
+ return ACTION(() => C.astFactory.patternMinus(group.patterns, C.astFactory.sourceLocation(minus2, group)));
12983
13154
  },
12984
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13155
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12985
13156
  F3.printFilter(ast, () => PRINT_WORD("MINUS"));
12986
13157
  SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc));
12987
13158
  }
@@ -12997,9 +13168,9 @@ var groupOrUnionGraphPattern = {
12997
13168
  const group2 = SUBRULE2(groupGraphPattern);
12998
13169
  groups.push(group2);
12999
13170
  });
13000
- return ACTION(() => groups.length === 1 ? groups[0] : C.factory.patternUnion(groups, C.factory.sourceLocation(group, groups.at(-1))));
13171
+ return ACTION(() => groups.length === 1 ? groups[0] : C.astFactory.patternUnion(groups, C.astFactory.sourceLocation(group, groups.at(-1))));
13001
13172
  },
13002
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13173
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13003
13174
  if (F3.isPatternUnion(ast)) {
13004
13175
  const [head2, ...tail] = ast.patterns;
13005
13176
  SUBRULE(groupGraphPattern, head2);
@@ -13017,12 +13188,12 @@ var filter3 = {
13017
13188
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13018
13189
  const filterToken = CONSUME(filter2);
13019
13190
  const expression2 = SUBRULE(constraint);
13020
- return ACTION(() => C.factory.patternFilter(expression2, C.factory.sourceLocation(filterToken, expression2)));
13191
+ return ACTION(() => C.astFactory.patternFilter(expression2, C.astFactory.sourceLocation(filterToken, expression2)));
13021
13192
  },
13022
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13193
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13023
13194
  F3.printFilter(ast, () => PRINT_WORD("FILTER ("));
13024
13195
  SUBRULE(expression, ast.expression);
13025
- F3.printFilter(ast, () => PRINT_WORD(")"));
13196
+ F3.printFilter(ast, () => PRINT_WORD(")\n"));
13026
13197
  }
13027
13198
  };
13028
13199
  var constraint = {
@@ -13038,7 +13209,7 @@ var functionCall = {
13038
13209
  impl: ({ ACTION, SUBRULE }) => (C) => {
13039
13210
  const func = SUBRULE(iri2);
13040
13211
  const args = SUBRULE(argList);
13041
- return ACTION(() => C.factory.expressionFunctionCall(func, args.val.args, args.val.distinct, C.factory.sourceLocation(func, args)));
13212
+ return ACTION(() => C.astFactory.expressionFunctionCall(func, args.val.args, args.val.distinct, C.astFactory.sourceLocation(func, args)));
13042
13213
  }
13043
13214
  };
13044
13215
 
@@ -13048,7 +13219,7 @@ var argList = {
13048
13219
  impl: ({ ACTION, CONSUME, SUBRULE1, OPTION, OR, AT_LEAST_ONE_SEP }) => (C) => OR([
13049
13220
  { ALT: () => {
13050
13221
  const nil2 = CONSUME(terminals_exports.nil);
13051
- return ACTION(() => C.factory.wrap({ args: [], distinct: false }, C.factory.sourceLocation(nil2)));
13222
+ return ACTION(() => C.astFactory.wrap({ args: [], distinct: false }, C.astFactory.sourceLocation(nil2)));
13052
13223
  } },
13053
13224
  { ALT: () => {
13054
13225
  const args = [];
@@ -13065,10 +13236,10 @@ var argList = {
13065
13236
  }
13066
13237
  });
13067
13238
  const close = CONSUME(symbols_exports.RParen);
13068
- return ACTION(() => C.factory.wrap({ args, distinct: distinct2 }, C.factory.sourceLocation(open, close)));
13239
+ return ACTION(() => C.astFactory.wrap({ args, distinct: distinct2 }, C.astFactory.sourceLocation(open, close)));
13069
13240
  } }
13070
13241
  ]),
13071
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13242
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13072
13243
  F3.printFilter(ast, () => {
13073
13244
  PRINT_WORD("(");
13074
13245
  if (ast.val.distinct) {
@@ -13091,7 +13262,7 @@ var expressionList = {
13091
13262
  impl: ({ ACTION, CONSUME, MANY, OR, SUBRULE1, SUBRULE2 }) => (C) => OR([
13092
13263
  { ALT: () => {
13093
13264
  const nil2 = CONSUME(terminals_exports.nil);
13094
- return ACTION(() => C.factory.wrap([], C.factory.sourceLocation(nil2)));
13265
+ return ACTION(() => C.astFactory.wrap([], C.astFactory.sourceLocation(nil2)));
13095
13266
  } },
13096
13267
  { ALT: () => {
13097
13268
  const open = CONSUME(symbols_exports.LParen);
@@ -13103,7 +13274,7 @@ var expressionList = {
13103
13274
  args.push(expr);
13104
13275
  });
13105
13276
  const close = CONSUME(symbols_exports.RParen);
13106
- return ACTION(() => C.factory.wrap(args, C.factory.sourceLocation(open, close)));
13277
+ return ACTION(() => C.astFactory.wrap(args, C.astFactory.sourceLocation(open, close)));
13107
13278
  } }
13108
13279
  ])
13109
13280
  };
@@ -13112,7 +13283,7 @@ var prefixOperator = /* @__PURE__ */ new Set(["!", "UPLUS", "UMINUS"]);
13112
13283
  var expression = {
13113
13284
  name: "expression",
13114
13285
  impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression),
13115
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13286
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13116
13287
  if (F3.isTerm(ast)) {
13117
13288
  SUBRULE(varOrTerm, ast);
13118
13289
  } else if (F3.isExpressionOperator(ast)) {
@@ -13177,7 +13348,7 @@ var conditionalOrExpression = {
13177
13348
  impl: ({ ACTION, MANY, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => constructLeftDeep(() => SUBRULE1(conditionalAndExpression), () => {
13178
13349
  CONSUME(symbols_exports.logicOr);
13179
13350
  const args = SUBRULE2(conditionalAndExpression);
13180
- return (left) => ACTION(() => C.factory.expressionOperation("||", [left, args], C.factory.sourceLocation(left, args)));
13351
+ return (left) => ACTION(() => C.astFactory.expressionOperation("||", [left, args], C.astFactory.sourceLocation(left, args)));
13181
13352
  }, ACTION, MANY)
13182
13353
  };
13183
13354
  var conditionalAndExpression = {
@@ -13185,7 +13356,7 @@ var conditionalAndExpression = {
13185
13356
  impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => constructLeftDeep(() => SUBRULE1(valueLogical), () => {
13186
13357
  CONSUME(symbols_exports.logicAnd);
13187
13358
  const arg = SUBRULE2(valueLogical);
13188
- return (left) => ACTION(() => C.factory.expressionOperation("&&", [left, arg], C.factory.sourceLocation(left, arg)));
13359
+ return (left) => ACTION(() => C.astFactory.expressionOperation("&&", [left, arg], C.astFactory.sourceLocation(left, arg)));
13189
13360
  }, ACTION, MANY)
13190
13361
  };
13191
13362
  var valueLogical = {
@@ -13207,7 +13378,7 @@ var relationalExpression = {
13207
13378
  { ALT: () => CONSUME(symbols_exports.greaterThanEqual) }
13208
13379
  ]);
13209
13380
  const expr = SUBRULE2(numericExpression);
13210
- return ACTION(() => C.factory.expressionOperation(operator.image, [args1, expr], C.factory.sourceLocation(args1, expr)));
13381
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [args1, expr], C.astFactory.sourceLocation(args1, expr)));
13211
13382
  } },
13212
13383
  { ALT: () => {
13213
13384
  const operator = OR3([
@@ -13215,7 +13386,7 @@ var relationalExpression = {
13215
13386
  { ALT: () => CONSUME(notIn) }
13216
13387
  ]);
13217
13388
  const args = SUBRULE1(expressionList);
13218
- return ACTION(() => C.factory.expressionOperation(operator.image, [args1, ...args.val], C.factory.sourceLocation(args1, args)));
13389
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [args1, ...args.val], C.astFactory.sourceLocation(args1, args)));
13219
13390
  } }
13220
13391
  ]));
13221
13392
  return expression2 ?? args1;
@@ -13234,7 +13405,7 @@ var additiveExpression = {
13234
13405
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13235
13406
  ]);
13236
13407
  const arg = SUBRULE2(multiplicativeExpression);
13237
- return ACTION(() => (left) => C.factory.expressionOperation(operator.image, [left, arg], C.factory.sourceLocation(left, arg)));
13408
+ return ACTION(() => (left) => C.astFactory.expressionOperation(operator.image, [left, arg], C.astFactory.sourceLocation(left, arg)));
13238
13409
  } },
13239
13410
  { ALT: () => {
13240
13411
  const { operator, startInt } = OR3([
@@ -13265,9 +13436,9 @@ var additiveExpression = {
13265
13436
  { ALT: () => CONSUME(symbols_exports.slash) }
13266
13437
  ]);
13267
13438
  const innerExpr = SUBRULE1(unaryExpression);
13268
- return ACTION(() => (leftInner) => C.factory.expressionOperation(innerOperator.image, [leftInner, innerExpr], C.factory.sourceLocation(leftInner, innerExpr)));
13439
+ return ACTION(() => (leftInner) => C.astFactory.expressionOperation(innerOperator.image, [leftInner, innerExpr], C.astFactory.sourceLocation(leftInner, innerExpr)));
13269
13440
  }, ACTION, MANY2);
13270
- return (left) => C.factory.expressionOperation(operator, [left, multiplicativeExpr], C.factory.sourceLocation(left, multiplicativeExpr));
13441
+ return (left) => C.astFactory.expressionOperation(operator, [left, multiplicativeExpr], C.astFactory.sourceLocation(left, multiplicativeExpr));
13271
13442
  } }
13272
13443
  ]), ACTION, MANY1)
13273
13444
  };
@@ -13284,7 +13455,7 @@ var multiplicativeExpression = {
13284
13455
  subType: "operation",
13285
13456
  operator: operator.image,
13286
13457
  args: [left, expr],
13287
- loc: C.factory.sourceLocation(left, expr)
13458
+ loc: C.astFactory.sourceLocation(left, expr)
13288
13459
  });
13289
13460
  }, ACTION, MANY)
13290
13461
  };
@@ -13299,7 +13470,7 @@ var unaryExpression = {
13299
13470
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13300
13471
  ]);
13301
13472
  const expr = SUBRULE2(primaryExpression);
13302
- return ACTION(() => C.factory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.factory.sourceLocation(operator, expr)));
13473
+ return ACTION(() => C.astFactory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.astFactory.sourceLocation(operator, expr)));
13303
13474
  } }
13304
13475
  ])
13305
13476
  };
@@ -13322,7 +13493,7 @@ var brackettedExpression = {
13322
13493
  const expr = SUBRULE(expression);
13323
13494
  const close = CONSUME(symbols_exports.RParen);
13324
13495
  return ACTION(() => {
13325
- expr.loc = C.factory.sourceLocation(open, close);
13496
+ expr.loc = C.astFactory.sourceLocation(open, close);
13326
13497
  return expr;
13327
13498
  });
13328
13499
  }
@@ -13344,13 +13515,13 @@ var iriOrFunction = {
13344
13515
  function: iriVal,
13345
13516
  args: args.val.args,
13346
13517
  distinct: distinct2,
13347
- loc: C.factory.sourceLocation(iriVal, args)
13518
+ loc: C.astFactory.sourceLocation(iriVal, args)
13348
13519
  };
13349
13520
  });
13350
13521
  });
13351
13522
  return functionCall2 ?? iriVal;
13352
13523
  },
13353
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
13524
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
13354
13525
  if (F3.isTermNamed(ast)) {
13355
13526
  SUBRULE(iri2, ast);
13356
13527
  } else {
@@ -13403,11 +13574,14 @@ var groupClause = {
13403
13574
  type: "solutionModifier",
13404
13575
  subType: "group",
13405
13576
  groupings,
13406
- loc: C.factory.sourceLocation(start, groupings.at(-1))
13577
+ loc: C.astFactory.sourceLocation(start, groupings.at(-1))
13407
13578
  }));
13408
13579
  },
13409
- gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F3 }) => {
13410
- F3.printFilter(ast, () => PRINT_WORDS("GROUP", "BY"));
13580
+ gImpl: ({ PRINT_WORDS, SUBRULE, PRINT_ON_EMPTY }) => (ast, { astFactory: F3 }) => {
13581
+ F3.printFilter(ast, () => {
13582
+ PRINT_ON_EMPTY("");
13583
+ PRINT_WORDS("GROUP", "BY");
13584
+ });
13411
13585
  for (const grouping of ast.groupings) {
13412
13586
  if (F3.isExpression(grouping)) {
13413
13587
  SUBRULE(expression, grouping);
@@ -13441,7 +13615,7 @@ var groupCondition = {
13441
13615
  return {
13442
13616
  variable,
13443
13617
  value: expressionValue,
13444
- loc: C.factory.sourceLocation(open, close)
13618
+ loc: C.astFactory.sourceLocation(open, close)
13445
13619
  };
13446
13620
  }
13447
13621
  return expressionValue;
@@ -13460,10 +13634,13 @@ var havingClause = {
13460
13634
  expressions.push(SUBRULE(havingCondition));
13461
13635
  });
13462
13636
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13463
- return ACTION(() => C.factory.solutionModifierHaving(expressions, C.factory.sourceLocation(having2, expressions.at(-1))));
13637
+ return ACTION(() => C.astFactory.solutionModifierHaving(expressions, C.astFactory.sourceLocation(having2, expressions.at(-1))));
13464
13638
  },
13465
- gImpl: ({ PRINT_WORD, SUBRULE }) => (ast, { factory: F3 }) => {
13466
- F3.printFilter(ast, () => PRINT_WORD("HAVING"));
13639
+ gImpl: ({ PRINT_WORD, PRINT_ON_EMPTY, SUBRULE }) => (ast, { astFactory: F3 }) => {
13640
+ F3.printFilter(ast, () => {
13641
+ PRINT_ON_EMPTY("");
13642
+ PRINT_WORD("HAVING");
13643
+ });
13467
13644
  for (const having2 of ast.having) {
13468
13645
  SUBRULE(expression, having2);
13469
13646
  }
@@ -13484,10 +13661,13 @@ var orderClause = {
13484
13661
  orderings.push(SUBRULE1(orderCondition));
13485
13662
  });
13486
13663
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13487
- return ACTION(() => C.factory.solutionModifierOrder(orderings, C.factory.sourceLocation(order2, orderings.at(-1))));
13664
+ return ACTION(() => C.astFactory.solutionModifierOrder(orderings, C.astFactory.sourceLocation(order2, orderings.at(-1))));
13488
13665
  },
13489
- gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F3 }) => {
13490
- F3.printFilter(ast, () => PRINT_WORDS("ORDER", "BY"));
13666
+ gImpl: ({ PRINT_WORDS, PRINT_ON_EMPTY, SUBRULE }) => (ast, { astFactory: F3 }) => {
13667
+ F3.printFilter(ast, () => {
13668
+ PRINT_ON_EMPTY("");
13669
+ PRINT_WORDS("ORDER", "BY");
13670
+ });
13491
13671
  for (const ordering of ast.orderDefs) {
13492
13672
  if (ordering.descending) {
13493
13673
  F3.printFilter(ast, () => PRINT_WORDS("DESC"));
@@ -13518,7 +13698,7 @@ var orderCondition = {
13518
13698
  return ACTION(() => ({
13519
13699
  expression: expr,
13520
13700
  descending: descending[0],
13521
- loc: C.factory.sourceLocation(descending[1], expr)
13701
+ loc: C.astFactory.sourceLocation(descending[1], expr)
13522
13702
  }));
13523
13703
  } },
13524
13704
  { ALT: () => {
@@ -13537,16 +13717,17 @@ var limitOffsetClauses = {
13537
13717
  { ALT: () => {
13538
13718
  const limit2 = SUBRULE1(limitClause);
13539
13719
  const offset2 = OPTION1(() => SUBRULE1(offsetClause));
13540
- return ACTION(() => C.factory.solutionModifierLimitOffset(limit2.val, offset2?.val, C.factory.sourceLocation(limit2, ...offset2 ? [offset2] : [])));
13720
+ return ACTION(() => C.astFactory.solutionModifierLimitOffset(limit2.val, offset2?.val, C.astFactory.sourceLocation(limit2, ...offset2 ? [offset2] : [])));
13541
13721
  } },
13542
13722
  { ALT: () => {
13543
13723
  const offset2 = SUBRULE2(offsetClause);
13544
13724
  const limit2 = OPTION2(() => SUBRULE2(limitClause));
13545
- return ACTION(() => C.factory.solutionModifierLimitOffset(limit2?.val, offset2.val, C.factory.sourceLocation(offset2, limit2)));
13725
+ return ACTION(() => C.astFactory.solutionModifierLimitOffset(limit2?.val, offset2.val, C.astFactory.sourceLocation(offset2, limit2)));
13546
13726
  } }
13547
13727
  ]),
13548
- gImpl: ({ PRINT_WORDS }) => (ast, { factory: F3 }) => {
13728
+ gImpl: ({ PRINT_WORDS, PRINT_ON_EMPTY }) => (ast, { astFactory: F3 }) => {
13549
13729
  F3.printFilter(ast, () => {
13730
+ PRINT_ON_EMPTY("");
13550
13731
  if (ast.limit) {
13551
13732
  PRINT_WORDS("LIMIT", String(ast.limit));
13552
13733
  }
@@ -13562,7 +13743,7 @@ var limitClause = {
13562
13743
  const offset2 = CONSUME(limit);
13563
13744
  const value = CONSUME(terminals_exports.integer);
13564
13745
  const val = Number.parseInt(value.image, 10);
13565
- return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset2, value)));
13746
+ return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(offset2, value)));
13566
13747
  }
13567
13748
  };
13568
13749
  var offsetClause = {
@@ -13571,7 +13752,7 @@ var offsetClause = {
13571
13752
  const offset2 = CONSUME(offset);
13572
13753
  const value = CONSUME(terminals_exports.integer);
13573
13754
  const val = Number.parseInt(value.image, 10);
13574
- return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset2, value)));
13755
+ return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(offset2, value)));
13575
13756
  }
13576
13757
  };
13577
13758
 
@@ -13596,10 +13777,10 @@ var query = {
13596
13777
  ...subType,
13597
13778
  type: "query",
13598
13779
  ...values3 && { values: values3 },
13599
- loc: C.factory.sourceLocation(prologueValues.at(0), subType, values3)
13780
+ loc: C.astFactory.sourceLocation(prologueValues.at(0), subType, values3)
13600
13781
  }));
13601
13782
  },
13602
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
13783
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
13603
13784
  SUBRULE(prologue, ast.context);
13604
13785
  if (F3.isQuerySelect(ast)) {
13605
13786
  SUBRULE(selectQuery, ast);
@@ -13629,13 +13810,13 @@ var selectQuery = {
13629
13810
  solutionModifiers: modifiers,
13630
13811
  datasets: from2,
13631
13812
  ...selectVal.val,
13632
- loc: C.factory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13813
+ loc: C.astFactory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13633
13814
  };
13634
13815
  queryIsGood(ret);
13635
13816
  return ret;
13636
13817
  });
13637
13818
  },
13638
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
13819
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
13639
13820
  SUBRULE(selectClause, F3.wrap({
13640
13821
  variables: ast.variables,
13641
13822
  distinct: ast.distinct,
@@ -13653,14 +13834,14 @@ var subSelect = {
13653
13834
  const where2 = SUBRULE(whereClause);
13654
13835
  const modifiers = SUBRULE(solutionModifier);
13655
13836
  const values3 = SUBRULE(valuesClause);
13656
- return ACTION(() => C.factory.querySelect({
13837
+ return ACTION(() => C.astFactory.querySelect({
13657
13838
  where: where2.val,
13658
- datasets: C.factory.datasetClauses([], C.factory.sourceLocation()),
13839
+ datasets: C.astFactory.datasetClauses([], C.astFactory.sourceLocation()),
13659
13840
  context: [],
13660
13841
  solutionModifiers: modifiers,
13661
13842
  ...selectVal.val,
13662
13843
  ...values3 && { values: values3 }
13663
- }, C.factory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset, values3)));
13844
+ }, C.astFactory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset, values3)));
13664
13845
  }
13665
13846
  };
13666
13847
  var selectClause = {
@@ -13691,7 +13872,7 @@ var selectClause = {
13691
13872
  const star2 = CONSUME(symbols_exports.star);
13692
13873
  return ACTION(() => {
13693
13874
  last2 = star2;
13694
- return { variables: [C.factory.wildcard(C.factory.sourceLocation(star2))], ...distRed };
13875
+ return { variables: [C.astFactory.wildcard(C.astFactory.sourceLocation(star2))], ...distRed };
13695
13876
  });
13696
13877
  } },
13697
13878
  { ALT: () => {
@@ -13721,7 +13902,7 @@ var selectClause = {
13721
13902
  throw new Error(`Variable ${variable.value} used more than once in SELECT clause`);
13722
13903
  }
13723
13904
  usedVars.push(variable);
13724
- variables.push(C.factory.patternBind(expr, variable, C.factory.sourceLocation(open, last2)));
13905
+ variables.push(C.astFactory.patternBind(expr, variable, C.astFactory.sourceLocation(open, last2)));
13725
13906
  });
13726
13907
  } }
13727
13908
  ]));
@@ -13729,9 +13910,9 @@ var selectClause = {
13729
13910
  } }
13730
13911
  ]);
13731
13912
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13732
- return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(select2, last2)));
13913
+ return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(select2, last2)));
13733
13914
  },
13734
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13915
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13735
13916
  F3.printFilter(ast, () => {
13736
13917
  PRINT_WORD("SELECT");
13737
13918
  if (ast.val.distinct) {
@@ -13771,7 +13952,7 @@ var constructQuery = {
13771
13952
  datasets: from2,
13772
13953
  where: where2.val,
13773
13954
  solutionModifiers: modifiers,
13774
- loc: C.factory.sourceLocation(construct2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13955
+ loc: C.astFactory.sourceLocation(construct2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13775
13956
  }));
13776
13957
  } },
13777
13958
  { ALT: () => {
@@ -13783,19 +13964,26 @@ var constructQuery = {
13783
13964
  subType: "construct",
13784
13965
  template: template.val,
13785
13966
  datasets: from2,
13786
- where: C.factory.patternGroup([template.val], C.factory.sourceLocation()),
13967
+ where: C.astFactory.patternGroup([template.val], C.astFactory.sourceLocation()),
13787
13968
  solutionModifiers: modifiers,
13788
- loc: C.factory.sourceLocation(construct2, template, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13969
+ loc: C.astFactory.sourceLocation(construct2, template, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13789
13970
  }));
13790
13971
  } }
13791
13972
  ]);
13792
13973
  },
13793
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13974
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
13975
+ const { astFactory: F3, indentInc } = C;
13794
13976
  F3.printFilter(ast, () => PRINT_WORD("CONSTRUCT"));
13795
13977
  if (!F3.isSourceLocationNoMaterialize(ast.where.loc)) {
13796
- F3.printFilter(ast, () => PRINT_WORD("{"));
13978
+ F3.printFilter(ast, () => {
13979
+ C[traqulaIndentation] += indentInc;
13980
+ PRINT_WORD("{\n");
13981
+ });
13797
13982
  SUBRULE(triplesBlock, ast.template);
13798
- F3.printFilter(ast, () => PRINT_WORD("}"));
13983
+ F3.printFilter(ast, () => {
13984
+ C[traqulaIndentation] -= indentInc;
13985
+ PRINT_ON_EMPTY("}\n");
13986
+ });
13799
13987
  }
13800
13988
  SUBRULE(datasetClauseStar, ast.datasets);
13801
13989
  if (F3.isSourceLocationNoMaterialize(ast.where.loc)) {
@@ -13820,7 +14008,7 @@ var describeQuery = {
13820
14008
  } },
13821
14009
  { ALT: () => {
13822
14010
  const star2 = CONSUME(symbols_exports.star);
13823
- return [ACTION(() => C.factory.wildcard(C.factory.sourceLocation(star2)))];
14011
+ return [ACTION(() => C.astFactory.wildcard(C.astFactory.sourceLocation(star2)))];
13824
14012
  } }
13825
14013
  ]);
13826
14014
  const from2 = SUBRULE1(datasetClauseStar);
@@ -13832,10 +14020,10 @@ var describeQuery = {
13832
14020
  datasets: from2,
13833
14021
  ...where2 && { where: where2.val },
13834
14022
  solutionModifiers: modifiers,
13835
- loc: C.factory.sourceLocation(describe2, ...variables, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
14023
+ loc: C.astFactory.sourceLocation(describe2, ...variables, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13836
14024
  }));
13837
14025
  },
13838
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14026
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13839
14027
  F3.printFilter(ast, () => PRINT_WORD("DESCRIBE"));
13840
14028
  if (F3.isWildcard(ast.variables[0])) {
13841
14029
  F3.printFilter(ast, () => PRINT_WORD("*"));
@@ -13863,10 +14051,10 @@ var askQuery = {
13863
14051
  datasets: from2,
13864
14052
  where: where2.val,
13865
14053
  solutionModifiers: modifiers,
13866
- loc: C.factory.sourceLocation(ask2, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
14054
+ loc: C.astFactory.sourceLocation(ask2, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13867
14055
  }));
13868
14056
  },
13869
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14057
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13870
14058
  F3.printFilter(ast, () => PRINT_WORD("ASK"));
13871
14059
  SUBRULE(datasetClauseStar, ast.datasets);
13872
14060
  SUBRULE(whereClause, F3.wrap(ast.where, ast.loc));
@@ -13883,7 +14071,7 @@ var constructTemplate = {
13883
14071
  const open = CONSUME(symbols_exports.LCurly);
13884
14072
  const triples = OPTION(() => SUBRULE1(constructTriples));
13885
14073
  const close = CONSUME(symbols_exports.RCurly);
13886
- return ACTION(() => C.factory.wrap(triples ?? C.factory.patternBgp([], C.factory.sourceLocation()), C.factory.sourceLocation(open, close)));
14074
+ return ACTION(() => C.astFactory.wrap(triples ?? C.astFactory.patternBgp([], C.astFactory.sourceLocation()), C.astFactory.sourceLocation(open, close)));
13887
14075
  }
13888
14076
  };
13889
14077
  var constructTriples = {
@@ -13920,13 +14108,13 @@ var update = {
13920
14108
  const update2 = {
13921
14109
  type: "update",
13922
14110
  updates,
13923
- loc: C.factory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
14111
+ loc: C.astFactory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
13924
14112
  };
13925
14113
  updateNoReuseBlankNodeLabels(update2);
13926
14114
  return update2;
13927
14115
  });
13928
14116
  },
13929
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14117
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13930
14118
  const [head2, ...tail] = ast.updates;
13931
14119
  if (head2) {
13932
14120
  SUBRULE(prologue, head2.context);
@@ -14006,9 +14194,9 @@ var load2 = {
14006
14194
  CONSUME(loadInto);
14007
14195
  return SUBRULE1(graphRef);
14008
14196
  });
14009
- return ACTION(() => C.factory.updateOperationLoad(C.factory.sourceLocation(loadToken, source, destination), source, Boolean(silent2), destination));
14197
+ return ACTION(() => C.astFactory.updateOperationLoad(C.astFactory.sourceLocation(loadToken, source, destination), source, Boolean(silent2), destination));
14010
14198
  },
14011
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14199
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14012
14200
  F3.printFilter(ast, () => {
14013
14201
  PRINT_WORD("LOAD");
14014
14202
  if (ast.silent) {
@@ -14029,9 +14217,9 @@ function clearOrDrop(operation) {
14029
14217
  const opToken = CONSUME(operation);
14030
14218
  const silent2 = OPTION(() => CONSUME(silent));
14031
14219
  const destination = SUBRULE1(graphRefAll);
14032
- return ACTION(() => C.factory.updateOperationClearDrop(unCapitalize(operation.name), Boolean(silent2), destination, C.factory.sourceLocation(opToken, destination)));
14220
+ return ACTION(() => C.astFactory.updateOperationClearDrop(unCapitalize(operation.name), Boolean(silent2), destination, C.astFactory.sourceLocation(opToken, destination)));
14033
14221
  },
14034
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14222
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14035
14223
  F3.printFilter(ast, () => {
14036
14224
  PRINT_WORD(operation.name.toUpperCase());
14037
14225
  if (ast.silent) {
@@ -14050,9 +14238,9 @@ var create2 = {
14050
14238
  const createToken3 = CONSUME(create);
14051
14239
  const silent2 = OPTION(() => CONSUME(silent));
14052
14240
  const destination = SUBRULE1(graphRef);
14053
- return ACTION(() => C.factory.updateOperationCreate(destination, Boolean(silent2), C.factory.sourceLocation(createToken3, destination)));
14241
+ return ACTION(() => C.astFactory.updateOperationCreate(destination, Boolean(silent2), C.astFactory.sourceLocation(createToken3, destination)));
14054
14242
  },
14055
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14243
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14056
14244
  F3.printFilter(ast, () => {
14057
14245
  PRINT_WORD("CREATE");
14058
14246
  if (ast.silent) {
@@ -14071,9 +14259,9 @@ function copyMoveAddOperation(operation) {
14071
14259
  const source = SUBRULE1(graphOrDefault);
14072
14260
  CONSUME(to);
14073
14261
  const destination = SUBRULE2(graphOrDefault);
14074
- return ACTION(() => C.factory.updateOperationAddMoveCopy(unCapitalize(operation.name), source, destination, Boolean(silent2), C.factory.sourceLocation(op, destination)));
14262
+ return ACTION(() => C.astFactory.updateOperationAddMoveCopy(unCapitalize(operation.name), source, destination, Boolean(silent2), C.astFactory.sourceLocation(op, destination)));
14075
14263
  },
14076
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14264
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14077
14265
  F3.printFilter(ast, () => {
14078
14266
  PRINT_WORD(operation.name.toUpperCase());
14079
14267
  if (ast.silent) {
@@ -14095,7 +14283,7 @@ var quadPattern = {
14095
14283
  const open = CONSUME(symbols_exports.LCurly);
14096
14284
  const val = SUBRULE1(quads);
14097
14285
  const close = CONSUME(symbols_exports.RCurly);
14098
- return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
14286
+ return ACTION(() => C.astFactory.wrap(val.val, C.astFactory.sourceLocation(open, close)));
14099
14287
  }
14100
14288
  };
14101
14289
  var quadData = {
@@ -14106,7 +14294,7 @@ var quadData = {
14106
14294
  const val = SUBRULE1(quads);
14107
14295
  ACTION(() => couldParseVars && C.parseMode.add("canParseVars"));
14108
14296
  const close = CONSUME(symbols_exports.RCurly);
14109
- return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
14297
+ return ACTION(() => C.astFactory.wrap(val.val, C.astFactory.sourceLocation(open, close)));
14110
14298
  }
14111
14299
  };
14112
14300
  function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
@@ -14123,12 +14311,26 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
14123
14311
  if (name !== "insertData") {
14124
14312
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
14125
14313
  }
14126
- return ACTION(() => C.factory.updateOperationInsDelDataWhere(subType, data.val, C.factory.sourceLocation(insDelToken, data)));
14314
+ return ACTION(() => C.astFactory.updateOperationInsDelDataWhere(subType, data.val, C.astFactory.sourceLocation(insDelToken, data)));
14127
14315
  },
14128
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14129
- F3.printFilter(ast, () => PRINT_WORD(subType === "insertdata" ? "INSERT DATA" : subType === "deletedata" ? "DELETE DATA" : "DELETE WHERE", "{"));
14316
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
14317
+ const { astFactory: F3, indentInc } = C;
14318
+ F3.printFilter(ast, () => {
14319
+ C[traqulaIndentation] += indentInc;
14320
+ if (subType === "insertdata") {
14321
+ PRINT_WORD("INSERT DATA");
14322
+ } else if (subType === "deletedata") {
14323
+ PRINT_WORD("DELETE DATA");
14324
+ } else if (subType === "deletewhere") {
14325
+ PRINT_WORD("DELETE WHERE");
14326
+ }
14327
+ PRINT_WORD("{\n");
14328
+ });
14130
14329
  SUBRULE(quads, F3.wrap(ast.data, ast.loc));
14131
- F3.printFilter(ast, () => PRINT_WORD("}"));
14330
+ F3.printFilter(ast, () => {
14331
+ C[traqulaIndentation] -= indentInc;
14332
+ PRINT_ON_EMPTY("}\n");
14333
+ });
14132
14334
  }
14133
14335
  };
14134
14336
  }
@@ -14157,22 +14359,35 @@ var modify = {
14157
14359
  const using = SUBRULE1(usingClauseStar);
14158
14360
  CONSUME(where);
14159
14361
  const where2 = SUBRULE1(groupGraphPattern);
14160
- return ACTION(() => C.factory.updateOperationModify(C.factory.sourceLocation(graph2?.withToken, del, insert, where2), insert?.val ?? [], del?.val ?? [], where2, using, graph2?.graph));
14362
+ return ACTION(() => C.astFactory.updateOperationModify(C.astFactory.sourceLocation(graph2?.withToken, del, insert, where2), insert?.val ?? [], del?.val ?? [], where2, using, graph2?.graph));
14161
14363
  },
14162
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14364
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
14365
+ const { astFactory: F3, indentInc } = C;
14163
14366
  if (ast.graph) {
14164
14367
  F3.printFilter(ast, () => PRINT_WORD("WITH"));
14165
14368
  SUBRULE(iri2, ast.graph);
14166
14369
  }
14167
14370
  if (ast.delete.length > 0) {
14168
- F3.printFilter(ast, () => PRINT_WORD("DELETE", "{"));
14371
+ F3.printFilter(ast, () => {
14372
+ C[traqulaIndentation] += indentInc;
14373
+ PRINT_WORD("DELETE", "{\n");
14374
+ });
14169
14375
  SUBRULE(quads, F3.wrap(ast.delete, ast.loc));
14170
- F3.printFilter(ast, () => PRINT_WORD("}"));
14376
+ F3.printFilter(ast, () => {
14377
+ C[traqulaIndentation] -= indentInc;
14378
+ PRINT_ON_EMPTY("}\n");
14379
+ });
14171
14380
  }
14172
14381
  if (ast.insert.length > 0) {
14173
- F3.printFilter(ast, () => PRINT_WORD("INSERT", "{"));
14382
+ F3.printFilter(ast, () => {
14383
+ C[traqulaIndentation] += indentInc;
14384
+ PRINT_WORD("INSERT", "{\n");
14385
+ });
14174
14386
  SUBRULE(quads, F3.wrap(ast.insert, ast.loc));
14175
- F3.printFilter(ast, () => PRINT_WORD("}"));
14387
+ F3.printFilter(ast, () => {
14388
+ C[traqulaIndentation] -= indentInc;
14389
+ PRINT_ON_EMPTY("}\n");
14390
+ });
14176
14391
  }
14177
14392
  SUBRULE(usingClauseStar, ast.from);
14178
14393
  F3.printFilter(ast, () => PRINT_WORD("WHERE"));
@@ -14186,7 +14401,7 @@ var deleteClause2 = {
14186
14401
  const couldCreateBlankNodes = ACTION(() => C.parseMode.delete("canCreateBlankNodes"));
14187
14402
  const del = SUBRULE(quadPattern);
14188
14403
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
14189
- return ACTION(() => C.factory.wrap(del.val, C.factory.sourceLocation(delToken, del)));
14404
+ return ACTION(() => C.astFactory.wrap(del.val, C.astFactory.sourceLocation(delToken, del)));
14190
14405
  }
14191
14406
  };
14192
14407
  var insertClause2 = {
@@ -14194,7 +14409,7 @@ var insertClause2 = {
14194
14409
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14195
14410
  const insertToken = CONSUME(insertClause);
14196
14411
  const insert = SUBRULE(quadPattern);
14197
- return ACTION(() => C.factory.wrap(insert.val, C.factory.sourceLocation(insertToken, insert)));
14412
+ return ACTION(() => C.astFactory.wrap(insert.val, C.astFactory.sourceLocation(insertToken, insert)));
14198
14413
  }
14199
14414
  };
14200
14415
  var graphOrDefault = {
@@ -14202,12 +14417,12 @@ var graphOrDefault = {
14202
14417
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => OR([
14203
14418
  { ALT: () => {
14204
14419
  const def = CONSUME(graph_exports.default_);
14205
- return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
14420
+ return ACTION(() => C.astFactory.graphRefDefault(C.astFactory.sourceLocation(def)));
14206
14421
  } },
14207
14422
  { ALT: () => {
14208
14423
  const graph2 = OPTION(() => CONSUME(graph_exports.graph));
14209
14424
  const name = SUBRULE1(iri2);
14210
- return ACTION(() => C.factory.graphRefSpecific(name, C.factory.sourceLocation(graph2, name)));
14425
+ return ACTION(() => C.astFactory.graphRefSpecific(name, C.astFactory.sourceLocation(graph2, name)));
14211
14426
  } }
14212
14427
  ])
14213
14428
  };
@@ -14216,9 +14431,9 @@ var graphRef = {
14216
14431
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14217
14432
  const graph2 = CONSUME(graph_exports.graph);
14218
14433
  const val = SUBRULE(iri2);
14219
- return ACTION(() => C.factory.graphRefSpecific(val, C.factory.sourceLocation(graph2, val)));
14434
+ return ACTION(() => C.astFactory.graphRefSpecific(val, C.astFactory.sourceLocation(graph2, val)));
14220
14435
  },
14221
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14436
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14222
14437
  F3.printFilter(ast, () => PRINT_WORD("GRAPH"));
14223
14438
  SUBRULE(iri2, ast.graph);
14224
14439
  }
@@ -14229,18 +14444,18 @@ var graphRefAll = {
14229
14444
  { ALT: () => SUBRULE(graphRef) },
14230
14445
  { ALT: () => {
14231
14446
  const def = CONSUME(graph_exports.default_);
14232
- return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
14447
+ return ACTION(() => C.astFactory.graphRefDefault(C.astFactory.sourceLocation(def)));
14233
14448
  } },
14234
14449
  { ALT: () => {
14235
14450
  const named2 = CONSUME(graph_exports.named);
14236
- return ACTION(() => C.factory.graphRefNamed(C.factory.sourceLocation(named2)));
14451
+ return ACTION(() => C.astFactory.graphRefNamed(C.astFactory.sourceLocation(named2)));
14237
14452
  } },
14238
14453
  { ALT: () => {
14239
14454
  const graphAll2 = CONSUME(graph_exports.graphAll);
14240
- return ACTION(() => C.factory.graphRefAll(C.factory.sourceLocation(graphAll2)));
14455
+ return ACTION(() => C.astFactory.graphRefAll(C.astFactory.sourceLocation(graphAll2)));
14241
14456
  } }
14242
14457
  ]),
14243
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14458
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14244
14459
  if (F3.isGraphRefSpecific(ast)) {
14245
14460
  SUBRULE(graphRef, ast);
14246
14461
  } else if (F3.isGraphRefDefault(ast)) {
@@ -14277,9 +14492,9 @@ var quads = {
14277
14492
  ACTION(() => quads2.push(triples));
14278
14493
  });
14279
14494
  });
14280
- return ACTION(() => C.factory.wrap(quads2, C.factory.sourceLocation(quads2.at(0), last2)));
14495
+ return ACTION(() => C.astFactory.wrap(quads2, C.astFactory.sourceLocation(quads2.at(0), last2)));
14281
14496
  },
14282
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
14497
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
14283
14498
  for (const quad of ast.val) {
14284
14499
  if (F3.isPattern(quad)) {
14285
14500
  SUBRULE(triplesBlock, quad);
@@ -14297,14 +14512,21 @@ var quadsNotTriples = {
14297
14512
  CONSUME(symbols_exports.LCurly);
14298
14513
  const triples = OPTION(() => SUBRULE1(triplesTemplate));
14299
14514
  const close = CONSUME(symbols_exports.RCurly);
14300
- return ACTION(() => C.factory.graphQuads(name, triples ?? C.factory.patternBgp([], C.factory.sourceLocationNoMaterialize()), C.factory.sourceLocation(graph2, close)));
14515
+ return ACTION(() => C.astFactory.graphQuads(name, triples ?? C.astFactory.patternBgp([], C.astFactory.sourceLocationNoMaterialize()), C.astFactory.sourceLocation(graph2, close)));
14301
14516
  },
14302
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14517
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
14518
+ const { astFactory: F3, indentInc } = C;
14303
14519
  F3.printFilter(ast, () => PRINT_WORD("GRAPH"));
14304
14520
  SUBRULE(varOrTerm, ast.graph);
14305
- F3.printFilter(ast, () => PRINT_WORD("{"));
14521
+ F3.printFilter(ast, () => {
14522
+ C[traqulaIndentation] += indentInc;
14523
+ PRINT_WORD("{\n");
14524
+ });
14306
14525
  SUBRULE(triplesBlock, ast.triples);
14307
- F3.printFilter(ast, () => PRINT_WORD("}"));
14526
+ F3.printFilter(ast, () => {
14527
+ C[traqulaIndentation] -= indentInc;
14528
+ PRINT_ON_EMPTY("}\n");
14529
+ });
14308
14530
  }
14309
14531
  };
14310
14532
 
@@ -14327,7 +14549,7 @@ var queryOrUpdate = {
14327
14549
  ...subType,
14328
14550
  type: "query",
14329
14551
  ...values3 && { values: values3 },
14330
- loc: C.factory.sourceLocation(prologueValues.at(0), subType, values3)
14552
+ loc: C.astFactory.sourceLocation(prologueValues.at(0), subType, values3)
14331
14553
  }));
14332
14554
  } },
14333
14555
  { ALT: () => {
@@ -14351,7 +14573,7 @@ var queryOrUpdate = {
14351
14573
  const update2 = {
14352
14574
  type: "update",
14353
14575
  updates,
14354
- loc: C.factory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
14576
+ loc: C.astFactory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
14355
14577
  };
14356
14578
  updateNoReuseBlankNodeLabels(update2);
14357
14579
  return update2;
@@ -14359,7 +14581,7 @@ var queryOrUpdate = {
14359
14581
  } }
14360
14582
  ]);
14361
14583
  },
14362
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
14584
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
14363
14585
  if (F3.isQuery(ast)) {
14364
14586
  SUBRULE(query, ast);
14365
14587
  } else {
@@ -14463,8 +14685,78 @@ var LANG_DIR = createToken2({
14463
14685
  });
14464
14686
  var sparql12LexerBuilder = LexerBuilder.create(lexer_exports.sparql11LexerBuilder).addBefore(lexer_exports.symbols.logicAnd, tilde, annotationOpen, annotationClose, tripleTermOpen, tripleTermClose, reificationOpen, reificationClose, version).addBefore(lexer_exports.builtIn.langmatches, buildInLangDir, buildInStrLangDir, buildInHasLangDir, buildInHasLang, buildInIsTRIPLE, buildInTRIPLE, buildInSUBJECT, buildInPREDICATE, buildInOBJECT).addBefore(lexer_exports.terminals.langTag, LANG_DIR).delete(lexer_exports.terminals.langTag);
14465
14687
 
14688
+ // ../../packages/rules-sparql-1-2/lib/AstFactory.js
14689
+ var AstFactory2 = class extends AstFactory {
14690
+ termTriple(subject, predicate, object3, loc) {
14691
+ return {
14692
+ type: "term",
14693
+ subType: "triple",
14694
+ subject,
14695
+ predicate,
14696
+ object: object3,
14697
+ loc
14698
+ };
14699
+ }
14700
+ isTermTriple(obj) {
14701
+ return this.isOfSubType(obj, "term", "triple");
14702
+ }
14703
+ tripleCollectionReifiedTriple(loc, subject, predicate, object3, reifier2) {
14704
+ return {
14705
+ type: "tripleCollection",
14706
+ subType: "reifiedTriple",
14707
+ triples: [this.triple(subject, predicate, object3)],
14708
+ identifier: reifier2 ?? this.blankNode(void 0, this.sourceLocationNoMaterialize()),
14709
+ loc
14710
+ };
14711
+ }
14712
+ isTripleCollectionReifiedTriple(obj) {
14713
+ return this.isOfSubType(obj, "tripleCollection", "reifiedTriple");
14714
+ }
14715
+ tripleCollectionBlankNodeProperties(identifier, triples, loc) {
14716
+ return {
14717
+ type: "tripleCollection",
14718
+ subType: "blankNodeProperties",
14719
+ triples,
14720
+ identifier,
14721
+ loc
14722
+ };
14723
+ }
14724
+ /**
14725
+ * Overwritten triple constructor to always contain an empty annotations list
14726
+ */
14727
+ triple = (subject, predicate, object3, loc) => ({
14728
+ type: "triple",
14729
+ subject,
14730
+ predicate,
14731
+ object: object3,
14732
+ annotations: [],
14733
+ loc: loc ?? this.sourceLocation(subject, predicate, object3)
14734
+ });
14735
+ annotatedTriple(subject, predicate, object3, annotations, loc) {
14736
+ return {
14737
+ type: "triple",
14738
+ subject,
14739
+ predicate,
14740
+ object: object3,
14741
+ annotations: annotations ?? [],
14742
+ loc: loc ?? this.sourceLocation(subject, predicate, object3, ...annotations ?? [])
14743
+ };
14744
+ }
14745
+ contextDefinitionVersion(version2, loc) {
14746
+ return {
14747
+ type: "contextDef",
14748
+ subType: "version",
14749
+ version: version2,
14750
+ loc
14751
+ };
14752
+ }
14753
+ isContextDefinitionVersion(obj) {
14754
+ return this.isOfSubType(obj, "contextDef", "version");
14755
+ }
14756
+ };
14757
+
14466
14758
  // ../../packages/rules-sparql-1-2/lib/validators.js
14467
- var F2 = new Factory();
14759
+ var F2 = new AstFactory2();
14468
14760
  function isLangDir(dir) {
14469
14761
  return dir === "ltr" || dir === "rtl";
14470
14762
  }
@@ -14486,11 +14778,11 @@ var versionDecl = {
14486
14778
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14487
14779
  const versionToken = CONSUME(version);
14488
14780
  const identifier = SUBRULE(versionSpecifier);
14489
- return ACTION(() => C.factory.contextDefinitionVersion(identifier.val, C.factory.sourceLocation(versionToken, identifier)));
14781
+ return ACTION(() => C.astFactory.contextDefinitionVersion(identifier.val, C.astFactory.sourceLocation(versionToken, identifier)));
14490
14782
  },
14491
- gImpl: ({ PRINT_WORDS }) => (ast, { factory: F3 }) => {
14783
+ gImpl: ({ PRINT_WORDS }) => (ast, { astFactory: F3 }) => {
14492
14784
  F3.printFilter(ast, () => {
14493
- PRINT_WORDS("VERSION", `${grammar_exports.stringEscapedLexical(ast.version)}`);
14785
+ PRINT_WORDS("VERSION", `${grammar_exports.stringEscapedLexical(ast.version)}`, "\n");
14494
14786
  });
14495
14787
  }
14496
14788
  };
@@ -14501,7 +14793,7 @@ var versionSpecifier = {
14501
14793
  { ALT: () => CONSUME(lexer_exports.terminals.stringLiteral1) },
14502
14794
  { ALT: () => CONSUME(lexer_exports.terminals.stringLiteral2) }
14503
14795
  ]);
14504
- return ACTION(() => C.factory.wrap(token.image.slice(1, -1), C.factory.sourceLocation(token)));
14796
+ return ACTION(() => C.astFactory.wrap(token.image.slice(1, -1), C.astFactory.sourceLocation(token)));
14505
14797
  }
14506
14798
  };
14507
14799
  var prologue2 = {
@@ -14517,7 +14809,7 @@ var prologue2 = {
14517
14809
  ]));
14518
14810
  return result;
14519
14811
  },
14520
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
14812
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
14521
14813
  for (const context of ast) {
14522
14814
  if (F3.isContextDefinitionBase(context)) {
14523
14815
  SUBRULE(grammar_exports.baseDecl, context);
@@ -14534,7 +14826,7 @@ function reifiedTripleBlockImpl(name, allowPath) {
14534
14826
  name,
14535
14827
  impl: ({ ACTION, SUBRULE }) => (C) => {
14536
14828
  const triple = SUBRULE(reifiedTriple);
14537
- const properties = SUBRULE(allowPath ? grammar_exports.propertyListPath : grammar_exports.propertyList, ACTION(() => C.factory.dematerialized(triple.identifier)));
14829
+ const properties = SUBRULE(allowPath ? grammar_exports.propertyListPath : grammar_exports.propertyList, ACTION(() => C.astFactory.dematerialized(triple.identifier)));
14538
14830
  return ACTION(() => [triple, ...properties]);
14539
14831
  }
14540
14832
  };
@@ -14557,7 +14849,7 @@ var reifier = {
14557
14849
  if (reifier2 === void 0 && !C.parseMode.has("canCreateBlankNodes")) {
14558
14850
  throw new Error("Cannot create blanknodes in current parse mode");
14559
14851
  }
14560
- return C.factory.wrap(reifier2 ?? C.factory.blankNode(void 0, C.factory.sourceLocation()), C.factory.sourceLocation(tildeToken, reifier2));
14852
+ return C.astFactory.wrap(reifier2 ?? C.astFactory.blankNode(void 0, C.astFactory.sourceLocation()), C.astFactory.sourceLocation(tildeToken, reifier2));
14561
14853
  });
14562
14854
  }
14563
14855
  };
@@ -14587,7 +14879,7 @@ function objectImpl2(name, allowPaths) {
14587
14879
  const objectVal = SUBRULE(allowPaths ? graphNodePath2 : graphNode2);
14588
14880
  const annotationVal = SUBRULE(allowPaths ? annotationPath : annotation);
14589
14881
  return ACTION(() => {
14590
- const F3 = C.factory;
14882
+ const F3 = C.astFactory;
14591
14883
  if (F3.isPathPure(predicate) && annotationVal.length > 0) {
14592
14884
  throw new Error("Note 17 violation");
14593
14885
  }
@@ -14616,7 +14908,7 @@ function annotationImpl(name, allowPaths) {
14616
14908
  if (!currentReifier && !C.parseMode.has("canCreateBlankNodes")) {
14617
14909
  throw new Error("Cannot create blanknodes in current parse mode");
14618
14910
  }
14619
- currentReifier = currentReifier ?? C.factory.blankNode(void 0, C.factory.sourceLocation());
14911
+ currentReifier = currentReifier ?? C.astFactory.blankNode(void 0, C.astFactory.sourceLocation());
14620
14912
  });
14621
14913
  const block = SUBRULE(allowPaths ? annotationBlockPath : annotationBlock, currentReifier);
14622
14914
  ACTION(() => {
@@ -14628,7 +14920,7 @@ function annotationImpl(name, allowPaths) {
14628
14920
  });
14629
14921
  return annotations;
14630
14922
  },
14631
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14923
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14632
14924
  for (const annotation2 of ast) {
14633
14925
  if (F3.isTripleCollectionBlankNodeProperties(annotation2)) {
14634
14926
  SUBRULE(annotationBlockPath, annotation2);
@@ -14649,11 +14941,18 @@ function annotationBlockImpl(name, allowPaths) {
14649
14941
  const open = CONSUME(annotationOpen);
14650
14942
  const res = SUBRULE(allowPaths ? grammar_exports.propertyListPathNotEmpty : grammar_exports.propertyListNotEmpty, arg);
14651
14943
  const close = CONSUME(annotationClose);
14652
- return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(arg, res, C.factory.sourceLocation(open, close)));
14944
+ return ACTION(() => C.astFactory.tripleCollectionBlankNodeProperties(arg, res, C.astFactory.sourceLocation(open, close)));
14653
14945
  },
14654
- gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
14655
- F3.printFilter(ast, () => PRINT_WORD("{|"));
14656
- for (const triple of ast.triples) {
14946
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC, PRINT_ON_EMPTY }) => (ast, C) => {
14947
+ const { astFactory: F3, indentInc } = C;
14948
+ F3.printFilter(ast, () => {
14949
+ PRINT_WORD("{|");
14950
+ if (ast.triples.length > 1) {
14951
+ C[traqulaIndentation] += indentInc;
14952
+ PRINT_WORD("\n");
14953
+ }
14954
+ });
14955
+ function printTriple(triple) {
14657
14956
  HANDLE_LOC(triple, () => {
14658
14957
  if (F3.isTerm(triple.predicate)) {
14659
14958
  SUBRULE(graphNodePath2, triple.predicate);
@@ -14661,10 +14960,21 @@ function annotationBlockImpl(name, allowPaths) {
14661
14960
  SUBRULE(grammar_exports.pathGenerator, triple.predicate, void 0);
14662
14961
  }
14663
14962
  SUBRULE(graphNodePath2, triple.object);
14664
- F3.printFilter(ast, () => PRINT_WORD(";"));
14665
14963
  });
14666
14964
  }
14667
- F3.printFilter(ast, () => PRINT_WORD("|}"));
14965
+ const [head2, ...tail] = ast.triples;
14966
+ printTriple(head2);
14967
+ for (const triple of tail) {
14968
+ F3.printFilter(ast, () => PRINT_WORD(";\n"));
14969
+ printTriple(triple);
14970
+ }
14971
+ F3.printFilter(ast, () => {
14972
+ if (ast.triples.length > 1) {
14973
+ PRINT_ON_EMPTY("|}\n");
14974
+ } else {
14975
+ PRINT_WORD("|}");
14976
+ }
14977
+ });
14668
14978
  }
14669
14979
  };
14670
14980
  }
@@ -14684,7 +14994,7 @@ var graphNodePath2 = {
14684
14994
  { ALT: () => $.SUBRULE(reifiedTriple) }
14685
14995
  ]),
14686
14996
  gImpl: ($) => (ast, C) => {
14687
- if (C.factory.isTripleCollectionReifiedTriple(ast)) {
14997
+ if (C.astFactory.isTripleCollectionReifiedTriple(ast)) {
14688
14998
  $.SUBRULE(reifiedTriple, ast);
14689
14999
  } else {
14690
15000
  grammar_exports.graphNodePath.gImpl($)(ast, C);
@@ -14702,7 +15012,7 @@ var varOrTerm2 = {
14702
15012
  { ALT: () => SUBRULE(grammar_exports.blankNode) },
14703
15013
  { ALT: () => {
14704
15014
  const token = CONSUME(lexer_exports.terminals.nil);
14705
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.NIL));
15015
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(token), CommonIRIs.NIL));
14706
15016
  } },
14707
15017
  { ALT: () => SUBRULE(tripleTerm) }
14708
15018
  ])
@@ -14721,10 +15031,10 @@ var reifiedTriple = {
14721
15031
  if (reifierVal === void 0 && !C.parseMode.has("canCreateBlankNodes")) {
14722
15032
  throw new Error("Cannot create blanknodes in current parse mode");
14723
15033
  }
14724
- return C.factory.tripleCollectionReifiedTriple(C.factory.sourceLocation(open, close), subject, predicate, object3, reifierVal?.val);
15034
+ return C.astFactory.tripleCollectionReifiedTriple(C.astFactory.sourceLocation(open, close), subject, predicate, object3, reifierVal?.val);
14725
15035
  });
14726
15036
  },
14727
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
15037
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14728
15038
  F3.printFilter(ast, () => PRINT_WORD("<<"));
14729
15039
  const triple = ast.triples[0];
14730
15040
  SUBRULE(graphNodePath2, triple.subject);
@@ -14763,9 +15073,9 @@ var tripleTerm = {
14763
15073
  const predicate = SUBRULE(grammar_exports.verb);
14764
15074
  const object3 = SUBRULE(tripleTermObject);
14765
15075
  const close = CONSUME(tripleTermClose);
14766
- return ACTION(() => C.factory.termTriple(subject, predicate, object3, C.factory.sourceLocation(open, close)));
15076
+ return ACTION(() => C.astFactory.termTriple(subject, predicate, object3, C.astFactory.sourceLocation(open, close)));
14767
15077
  },
14768
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
15078
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14769
15079
  F3.printFilter(ast, () => PRINT_WORD("<<("));
14770
15080
  SUBRULE(graphNodePath2, ast.subject);
14771
15081
  SUBRULE(graphNodePath2, ast.predicate);
@@ -14798,12 +15108,12 @@ var tripleTermData = {
14798
15108
  { ALT: () => SUBRULE(grammar_exports.iri) },
14799
15109
  { ALT: () => {
14800
15110
  const token = CONSUME(lexer_exports.a);
14801
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.TYPE));
15111
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(token), CommonIRIs.TYPE));
14802
15112
  } }
14803
15113
  ]);
14804
15114
  const object3 = SUBRULE(tripleTermDataObject);
14805
15115
  const close = CONSUME(tripleTermClose);
14806
- return ACTION(() => C.factory.termTriple(subject, predicate, object3, C.factory.sourceLocation(open, close)));
15116
+ return ACTION(() => C.astFactory.termTriple(subject, predicate, object3, C.astFactory.sourceLocation(open, close)));
14807
15117
  }
14808
15118
  };
14809
15119
  var tripleTermDataSubject = {
@@ -14835,7 +15145,7 @@ var exprTripleTerm = {
14835
15145
  const predicate = SUBRULE(grammar_exports.verb);
14836
15146
  const object3 = SUBRULE(exprTripleTermObject);
14837
15147
  const close = CONSUME(tripleTermClose);
14838
- return ACTION(() => C.factory.termTriple(subject, predicate, object3, C.factory.sourceLocation(open, close)));
15148
+ return ACTION(() => C.astFactory.termTriple(subject, predicate, object3, C.astFactory.sourceLocation(open, close)));
14839
15149
  }
14840
15150
  };
14841
15151
  var exprTripleTermSubject = {
@@ -14885,7 +15195,7 @@ var rdfLiteral2 = {
14885
15195
  { ALT: () => {
14886
15196
  const langTag2 = CONSUME(LANG_DIR);
14887
15197
  return ACTION(() => {
14888
- const literal = C.factory.literalTerm(C.factory.sourceLocation(value, langTag2), value.value, langTag2.image.slice(1).toLowerCase());
15198
+ const literal = C.astFactory.literalTerm(C.astFactory.sourceLocation(value, langTag2), value.value, langTag2.image.slice(1).toLowerCase());
14889
15199
  langTagHasCorrectRange(literal);
14890
15200
  return literal;
14891
15201
  });
@@ -14893,7 +15203,7 @@ var rdfLiteral2 = {
14893
15203
  { ALT: () => {
14894
15204
  CONSUME(lexer_exports.symbols.hathat);
14895
15205
  const iriVal = SUBRULE(grammar_exports.iri);
14896
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(value, iriVal), value.value, iriVal));
15206
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(value, iriVal), value.value, iriVal));
14897
15207
  } }
14898
15208
  ])) ?? value;
14899
15209
  }
@@ -14905,7 +15215,7 @@ var unaryExpression2 = {
14905
15215
  { ALT: () => {
14906
15216
  const operator = CONSUME(lexer_exports.symbols.exclamation);
14907
15217
  const expr = SUBRULE1(unaryExpression2);
14908
- return ACTION(() => C.factory.expressionOperation("!", [expr], C.factory.sourceLocation(operator, expr)));
15218
+ return ACTION(() => C.astFactory.expressionOperation("!", [expr], C.astFactory.sourceLocation(operator, expr)));
14909
15219
  } },
14910
15220
  { ALT: () => {
14911
15221
  const operator = OR2([
@@ -14913,34 +15223,36 @@ var unaryExpression2 = {
14913
15223
  { ALT: () => CONSUME(lexer_exports.symbols.opMinus) }
14914
15224
  ]);
14915
15225
  const expr = SUBRULE2(primaryExpression2);
14916
- return ACTION(() => C.factory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.factory.sourceLocation(operator, expr)));
15226
+ return ACTION(() => C.astFactory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.astFactory.sourceLocation(operator, expr)));
14917
15227
  } }
14918
15228
  ])
14919
15229
  };
14920
15230
  var generateTriplesBlock = {
14921
15231
  name: "triplesBlock",
14922
- gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
15232
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { astFactory: F3 }) => {
14923
15233
  for (const [index, triple] of ast.triples.entries()) {
14924
15234
  HANDLE_LOC(triple, () => {
14925
15235
  const nextTriple = ast.triples.at(index);
14926
15236
  if (F3.isTripleCollection(triple)) {
14927
15237
  SUBRULE(graphNodePath2, triple);
14928
- F3.printFilter(triple, () => PRINT_WORD("."));
15238
+ F3.printFilter(triple, () => PRINT_WORD(".\n"));
14929
15239
  } else {
14930
15240
  SUBRULE(graphNodePath2, triple.subject);
15241
+ F3.printFilter(ast, () => PRINT_WORD(""));
14931
15242
  if (F3.isPathPure(triple.predicate)) {
14932
15243
  SUBRULE(grammar_exports.pathGenerator, triple.predicate, void 0);
14933
15244
  } else {
14934
15245
  SUBRULE(graphNodePath2, triple.predicate);
14935
15246
  }
15247
+ F3.printFilter(ast, () => PRINT_WORD(""));
14936
15248
  SUBRULE(graphNodePath2, triple.object);
14937
15249
  SUBRULE(annotationPath, triple.annotations ?? []);
14938
15250
  if (nextTriple === void 0 || F3.isTripleCollection(nextTriple) || !F3.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
14939
- F3.printFilter(ast, () => PRINT_WORD("."));
15251
+ F3.printFilter(ast, () => PRINT_WORD(".\n"));
14940
15252
  } else if (F3.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
14941
15253
  F3.printFilter(ast, () => PRINT_WORD(","));
14942
15254
  } else {
14943
- F3.printFilter(ast, () => PRINT_WORD(";"));
15255
+ F3.printFilter(ast, () => PRINT_WORD(";\n"));
14944
15256
  }
14945
15257
  }
14946
15258
  });
@@ -14950,7 +15262,7 @@ var generateTriplesBlock = {
14950
15262
  var generateGraphTerm = {
14951
15263
  name: "graphTerm",
14952
15264
  gImpl: ($) => (ast, C) => {
14953
- if (C.factory.isTermTriple(ast)) {
15265
+ if (C.astFactory.isTermTriple(ast)) {
14954
15266
  $.SUBRULE(tripleTerm, ast);
14955
15267
  } else {
14956
15268
  grammar_exports.graphTerm.gImpl($)(ast, C);
@@ -14958,86 +15270,18 @@ var generateGraphTerm = {
14958
15270
  }
14959
15271
  };
14960
15272
 
14961
- // ../../packages/rules-sparql-1-2/lib/Factory.js
14962
- var Factory2 = class extends Factory {
14963
- termTriple(subject, predicate, object3, loc) {
14964
- return {
14965
- type: "term",
14966
- subType: "triple",
14967
- subject,
14968
- predicate,
14969
- object: object3,
14970
- loc
14971
- };
14972
- }
14973
- isTermTriple(obj) {
14974
- return this.isOfSubType(obj, "term", "triple");
14975
- }
14976
- tripleCollectionReifiedTriple(loc, subject, predicate, object3, reifier2) {
14977
- return {
14978
- type: "tripleCollection",
14979
- subType: "reifiedTriple",
14980
- triples: [this.triple(subject, predicate, object3)],
14981
- identifier: reifier2 ?? this.blankNode(void 0, this.sourceLocationNoMaterialize()),
14982
- loc
14983
- };
14984
- }
14985
- isTripleCollectionReifiedTriple(obj) {
14986
- return this.isOfSubType(obj, "tripleCollection", "reifiedTriple");
14987
- }
14988
- tripleCollectionBlankNodeProperties(identifier, triples, loc) {
14989
- return {
14990
- type: "tripleCollection",
14991
- subType: "blankNodeProperties",
14992
- triples,
14993
- identifier,
14994
- loc
14995
- };
14996
- }
14997
- /**
14998
- * Overwritten triple constructor to always contain an empty annotations list
14999
- */
15000
- triple = (subject, predicate, object3, loc) => ({
15001
- type: "triple",
15002
- subject,
15003
- predicate,
15004
- object: object3,
15005
- annotations: [],
15006
- loc: loc ?? this.sourceLocation(subject, predicate, object3)
15007
- });
15008
- annotatedTriple(subject, predicate, object3, annotations, loc) {
15009
- return {
15010
- type: "triple",
15011
- subject,
15012
- predicate,
15013
- object: object3,
15014
- annotations: annotations ?? [],
15015
- loc: loc ?? this.sourceLocation(subject, predicate, object3, ...annotations ?? [])
15016
- };
15017
- }
15018
- contextDefinitionVersion(version2, loc) {
15019
- return {
15020
- type: "contextDef",
15021
- subType: "version",
15022
- version: version2,
15023
- loc
15024
- };
15025
- }
15026
- isContextDefinitionVersion(obj) {
15027
- return this.isOfSubType(obj, "contextDef", "version");
15028
- }
15029
- };
15030
-
15031
15273
  // ../../packages/rules-sparql-1-2/lib/parserUtils.js
15032
15274
  function completeParseContext2(context) {
15033
15275
  return {
15034
- factory: context.factory ?? new Factory2(),
15276
+ astFactory: context.astFactory ?? new AstFactory2(),
15035
15277
  baseIRI: context.baseIRI,
15036
15278
  prefixes: { ...context.prefixes },
15037
15279
  origSource: context.origSource ?? "",
15038
15280
  offset: context.offset,
15039
15281
  parseMode: context.parseMode ? new Set(context.parseMode) : /* @__PURE__ */ new Set(["canParseVars", "canCreateBlankNodes"]),
15040
- skipValidation: context.skipValidation ?? false
15282
+ skipValidation: context.skipValidation ?? false,
15283
+ indentInc: context.indentInc ?? 2,
15284
+ [traqulaIndentation]: context[traqulaIndentation] ?? 0
15041
15285
  };
15042
15286
  }
15043
15287
 
@@ -15045,7 +15289,7 @@ function completeParseContext2(context) {
15045
15289
  var sparql12GeneratorBuilder = GeneratorBuilder.create(sparql11GeneratorBuilder).widenContext().typePatch().addRule(grammar_exports2.tripleTerm).addRule(grammar_exports2.reifiedTriple).patchRule(grammar_exports2.graphNodePath).addRule(grammar_exports2.annotationBlockPath).addRule(grammar_exports2.annotationPath).addRule(grammar_exports2.versionDecl).patchRule(grammar_exports2.prologue).patchRule(grammar_exports2.generateTriplesBlock).patchRule(grammar_exports2.generateGraphTerm);
15046
15290
  var Generator = class {
15047
15291
  generator = sparql12GeneratorBuilder.build();
15048
- F = new Factory2();
15292
+ F = new AstFactory2();
15049
15293
  generate(ast, context = {}) {
15050
15294
  return this.generator.queryOrUpdate(ast, completeParseContext2(context));
15051
15295
  }