@traqula/rules-sparql-1-1 0.0.15 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/lib/MinimalSparqlParser.d.ts +3 -3
  2. package/lib/MinimalSparqlParser.js +6 -3
  3. package/lib/MinimalSparqlParser.js.map +1 -1
  4. package/lib/{factory.d.ts → astFactory.d.ts} +4 -4
  5. package/lib/{factory.js → astFactory.js} +3 -3
  6. package/lib/astFactory.js.map +1 -0
  7. package/lib/expressionHelpers.js +12 -12
  8. package/lib/expressionHelpers.js.map +1 -1
  9. package/lib/factoryMixins/ContextFactory.d.ts +2 -2
  10. package/lib/factoryMixins/ContextFactory.js.map +1 -1
  11. package/lib/factoryMixins/ExpressionFactory.d.ts +2 -2
  12. package/lib/factoryMixins/ExpressionFactory.js.map +1 -1
  13. package/lib/factoryMixins/GraphRefFactory.d.ts +2 -2
  14. package/lib/factoryMixins/GraphRefFactory.js.map +1 -1
  15. package/lib/factoryMixins/PathFactory.d.ts +2 -2
  16. package/lib/factoryMixins/PathFactory.js.map +1 -1
  17. package/lib/factoryMixins/Patternfactory.d.ts +2 -2
  18. package/lib/factoryMixins/Patternfactory.js.map +1 -1
  19. package/lib/factoryMixins/QueryFactory.d.ts +2 -2
  20. package/lib/factoryMixins/QueryFactory.js.map +1 -1
  21. package/lib/factoryMixins/SolutionModifiersFactory.d.ts +2 -2
  22. package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -1
  23. package/lib/factoryMixins/TermFactory.d.ts +2 -2
  24. package/lib/factoryMixins/TermFactory.js.map +1 -1
  25. package/lib/factoryMixins/UpdateOperationFactory.d.ts +2 -2
  26. package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -1
  27. package/lib/grammar/builtIn.d.ts +1 -1
  28. package/lib/grammar/builtIn.js +7 -7
  29. package/lib/grammar/builtIn.js.map +1 -1
  30. package/lib/grammar/dataSetClause.js +6 -6
  31. package/lib/grammar/dataSetClause.js.map +1 -1
  32. package/lib/grammar/expression.js +18 -18
  33. package/lib/grammar/expression.js.map +1 -1
  34. package/lib/grammar/general.js +12 -10
  35. package/lib/grammar/general.js.map +1 -1
  36. package/lib/grammar/index.js +3 -3
  37. package/lib/grammar/index.js.map +1 -1
  38. package/lib/grammar/literals.js +24 -24
  39. package/lib/grammar/literals.js.map +1 -1
  40. package/lib/grammar/propertyPaths.d.ts +2 -2
  41. package/lib/grammar/propertyPaths.js +7 -7
  42. package/lib/grammar/propertyPaths.js.map +1 -1
  43. package/lib/grammar/queryUnit.js +31 -23
  44. package/lib/grammar/queryUnit.js.map +1 -1
  45. package/lib/grammar/solutionModifier.js +26 -16
  46. package/lib/grammar/solutionModifier.js.map +1 -1
  47. package/lib/grammar/tripleBlock.d.ts +4 -4
  48. package/lib/grammar/tripleBlock.js +33 -20
  49. package/lib/grammar/tripleBlock.js.map +1 -1
  50. package/lib/grammar/updateUnit.js +75 -41
  51. package/lib/grammar/updateUnit.js.map +1 -1
  52. package/lib/grammar/whereClause.d.ts +1 -1
  53. package/lib/grammar/whereClause.js +46 -32
  54. package/lib/grammar/whereClause.js.map +1 -1
  55. package/lib/index.cjs +311 -232
  56. package/lib/index.d.ts +1 -1
  57. package/lib/index.js +1 -1
  58. package/lib/index.js.map +1 -1
  59. package/lib/lexer/BuiltInCalls.d.ts +1 -1
  60. package/lib/lexer/lexer.d.ts +2 -2
  61. package/lib/lexer/symbols.d.ts +1 -1
  62. package/lib/lexer/terminals.d.ts +1 -1
  63. package/lib/sparql11HelperTypes.d.ts +9 -6
  64. package/lib/sparql11HelperTypes.js.map +1 -1
  65. package/lib/validation/validators.js +2 -2
  66. package/lib/validation/validators.js.map +1 -1
  67. package/package.json +3 -3
  68. package/lib/factory.js.map +0 -1
package/lib/index.cjs CHANGED
@@ -20,8 +20,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // lib/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
+ AstFactory: () => AstFactory,
23
24
  CommonIRIs: () => CommonIRIs,
24
- Factory: () => Factory,
25
25
  MinimalSparqlParser: () => MinimalSparqlParser,
26
26
  TransformerSparql11: () => TransformerSparql11,
27
27
  baseAggregateFunc: () => baseAggregateFunc,
@@ -395,8 +395,8 @@ __export(BuiltInCalls_exports, {
395
395
  year: () => year
396
396
  });
397
397
 
398
- // ../core/lib/CoreFactory.js
399
- var CoreFactory = class {
398
+ // ../core/lib/AstCoreFactory.js
399
+ var AstCoreFactory = class {
400
400
  wrap(val, loc) {
401
401
  return { val, loc };
402
402
  }
@@ -9733,6 +9733,15 @@ applyMixins(Parser, [
9733
9733
  PerformanceTracer
9734
9734
  ]);
9735
9735
 
9736
+ // ../core/lib/utils.js
9737
+ function unCapitalize(str2) {
9738
+ return str2.charAt(0).toLowerCase() + str2.slice(1);
9739
+ }
9740
+ function createToken2(config) {
9741
+ return createToken(config);
9742
+ }
9743
+ var traqulaIndentation = "When you use this string, you expect traqula to handle indentation after every newline";
9744
+
9736
9745
  // ../core/lib/lexer-builder/LexerBuilder.js
9737
9746
  var LexerBuilder = class _LexerBuilder {
9738
9747
  tokens;
@@ -9830,14 +9839,6 @@ var LexerBuilder = class _LexerBuilder {
9830
9839
  }
9831
9840
  };
9832
9841
 
9833
- // ../core/lib/utils.js
9834
- function unCapitalize(str2) {
9835
- return str2.charAt(0).toLowerCase() + str2.slice(1);
9836
- }
9837
- function createToken2(config) {
9838
- return createToken(config);
9839
- }
9840
-
9841
9842
  // ../core/lib/Transformers.js
9842
9843
  var TransformerType = class {
9843
9844
  safeObjectVisit(value, mapper) {
@@ -10997,8 +10998,8 @@ function UpdateOperationFactoryMixin(Base) {
10997
10998
  };
10998
10999
  }
10999
11000
 
11000
- // lib/factory.js
11001
- 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() {
11001
+ // lib/astFactory.js
11002
+ 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() {
11002
11003
  alwaysSparql11(obj) {
11003
11004
  return true;
11004
11005
  }
@@ -11117,7 +11118,7 @@ var TransformerSparql11 = class extends TransformerSubType {
11117
11118
  };
11118
11119
 
11119
11120
  // lib/validation/validators.js
11120
- var F = new Factory();
11121
+ var F = new AstFactory();
11121
11122
  var transformer = new TransformerSparql11();
11122
11123
  function getAggregatesOfExpression(expression2) {
11123
11124
  if (F.isExpressionAggregate(expression2)) {
@@ -11337,22 +11338,22 @@ var rdfLiteral = {
11337
11338
  return OPTION(() => OR([
11338
11339
  { ALT: () => {
11339
11340
  const lang2 = CONSUME(terminals_exports.langTag);
11340
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(value, lang2), value.value, lang2.image.slice(1).toLowerCase()));
11341
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(value, lang2), value.value, lang2.image.slice(1).toLowerCase()));
11341
11342
  } },
11342
11343
  { ALT: () => {
11343
11344
  CONSUME(symbols_exports.hathat);
11344
11345
  const iriVal = SUBRULE1(iri2);
11345
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(value, iriVal), value.value, iriVal));
11346
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(value, iriVal), value.value, iriVal));
11346
11347
  } }
11347
11348
  ])) ?? value;
11348
11349
  },
11349
- gImpl: ({ SUBRULE, PRINT, PRINT_SPACE_LEFT }) => (ast, { factory }) => {
11350
- factory.printFilter(ast, () => PRINT_SPACE_LEFT(stringEscapedLexical(ast.value)));
11350
+ gImpl: ({ SUBRULE, PRINT, PRINT_SPACE_LEFT }) => (ast, { astFactory }) => {
11351
+ astFactory.printFilter(ast, () => PRINT_SPACE_LEFT(stringEscapedLexical(ast.value)));
11351
11352
  if (ast.langOrIri) {
11352
11353
  if (typeof ast.langOrIri === "string") {
11353
- factory.printFilter(ast, () => PRINT("@", ast.langOrIri));
11354
+ astFactory.printFilter(ast, () => PRINT("@", ast.langOrIri));
11354
11355
  } else {
11355
- factory.printFilter(ast, () => PRINT("^^"));
11356
+ astFactory.printFilter(ast, () => PRINT("^^"));
11356
11357
  SUBRULE(iri2, ast.langOrIri);
11357
11358
  }
11358
11359
  }
@@ -11374,7 +11375,7 @@ var numericLiteralUnsigned = {
11374
11375
  { ALT: () => [CONSUME(terminals_exports.decimal), CommonIRIs.DECIMAL] },
11375
11376
  { ALT: () => [CONSUME(terminals_exports.double), CommonIRIs.DOUBLE] }
11376
11377
  ]);
11377
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(parsed[0]), parsed[0].image, C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), parsed[1])));
11378
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
11378
11379
  }
11379
11380
  };
11380
11381
  var numericLiteralPositive = {
@@ -11385,7 +11386,7 @@ var numericLiteralPositive = {
11385
11386
  { ALT: () => [CONSUME(terminals_exports.decimalPositive), CommonIRIs.DECIMAL] },
11386
11387
  { ALT: () => [CONSUME(terminals_exports.doublePositive), CommonIRIs.DOUBLE] }
11387
11388
  ]);
11388
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(parsed[0]), parsed[0].image, C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), parsed[1])));
11389
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
11389
11390
  }
11390
11391
  };
11391
11392
  var numericLiteralNegative = {
@@ -11396,7 +11397,7 @@ var numericLiteralNegative = {
11396
11397
  { ALT: () => [CONSUME(terminals_exports.decimalNegative), CommonIRIs.DECIMAL] },
11397
11398
  { ALT: () => [CONSUME(terminals_exports.doubleNegative), CommonIRIs.DOUBLE] }
11398
11399
  ]);
11399
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(parsed[0]), parsed[0].image, C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), parsed[1])));
11400
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
11400
11401
  }
11401
11402
  };
11402
11403
  var booleanLiteral = {
@@ -11406,7 +11407,7 @@ var booleanLiteral = {
11406
11407
  { ALT: () => CONSUME(true_) },
11407
11408
  { ALT: () => CONSUME(false_) }
11408
11409
  ]);
11409
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(token), token.image.toLowerCase(), C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), CommonIRIs.BOOLEAN)));
11410
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(token), token.image.toLowerCase(), C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), CommonIRIs.BOOLEAN)));
11410
11411
  }
11411
11412
  };
11412
11413
  var string = {
@@ -11431,7 +11432,7 @@ var string = {
11431
11432
  } }
11432
11433
  ]);
11433
11434
  return ACTION(() => {
11434
- const F2 = C.factory;
11435
+ const F2 = C.astFactory;
11435
11436
  const value = x[1].replaceAll(/\\([tnrbf"'\\])/gu, (_, char) => {
11436
11437
  switch (char) {
11437
11438
  case "t":
@@ -11458,16 +11459,16 @@ var iri2 = {
11458
11459
  { ALT: () => SUBRULE(iriFull) },
11459
11460
  { ALT: () => SUBRULE(prefixedName) }
11460
11461
  ]),
11461
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => F2.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
11462
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => F2.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
11462
11463
  };
11463
11464
  var iriFull = {
11464
11465
  name: "iriFull",
11465
11466
  impl: ({ ACTION, CONSUME }) => (C) => {
11466
11467
  const iriToken = CONSUME(terminals_exports.iriRef);
11467
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));
11468
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));
11468
11469
  },
11469
- gImpl: ({ PRINT }) => (ast, { factory }) => {
11470
- factory.printFilter(ast, () => PRINT("<", ast.value, ">"));
11470
+ gImpl: ({ PRINT }) => (ast, { astFactory: F2 }) => {
11471
+ F2.printFilter(ast, () => PRINT("<", ast.value, ">"));
11471
11472
  }
11472
11473
  };
11473
11474
  var prefixedName = {
@@ -11477,16 +11478,16 @@ var prefixedName = {
11477
11478
  const longName = CONSUME(terminals_exports.pNameLn);
11478
11479
  return ACTION(() => {
11479
11480
  const [prefix, localName] = longName.image.split(":");
11480
- return C.factory.namedNode(C.factory.sourceLocation(longName), localName, prefix);
11481
+ return C.astFactory.namedNode(C.astFactory.sourceLocation(longName), localName, prefix);
11481
11482
  });
11482
11483
  } },
11483
11484
  { ALT: () => {
11484
11485
  const shortName = CONSUME(terminals_exports.pNameNs);
11485
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(shortName), "", shortName.image.slice(0, -1)));
11486
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(shortName), "", shortName.image.slice(0, -1)));
11486
11487
  } }
11487
11488
  ]),
11488
- gImpl: ({ PRINT_WORD }) => (ast, { factory }) => {
11489
- factory.printFilter(ast, () => PRINT_WORD(ast.prefix, ":", ast.value));
11489
+ gImpl: ({ PRINT_WORD }) => (ast, { astFactory: F2 }) => {
11490
+ F2.printFilter(ast, () => PRINT_WORD(ast.prefix, ":", ast.value));
11490
11491
  }
11491
11492
  };
11492
11493
  var canCreateBlankNodes = Symbol("canCreateBlankNodes");
@@ -11496,11 +11497,11 @@ var blankNode = {
11496
11497
  const result = OR([
11497
11498
  { ALT: () => {
11498
11499
  const labelToken = CONSUME(terminals_exports.blankNodeLabel);
11499
- return ACTION(() => C.factory.blankNode(labelToken.image.slice(2), C.factory.sourceLocation(labelToken)));
11500
+ return ACTION(() => C.astFactory.blankNode(labelToken.image.slice(2), C.astFactory.sourceLocation(labelToken)));
11500
11501
  } },
11501
11502
  { ALT: () => {
11502
11503
  const anonToken = CONSUME(terminals_exports.anon);
11503
- return ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocation(anonToken)));
11504
+ return ACTION(() => C.astFactory.blankNode(void 0, C.astFactory.sourceLocation(anonToken)));
11504
11505
  } }
11505
11506
  ]);
11506
11507
  ACTION(() => {
@@ -11510,15 +11511,15 @@ var blankNode = {
11510
11511
  });
11511
11512
  return result;
11512
11513
  },
11513
- gImpl: ({ PRINT_WORD }) => (ast, { factory }) => {
11514
- factory.printFilter(ast, () => PRINT_WORD("_:", ast.label.replace(/^e_/u, "")));
11514
+ gImpl: ({ PRINT_WORD }) => (ast, { astFactory }) => {
11515
+ astFactory.printFilter(ast, () => PRINT_WORD("_:", ast.label.replace(/^e_/u, "")));
11515
11516
  }
11516
11517
  };
11517
11518
  var verbA = {
11518
11519
  name: "VerbA",
11519
11520
  impl: ({ ACTION, CONSUME }) => (C) => {
11520
11521
  const token = CONSUME(a);
11521
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.TYPE, void 0));
11522
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(token), CommonIRIs.TYPE, void 0));
11522
11523
  }
11523
11524
  };
11524
11525
 
@@ -11535,7 +11536,7 @@ var prologue = {
11535
11536
  ]));
11536
11537
  return result;
11537
11538
  },
11538
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
11539
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => {
11539
11540
  for (const context of ast) {
11540
11541
  if (F2.isContextDefinitionBase(context)) {
11541
11542
  SUBRULE(baseDecl2, context);
@@ -11550,11 +11551,12 @@ var baseDecl2 = {
11550
11551
  impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11551
11552
  const base = CONSUME(baseDecl);
11552
11553
  const val = SUBRULE(iriFull);
11553
- return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));
11554
+ return ACTION(() => C.astFactory.contextDefinitionBase(C.astFactory.sourceLocation(base, val), val));
11554
11555
  },
11555
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
11556
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
11556
11557
  F2.printFilter(ast, () => PRINT_WORD("BASE"));
11557
11558
  SUBRULE(iri2, ast.value);
11559
+ F2.printFilter(ast, () => PRINT_WORD("\n"));
11558
11560
  }
11559
11561
  };
11560
11562
  var prefixDecl2 = {
@@ -11563,13 +11565,14 @@ var prefixDecl2 = {
11563
11565
  const prefix = CONSUME(prefixDecl);
11564
11566
  const name = CONSUME(terminals_exports.pNameNs).image.slice(0, -1);
11565
11567
  const value = SUBRULE(iriFull);
11566
- return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));
11568
+ return ACTION(() => C.astFactory.contextDefinitionPrefix(C.astFactory.sourceLocation(prefix, value), name, value));
11567
11569
  },
11568
- gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F2 }) => {
11570
+ gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { astFactory: F2 }) => {
11569
11571
  F2.printFilter(ast, () => {
11570
11572
  PRINT_WORDS("PREFIX", `${ast.key}:`);
11571
11573
  });
11572
11574
  SUBRULE(iri2, ast.value);
11575
+ F2.printFilter(ast, () => PRINT_WORDS("\n"));
11573
11576
  }
11574
11577
  };
11575
11578
  var verb = {
@@ -11585,7 +11588,7 @@ var varOrTerm = {
11585
11588
  { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
11586
11589
  { ALT: () => SUBRULE(graphTerm) }
11587
11590
  ]),
11588
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
11591
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => {
11589
11592
  if (F2.isTermVariable(ast)) {
11590
11593
  return SUBRULE(var_, ast);
11591
11594
  }
@@ -11606,9 +11609,9 @@ var var_ = {
11606
11609
  { ALT: () => CONSUME(terminals_exports.var1) },
11607
11610
  { ALT: () => CONSUME(terminals_exports.var2) }
11608
11611
  ]);
11609
- return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));
11612
+ return ACTION(() => C.astFactory.variable(varToken.image.slice(1), C.astFactory.sourceLocation(varToken)));
11610
11613
  },
11611
- gImpl: ({ PRINT_WORD }) => (ast, { factory: F2 }) => {
11614
+ gImpl: ({ PRINT_WORD }) => (ast, { astFactory: F2 }) => {
11612
11615
  F2.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));
11613
11616
  }
11614
11617
  };
@@ -11622,10 +11625,10 @@ var graphTerm = {
11622
11625
  { GATE: () => C.parseMode.has("canCreateBlankNodes"), ALT: () => SUBRULE(blankNode) },
11623
11626
  { ALT: () => {
11624
11627
  const tokenNil = CONSUME(terminals_exports.nil);
11625
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(tokenNil), CommonIRIs.NIL));
11628
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(tokenNil), CommonIRIs.NIL));
11626
11629
  } }
11627
11630
  ]),
11628
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
11631
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => {
11629
11632
  if (F2.isTermNamed(ast)) {
11630
11633
  SUBRULE(iri2, ast);
11631
11634
  } else if (F2.isTermLiteral(ast)) {
@@ -11645,14 +11648,14 @@ function datasetClauseUsing(name, token) {
11645
11648
  return OR([
11646
11649
  { ALT: () => {
11647
11650
  const iri3 = SUBRULE(defaultGraphClause);
11648
- return ACTION(() => C.factory.wrap({ clauseType: "default", value: iri3 }, C.factory.sourceLocation(start, iri3)));
11651
+ return ACTION(() => C.astFactory.wrap({ clauseType: "default", value: iri3 }, C.astFactory.sourceLocation(start, iri3)));
11649
11652
  } },
11650
11653
  { ALT: () => {
11651
11654
  const namedClause = SUBRULE(namedGraphClause);
11652
- return ACTION(() => C.factory.wrap({
11655
+ return ACTION(() => C.astFactory.wrap({
11653
11656
  clauseType: "named",
11654
11657
  value: namedClause.val
11655
- }, C.factory.sourceLocation(start, namedClause)));
11658
+ }, C.astFactory.sourceLocation(start, namedClause)));
11656
11659
  } }
11657
11660
  ]);
11658
11661
  }
@@ -11673,9 +11676,9 @@ function datasetClauseUsingStar(name, subRule, fromUsing) {
11673
11676
  const clause = SUBRULE(subRule);
11674
11677
  clauses.push(clause);
11675
11678
  });
11676
- return ACTION(() => C.factory.datasetClauses(clauses.map((clause) => clause.val), C.factory.sourceLocation(...clauses)));
11679
+ return ACTION(() => C.astFactory.datasetClauses(clauses.map((clause) => clause.val), C.astFactory.sourceLocation(...clauses)));
11677
11680
  },
11678
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
11681
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
11679
11682
  for (const clause of ast.clauses) {
11680
11683
  F2.printFilter(ast, () => PRINT_WORD(fromUsing));
11681
11684
  if (clause.clauseType === "named") {
@@ -11693,7 +11696,7 @@ var namedGraphClause = {
11693
11696
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11694
11697
  const named2 = CONSUME(graph_exports.named);
11695
11698
  const iri3 = SUBRULE(sourceSelector);
11696
- return ACTION(() => C.factory.wrap(iri3, C.factory.sourceLocation(named2, iri3)));
11699
+ return ACTION(() => C.astFactory.wrap(iri3, C.astFactory.sourceLocation(named2, iri3)));
11697
11700
  }
11698
11701
  };
11699
11702
  var sourceSelector = {
@@ -11710,7 +11713,7 @@ function funcExpr1(func) {
11710
11713
  CONSUME(symbols_exports.LParen);
11711
11714
  const arg = SUBRULE(expression);
11712
11715
  const close = CONSUME(symbols_exports.RParen);
11713
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11716
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg], C.astFactory.sourceLocation(operator, close)));
11714
11717
  }
11715
11718
  };
11716
11719
  }
@@ -11724,7 +11727,7 @@ function funcExpr2(func) {
11724
11727
  CONSUME(symbols_exports.comma);
11725
11728
  const arg2 = SUBRULE2(expression);
11726
11729
  const close = CONSUME(symbols_exports.RParen);
11727
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2], C.factory.sourceLocation(operator, close)));
11730
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg1, arg2], C.astFactory.sourceLocation(operator, close)));
11728
11731
  }
11729
11732
  };
11730
11733
  }
@@ -11740,7 +11743,7 @@ function funcExpr3(func) {
11740
11743
  CONSUME2(symbols_exports.comma);
11741
11744
  const arg3 = SUBRULE3(expression);
11742
11745
  const close = CONSUME(symbols_exports.RParen);
11743
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
11746
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg1, arg2, arg3], C.astFactory.sourceLocation(operator, close)));
11744
11747
  }
11745
11748
  };
11746
11749
  }
@@ -11752,7 +11755,7 @@ function funcVar1(func) {
11752
11755
  CONSUME(symbols_exports.LParen);
11753
11756
  const arg = SUBRULE(var_);
11754
11757
  const close = CONSUME(symbols_exports.RParen);
11755
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11758
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg], C.astFactory.sourceLocation(operator, close)));
11756
11759
  }
11757
11760
  };
11758
11761
  }
@@ -11766,11 +11769,11 @@ function funcExprOrNil1(func) {
11766
11769
  CONSUME(symbols_exports.LParen);
11767
11770
  const arg = SUBRULE(expression);
11768
11771
  const close = CONSUME(symbols_exports.RParen);
11769
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11772
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg], C.astFactory.sourceLocation(operator, close)));
11770
11773
  } },
11771
11774
  { ALT: () => {
11772
11775
  const nil2 = CONSUME(terminals_exports.nil);
11773
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
11776
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [], C.astFactory.sourceLocation(operator, nil2)));
11774
11777
  } }
11775
11778
  ]);
11776
11779
  }
@@ -11782,7 +11785,7 @@ function funcNil1(func) {
11782
11785
  impl: ({ ACTION, CONSUME }) => (C) => {
11783
11786
  const operator = CONSUME(func);
11784
11787
  const nil2 = CONSUME(terminals_exports.nil);
11785
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
11788
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [], C.astFactory.sourceLocation(operator, nil2)));
11786
11789
  }
11787
11790
  };
11788
11791
  }
@@ -11792,7 +11795,7 @@ function funcExprList1(func) {
11792
11795
  impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11793
11796
  const operator = CONSUME(func);
11794
11797
  const args = SUBRULE(expressionList);
11795
- return ACTION(() => C.factory.expressionOperation(operator.image, args.val, C.factory.sourceLocation(operator, args)));
11798
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, args.val, C.astFactory.sourceLocation(operator, args)));
11796
11799
  }
11797
11800
  };
11798
11801
  }
@@ -11810,7 +11813,7 @@ function funcExpr2or3(func) {
11810
11813
  return SUBRULE3(expression);
11811
11814
  });
11812
11815
  const close = CONSUME(symbols_exports.RParen);
11813
- return ACTION(() => C.factory.expressionOperation(operator.image, arg3 ? [arg1, arg2, arg3] : [arg1, arg2], C.factory.sourceLocation(operator, close)));
11816
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, arg3 ? [arg1, arg2, arg3] : [arg1, arg2], C.astFactory.sourceLocation(operator, close)));
11814
11817
  }
11815
11818
  };
11816
11819
  }
@@ -11830,7 +11833,7 @@ function funcExpr3or4(func) {
11830
11833
  return SUBRULE4(expression);
11831
11834
  });
11832
11835
  const close = CONSUME(symbols_exports.RParen);
11833
- return ACTION(() => C.factory.expressionOperation(operator.image, arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
11836
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3], C.astFactory.sourceLocation(operator, close)));
11834
11837
  }
11835
11838
  };
11836
11839
  }
@@ -11840,7 +11843,7 @@ function funcGroupGraphPattern(func) {
11840
11843
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11841
11844
  const operator = CONSUME(func);
11842
11845
  const group = SUBRULE(groupGraphPattern);
11843
- return ACTION(() => C.factory.expressionPatternOperation(operator.image, group, C.factory.sourceLocation(operator, group)));
11846
+ return ACTION(() => C.astFactory.expressionPatternOperation(operator.image, group, C.astFactory.sourceLocation(operator, group)));
11844
11847
  }
11845
11848
  };
11846
11849
  }
@@ -11853,7 +11856,7 @@ function baseAggregateFunc(func) {
11853
11856
  const distinct2 = OPTION(() => CONSUME(distinct));
11854
11857
  const expr1 = SUBRULE(expression);
11855
11858
  const close = CONSUME(symbols_exports.RParen);
11856
- return ACTION(() => C.factory.aggregate(operator.image, distinct2 !== void 0, expr1, void 0, C.factory.sourceLocation(operator, close)));
11859
+ return ACTION(() => C.astFactory.aggregate(operator.image, distinct2 !== void 0, expr1, void 0, C.astFactory.sourceLocation(operator, close)));
11857
11860
  }
11858
11861
  };
11859
11862
  }
@@ -11993,17 +11996,17 @@ var aggregateCount = {
11993
11996
  const expressionVal = OR([
11994
11997
  { ALT: () => {
11995
11998
  const starToken = CONSUME(symbols_exports.star);
11996
- return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));
11999
+ return ACTION(() => C.astFactory.wildcard(C.astFactory.sourceLocation(starToken)));
11997
12000
  } },
11998
12001
  { ALT: () => SUBRULE(expression) }
11999
12002
  ]);
12000
12003
  const closeToken = CONSUME(symbols_exports.RParen);
12001
12004
  return ACTION(() => {
12002
- const F2 = C.factory;
12003
- if (C.factory.isWildcard(expressionVal)) {
12004
- return F2.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.factory.sourceLocation(operatorToken, closeToken));
12005
+ const F2 = C.astFactory;
12006
+ if (C.astFactory.isWildcard(expressionVal)) {
12007
+ return F2.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.astFactory.sourceLocation(operatorToken, closeToken));
12005
12008
  }
12006
- return F2.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.factory.sourceLocation(operatorToken, closeToken));
12009
+ return F2.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.astFactory.sourceLocation(operatorToken, closeToken));
12007
12010
  });
12008
12011
  }
12009
12012
  };
@@ -12027,7 +12030,7 @@ var aggregateGroup_concat = {
12027
12030
  });
12028
12031
  const closeToken = CONSUME(symbols_exports.RParen);
12029
12032
  return ACTION(() => {
12030
- const F2 = C.factory;
12033
+ const F2 = C.astFactory;
12031
12034
  return F2.aggregate(operatorToken.image, Boolean(distinctToken), expr, sep?.value ?? " ", F2.sourceLocation(operatorToken, closeToken));
12032
12035
  });
12033
12036
  }
@@ -12057,7 +12060,7 @@ var aggregate = {
12057
12060
  });
12058
12061
  return result;
12059
12062
  },
12060
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12063
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12061
12064
  F2.printFilter(ast, () => {
12062
12065
  PRINT_WORD(ast.aggregation.toUpperCase(), "(");
12063
12066
  if (ast.distinct) {
@@ -12084,7 +12087,7 @@ var path = {
12084
12087
  };
12085
12088
  var pathGenerator = {
12086
12089
  name: "path",
12087
- gImpl: ({ PRINT, SUBRULE }) => (ast, { factory: F2 }, braces = true) => {
12090
+ gImpl: ({ PRINT, SUBRULE }) => (ast, { astFactory: F2 }, braces = true) => {
12088
12091
  if (F2.isTerm(ast) && F2.isTermNamed(ast)) {
12089
12092
  SUBRULE(iri2, ast);
12090
12093
  } else {
@@ -12133,7 +12136,7 @@ function pathChainHelper(name, SEP, subType, subRule) {
12133
12136
  tailEnd = SUBRULE2(subRule);
12134
12137
  tail.push(tailEnd);
12135
12138
  });
12136
- return ACTION(() => tail.length === 0 ? head2 : C.factory.path(subType, [head2, ...tail], C.factory.sourceLocation(head2, tailEnd)));
12139
+ return ACTION(() => tail.length === 0 ? head2 : C.astFactory.path(subType, [head2, ...tail], C.astFactory.sourceLocation(head2, tailEnd)));
12137
12140
  }
12138
12141
  };
12139
12142
  }
@@ -12144,7 +12147,7 @@ var pathEltOrInverse = {
12144
12147
  { ALT: () => {
12145
12148
  const hat2 = CONSUME(symbols_exports.hat);
12146
12149
  const item = SUBRULE2(pathElt);
12147
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12150
+ return ACTION(() => C.astFactory.path("^", [item], C.astFactory.sourceLocation(hat2, item)));
12148
12151
  } }
12149
12152
  ])
12150
12153
  };
@@ -12155,7 +12158,7 @@ var pathElt = {
12155
12158
  impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
12156
12159
  const item = SUBRULE(pathPrimary);
12157
12160
  const modification = OPTION(() => SUBRULE(pathMod));
12158
- return ACTION(() => modification === void 0 ? item : C.factory.path(modification.image, [item], C.factory.sourceLocation(item, modification)));
12161
+ return ACTION(() => modification === void 0 ? item : C.astFactory.path(modification.image, [item], C.astFactory.sourceLocation(item, modification)));
12159
12162
  }
12160
12163
  };
12161
12164
  var pathMod = {
@@ -12187,7 +12190,7 @@ var pathNegatedPropertySet = {
12187
12190
  return OR([
12188
12191
  { ALT: () => {
12189
12192
  const noAlternative = SUBRULE1(pathOneInPropertySet);
12190
- return ACTION(() => C.factory.path("!", [noAlternative], C.factory.sourceLocation(exclamation2, noAlternative)));
12193
+ return ACTION(() => C.astFactory.path("!", [noAlternative], C.astFactory.sourceLocation(exclamation2, noAlternative)));
12191
12194
  } },
12192
12195
  { ALT: () => {
12193
12196
  const open = CONSUME(symbols_exports.LParen);
@@ -12200,7 +12203,7 @@ var pathNegatedPropertySet = {
12200
12203
  });
12201
12204
  const close = CONSUME(symbols_exports.RParen);
12202
12205
  return ACTION(() => {
12203
- const F2 = C.factory;
12206
+ const F2 = C.astFactory;
12204
12207
  if (tail.length === 0) {
12205
12208
  return F2.path("!", [head2], F2.sourceLocation(exclamation2, close));
12206
12209
  }
@@ -12221,7 +12224,7 @@ var pathOneInPropertySet = {
12221
12224
  { ALT: () => SUBRULE2(iri2) },
12222
12225
  { ALT: () => SUBRULE2(verbA) }
12223
12226
  ]);
12224
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12227
+ return ACTION(() => C.astFactory.path("^", [item], C.astFactory.sourceLocation(hat2, item)));
12225
12228
  } }
12226
12229
  ])
12227
12230
  };
@@ -12246,33 +12249,35 @@ function triplesDotSeperated(triplesSameSubjectSubrule) {
12246
12249
  });
12247
12250
  }
12248
12251
  });
12249
- return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));
12252
+ return ACTION(() => C.astFactory.patternBgp(triples, C.astFactory.sourceLocation(...triples, dotToken)));
12250
12253
  };
12251
12254
  }
12252
12255
  var triplesBlock = {
12253
12256
  name: "triplesBlock",
12254
12257
  impl: (implArgs) => (C) => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C),
12255
- gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F2 }) => {
12258
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { astFactory: F2 }) => {
12256
12259
  for (const [index, triple] of ast.triples.entries()) {
12257
12260
  HANDLE_LOC(triple, () => {
12258
12261
  const nextTriple = ast.triples.at(index);
12259
12262
  if (F2.isTripleCollection(triple)) {
12260
12263
  SUBRULE(graphNodePath, triple);
12261
- F2.printFilter(triple, () => PRINT_WORD("."));
12264
+ F2.printFilter(triple, () => PRINT_WORD(".\n"));
12262
12265
  } else {
12263
12266
  SUBRULE(graphNodePath, triple.subject);
12267
+ F2.printFilter(triple, () => PRINT_WORD(""));
12264
12268
  if (F2.isTerm(triple.predicate) && F2.isTermVariable(triple.predicate)) {
12265
12269
  SUBRULE(varOrTerm, triple.predicate);
12266
12270
  } else {
12267
12271
  SUBRULE(pathGenerator, triple.predicate, void 0);
12268
12272
  }
12273
+ F2.printFilter(triple, () => PRINT_WORD(""));
12269
12274
  SUBRULE(graphNodePath, triple.object);
12270
12275
  if (nextTriple === void 0 || F2.isTripleCollection(nextTriple) || !F2.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
12271
- F2.printFilter(ast, () => PRINT_WORD("."));
12276
+ F2.printFilter(ast, () => PRINT_WORD(".\n"));
12272
12277
  } else if (F2.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
12273
12278
  F2.printFilter(ast, () => PRINT_WORD(","));
12274
12279
  } else {
12275
- F2.printFilter(ast, () => PRINT_WORD(";"));
12280
+ F2.printFilter(ast, () => PRINT_WORD(";\n"));
12276
12281
  }
12277
12282
  }
12278
12283
  });
@@ -12285,24 +12290,24 @@ function triplesSameSubjectImpl(name, allowPaths) {
12285
12290
  impl: ({ ACTION, SUBRULE, OR }) => (C) => OR([
12286
12291
  { ALT: () => {
12287
12292
  const subject = SUBRULE(varOrTerm);
12288
- const res = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, ACTION(() => C.factory.dematerialized(subject)));
12293
+ const res = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, ACTION(() => C.astFactory.dematerialized(subject)));
12289
12294
  return ACTION(() => {
12290
12295
  if (res.length > 0) {
12291
12296
  res[0].subject = subject;
12292
- res[0].loc = C.factory.sourceLocation(subject, res[0]);
12297
+ res[0].loc = C.astFactory.sourceLocation(subject, res[0]);
12293
12298
  }
12294
12299
  return res;
12295
12300
  });
12296
12301
  } },
12297
12302
  { ALT: () => {
12298
12303
  const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);
12299
- const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, ACTION(() => C.factory.graphNodeIdentifier(subjectNode)));
12304
+ const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, ACTION(() => C.astFactory.graphNodeIdentifier(subjectNode)));
12300
12305
  return ACTION(() => {
12301
12306
  if (restNode.length === 0) {
12302
12307
  return [subjectNode];
12303
12308
  }
12304
12309
  restNode[0].subject = subjectNode;
12305
- restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);
12310
+ restNode[0].loc = C.astFactory.sourceLocation(subjectNode, restNode[0]);
12306
12311
  return restNode;
12307
12312
  });
12308
12313
  } }
@@ -12386,7 +12391,7 @@ function objectImpl(name, allowPaths) {
12386
12391
  name,
12387
12392
  impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {
12388
12393
  const node = SUBRULE(allowPaths ? graphNodePath : graphNode);
12389
- return ACTION(() => C.factory.triple(subject, predicate, node));
12394
+ return ACTION(() => C.astFactory.triple(subject, predicate, node));
12390
12395
  }
12391
12396
  };
12392
12397
  }
@@ -12403,7 +12408,7 @@ function collectionImpl(name, allowPaths) {
12403
12408
  });
12404
12409
  const endToken = CONSUME(symbols_exports.RParen);
12405
12410
  return ACTION(() => {
12406
- const F2 = C.factory;
12411
+ const F2 = C.astFactory;
12407
12412
  const triples = [];
12408
12413
  const predFirst = F2.namedNode(F2.sourceLocationNoMaterialize(), CommonIRIs.FIRST, void 0);
12409
12414
  const predRest = F2.namedNode(F2.sourceLocationNoMaterialize(), CommonIRIs.REST, void 0);
@@ -12427,7 +12432,7 @@ function collectionImpl(name, allowPaths) {
12427
12432
  return F2.tripleCollectionList(listHead, triples, F2.sourceLocation(startToken, endToken));
12428
12433
  });
12429
12434
  },
12430
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12435
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12431
12436
  F2.printFilter(ast, () => PRINT_WORD("("));
12432
12437
  for (const [idx, triple] of ast.triples.entries()) {
12433
12438
  if (idx % 2 === 0) {
@@ -12458,13 +12463,17 @@ function blankNodePropertyListImpl(name, allowPaths) {
12458
12463
  name,
12459
12464
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12460
12465
  const startToken = CONSUME(symbols_exports.LSquare);
12461
- const blankNode2 = ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocationNoMaterialize()));
12466
+ const blankNode2 = ACTION(() => C.astFactory.blankNode(void 0, C.astFactory.sourceLocationNoMaterialize()));
12462
12467
  const propList = SUBRULE(propertyPathNotEmptyImpl, blankNode2);
12463
12468
  const endToken = CONSUME(symbols_exports.RSquare);
12464
- return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(blankNode2, propList, C.factory.sourceLocation(startToken, endToken)));
12469
+ return ACTION(() => C.astFactory.tripleCollectionBlankNodeProperties(blankNode2, propList, C.astFactory.sourceLocation(startToken, endToken)));
12465
12470
  },
12466
- gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F2 }) => {
12467
- F2.printFilter(ast, () => PRINT("["));
12471
+ gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC, PRINT_ON_EMPTY }) => (ast, c) => {
12472
+ const { astFactory: F2, indentInc } = c;
12473
+ F2.printFilter(ast, () => {
12474
+ c[traqulaIndentation] += indentInc;
12475
+ PRINT("[\n");
12476
+ });
12468
12477
  for (const triple of ast.triples) {
12469
12478
  HANDLE_LOC(triple, () => {
12470
12479
  if (F2.isTerm(triple.predicate) && F2.isTermVariable(triple.predicate)) {
@@ -12472,11 +12481,15 @@ function blankNodePropertyListImpl(name, allowPaths) {
12472
12481
  } else {
12473
12482
  SUBRULE(pathGenerator, triple.predicate, void 0);
12474
12483
  }
12484
+ F2.printFilter(triple, () => PRINT_WORD(""));
12475
12485
  SUBRULE(graphNodePath, triple.object);
12476
- F2.printFilter(ast, () => PRINT_WORD(";"));
12486
+ F2.printFilter(ast, () => PRINT_WORD(";\n"));
12477
12487
  });
12478
12488
  }
12479
- F2.printFilter(ast, () => PRINT("]"));
12489
+ F2.printFilter(ast, () => {
12490
+ c[traqulaIndentation] -= indentInc;
12491
+ PRINT_ON_EMPTY("]");
12492
+ });
12480
12493
  }
12481
12494
  };
12482
12495
  }
@@ -12493,7 +12506,7 @@ function graphNodeImpl(name, allowPaths) {
12493
12506
  ALT: () => SUBRULE(triplesNodeRule)
12494
12507
  }
12495
12508
  ]),
12496
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12509
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => {
12497
12510
  if (F2.isTerm(ast)) {
12498
12511
  SUBRULE(varOrTerm, ast);
12499
12512
  } else {
@@ -12511,9 +12524,9 @@ var whereClause = {
12511
12524
  impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
12512
12525
  const where2 = OPTION(() => CONSUME(where));
12513
12526
  const group = SUBRULE(groupGraphPattern);
12514
- return ACTION(() => C.factory.wrap(group, C.factory.sourceLocation(where2, group)));
12527
+ return ACTION(() => C.astFactory.wrap(group, C.astFactory.sourceLocation(where2, group)));
12515
12528
  },
12516
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12529
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12517
12530
  F2.printFilter(ast, () => PRINT_WORD("WHERE"));
12518
12531
  SUBRULE(groupGraphPattern, ast.val);
12519
12532
  }
@@ -12527,19 +12540,26 @@ var groupGraphPattern = {
12527
12540
  { ALT: () => SUBRULE(groupGraphPatternSub) }
12528
12541
  ]);
12529
12542
  const close = CONSUME(symbols_exports.RCurly);
12530
- return ACTION(() => C.factory.patternGroup(patterns, C.factory.sourceLocation(open, close)));
12543
+ return ACTION(() => C.astFactory.patternGroup(patterns, C.astFactory.sourceLocation(open, close)));
12531
12544
  },
12532
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12533
- F2.printFilter(ast, () => PRINT_WORD("{"));
12545
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
12546
+ const { astFactory: F2, indentInc } = C;
12547
+ F2.printFilter(ast, () => {
12548
+ C[traqulaIndentation] += indentInc;
12549
+ PRINT_WORD("{\n");
12550
+ });
12534
12551
  for (const pattern of ast.patterns) {
12535
12552
  SUBRULE(generatePattern, pattern);
12536
12553
  }
12537
- F2.printFilter(ast, () => PRINT_WORD("}"));
12554
+ F2.printFilter(ast, () => {
12555
+ C[traqulaIndentation] -= indentInc;
12556
+ PRINT_ON_EMPTY("}\n");
12557
+ });
12538
12558
  }
12539
12559
  };
12540
12560
  var generatePattern = {
12541
12561
  name: "generatePattern",
12542
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12562
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => {
12543
12563
  if (ast.type === "query") {
12544
12564
  SUBRULE(query, F2.querySelect({
12545
12565
  context: [],
@@ -12628,9 +12648,9 @@ var optionalGraphPattern = {
12628
12648
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12629
12649
  const optional2 = CONSUME(optional);
12630
12650
  const group = SUBRULE(groupGraphPattern);
12631
- return ACTION(() => C.factory.patternOptional(group.patterns, C.factory.sourceLocation(optional2, group)));
12651
+ return ACTION(() => C.astFactory.patternOptional(group.patterns, C.astFactory.sourceLocation(optional2, group)));
12632
12652
  },
12633
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12653
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12634
12654
  F2.printFilter(ast, () => PRINT_WORD("OPTIONAL"));
12635
12655
  SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
12636
12656
  }
@@ -12641,9 +12661,9 @@ var graphGraphPattern = {
12641
12661
  const graph2 = CONSUME(graph_exports.graph);
12642
12662
  const name = SUBRULE(varOrIri);
12643
12663
  const group = SUBRULE(groupGraphPattern);
12644
- return ACTION(() => C.factory.patternGraph(name, group.patterns, C.factory.sourceLocation(graph2, group)));
12664
+ return ACTION(() => C.astFactory.patternGraph(name, group.patterns, C.astFactory.sourceLocation(graph2, group)));
12645
12665
  },
12646
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12666
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12647
12667
  F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
12648
12668
  SUBRULE(varOrTerm, ast.name);
12649
12669
  SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
@@ -12659,9 +12679,9 @@ var serviceGraphPattern = {
12659
12679
  }) ?? false;
12660
12680
  const name = SUBRULE1(varOrIri);
12661
12681
  const group = SUBRULE1(groupGraphPattern);
12662
- return ACTION(() => C.factory.patternService(name, group.patterns, silent2, C.factory.sourceLocation(service2, group)));
12682
+ return ACTION(() => C.astFactory.patternService(name, group.patterns, silent2, C.astFactory.sourceLocation(service2, group)));
12663
12683
  },
12664
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12684
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12665
12685
  F2.printFilter(ast, () => {
12666
12686
  PRINT_WORD("SERVICE");
12667
12687
  if (ast.silent) {
@@ -12681,14 +12701,14 @@ var bind2 = {
12681
12701
  CONSUME(as);
12682
12702
  const variable = SUBRULE(var_);
12683
12703
  const close = CONSUME(symbols_exports.RParen);
12684
- return ACTION(() => C.factory.patternBind(expressionVal, variable, C.factory.sourceLocation(bind3, close)));
12704
+ return ACTION(() => C.astFactory.patternBind(expressionVal, variable, C.astFactory.sourceLocation(bind3, close)));
12685
12705
  },
12686
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12706
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12687
12707
  F2.printFilter(ast, () => PRINT_WORD("BIND", "("));
12688
12708
  SUBRULE(expression, ast.expression);
12689
12709
  F2.printFilter(ast, () => PRINT_WORD("AS"));
12690
12710
  SUBRULE(var_, ast.variable);
12691
- F2.printFilter(ast, () => PRINT_WORD(")"));
12711
+ F2.printFilter(ast, () => PRINT_WORD(")\n"));
12692
12712
  }
12693
12713
  };
12694
12714
  var inlineData = {
@@ -12696,16 +12716,19 @@ var inlineData = {
12696
12716
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12697
12717
  const values3 = CONSUME(values2);
12698
12718
  const datablock = SUBRULE(dataBlock);
12699
- return ACTION(() => C.factory.patternValues(datablock.val, C.factory.sourceLocation(values3, datablock)));
12719
+ return ACTION(() => C.astFactory.patternValues(datablock.val, C.astFactory.sourceLocation(values3, datablock)));
12700
12720
  },
12701
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12721
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
12722
+ const { astFactory: F2, indentInc } = C;
12702
12723
  const variables = Object.keys(ast.values.at(0) ?? {});
12703
12724
  F2.printFilter(ast, () => {
12725
+ PRINT_ON_EMPTY("");
12704
12726
  PRINT_WORD("VALUES", "(");
12705
12727
  for (const variable of variables) {
12706
12728
  PRINT_WORD(`?${variable}`);
12707
12729
  }
12708
- PRINT_WORD(")", "{");
12730
+ C[traqulaIndentation] += indentInc;
12731
+ PRINT_WORD(")", "{\n");
12709
12732
  });
12710
12733
  for (const mapping of ast.values) {
12711
12734
  F2.printFilter(ast, () => PRINT_WORD("("));
@@ -12716,9 +12739,12 @@ var inlineData = {
12716
12739
  SUBRULE(graphNodePath, mapping[variable]);
12717
12740
  }
12718
12741
  }
12719
- F2.printFilter(ast, () => PRINT_WORD(")"));
12742
+ F2.printFilter(ast, () => PRINT_WORD(")\n"));
12720
12743
  }
12721
- F2.printFilter(ast, () => PRINT_WORD("}"));
12744
+ F2.printFilter(ast, () => {
12745
+ C[traqulaIndentation] -= indentInc;
12746
+ PRINT_ON_EMPTY("}\n");
12747
+ });
12722
12748
  }
12723
12749
  };
12724
12750
  var dataBlock = {
@@ -12741,7 +12767,7 @@ var inlineDataOneVar = {
12741
12767
  });
12742
12768
  });
12743
12769
  const close = CONSUME(symbols_exports.RCurly);
12744
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(varVal, close)));
12770
+ return ACTION(() => C.astFactory.wrap(res, C.astFactory.sourceLocation(varVal, close)));
12745
12771
  }
12746
12772
  };
12747
12773
  var inlineDataFull = {
@@ -12758,7 +12784,7 @@ var inlineDataFull = {
12758
12784
  res.push({});
12759
12785
  });
12760
12786
  const close = CONSUME1(symbols_exports.RCurly);
12761
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(nil2, close)));
12787
+ return ACTION(() => C.astFactory.wrap(res, C.astFactory.sourceLocation(nil2, close)));
12762
12788
  } },
12763
12789
  { ALT: () => {
12764
12790
  const open = CONSUME1(symbols_exports.LParen);
@@ -12790,7 +12816,7 @@ var inlineDataFull = {
12790
12816
  });
12791
12817
  });
12792
12818
  const close = CONSUME2(symbols_exports.RCurly);
12793
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(open, close)));
12819
+ return ACTION(() => C.astFactory.wrap(res, C.astFactory.sourceLocation(open, close)));
12794
12820
  } }
12795
12821
  ]);
12796
12822
  }
@@ -12813,9 +12839,9 @@ var minusGraphPattern = {
12813
12839
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12814
12840
  const minus2 = CONSUME(minus);
12815
12841
  const group = SUBRULE(groupGraphPattern);
12816
- return ACTION(() => C.factory.patternMinus(group.patterns, C.factory.sourceLocation(minus2, group)));
12842
+ return ACTION(() => C.astFactory.patternMinus(group.patterns, C.astFactory.sourceLocation(minus2, group)));
12817
12843
  },
12818
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12844
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12819
12845
  F2.printFilter(ast, () => PRINT_WORD("MINUS"));
12820
12846
  SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
12821
12847
  }
@@ -12831,9 +12857,9 @@ var groupOrUnionGraphPattern = {
12831
12857
  const group2 = SUBRULE2(groupGraphPattern);
12832
12858
  groups.push(group2);
12833
12859
  });
12834
- return ACTION(() => groups.length === 1 ? groups[0] : C.factory.patternUnion(groups, C.factory.sourceLocation(group, groups.at(-1))));
12860
+ return ACTION(() => groups.length === 1 ? groups[0] : C.astFactory.patternUnion(groups, C.astFactory.sourceLocation(group, groups.at(-1))));
12835
12861
  },
12836
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12862
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12837
12863
  if (F2.isPatternUnion(ast)) {
12838
12864
  const [head2, ...tail] = ast.patterns;
12839
12865
  SUBRULE(groupGraphPattern, head2);
@@ -12851,12 +12877,12 @@ var filter3 = {
12851
12877
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12852
12878
  const filterToken = CONSUME(filter2);
12853
12879
  const expression2 = SUBRULE(constraint);
12854
- return ACTION(() => C.factory.patternFilter(expression2, C.factory.sourceLocation(filterToken, expression2)));
12880
+ return ACTION(() => C.astFactory.patternFilter(expression2, C.astFactory.sourceLocation(filterToken, expression2)));
12855
12881
  },
12856
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12882
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12857
12883
  F2.printFilter(ast, () => PRINT_WORD("FILTER ("));
12858
12884
  SUBRULE(expression, ast.expression);
12859
- F2.printFilter(ast, () => PRINT_WORD(")"));
12885
+ F2.printFilter(ast, () => PRINT_WORD(")\n"));
12860
12886
  }
12861
12887
  };
12862
12888
  var constraint = {
@@ -12872,7 +12898,7 @@ var functionCall = {
12872
12898
  impl: ({ ACTION, SUBRULE }) => (C) => {
12873
12899
  const func = SUBRULE(iri2);
12874
12900
  const args = SUBRULE(argList);
12875
- return ACTION(() => C.factory.expressionFunctionCall(func, args.val.args, args.val.distinct, C.factory.sourceLocation(func, args)));
12901
+ return ACTION(() => C.astFactory.expressionFunctionCall(func, args.val.args, args.val.distinct, C.astFactory.sourceLocation(func, args)));
12876
12902
  }
12877
12903
  };
12878
12904
 
@@ -12882,7 +12908,7 @@ var argList = {
12882
12908
  impl: ({ ACTION, CONSUME, SUBRULE1, OPTION, OR, AT_LEAST_ONE_SEP }) => (C) => OR([
12883
12909
  { ALT: () => {
12884
12910
  const nil2 = CONSUME(terminals_exports.nil);
12885
- return ACTION(() => C.factory.wrap({ args: [], distinct: false }, C.factory.sourceLocation(nil2)));
12911
+ return ACTION(() => C.astFactory.wrap({ args: [], distinct: false }, C.astFactory.sourceLocation(nil2)));
12886
12912
  } },
12887
12913
  { ALT: () => {
12888
12914
  const args = [];
@@ -12899,10 +12925,10 @@ var argList = {
12899
12925
  }
12900
12926
  });
12901
12927
  const close = CONSUME(symbols_exports.RParen);
12902
- return ACTION(() => C.factory.wrap({ args, distinct: distinct2 }, C.factory.sourceLocation(open, close)));
12928
+ return ACTION(() => C.astFactory.wrap({ args, distinct: distinct2 }, C.astFactory.sourceLocation(open, close)));
12903
12929
  } }
12904
12930
  ]),
12905
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12931
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12906
12932
  F2.printFilter(ast, () => {
12907
12933
  PRINT_WORD("(");
12908
12934
  if (ast.val.distinct) {
@@ -12925,7 +12951,7 @@ var expressionList = {
12925
12951
  impl: ({ ACTION, CONSUME, MANY, OR, SUBRULE1, SUBRULE2 }) => (C) => OR([
12926
12952
  { ALT: () => {
12927
12953
  const nil2 = CONSUME(terminals_exports.nil);
12928
- return ACTION(() => C.factory.wrap([], C.factory.sourceLocation(nil2)));
12954
+ return ACTION(() => C.astFactory.wrap([], C.astFactory.sourceLocation(nil2)));
12929
12955
  } },
12930
12956
  { ALT: () => {
12931
12957
  const open = CONSUME(symbols_exports.LParen);
@@ -12937,7 +12963,7 @@ var expressionList = {
12937
12963
  args.push(expr);
12938
12964
  });
12939
12965
  const close = CONSUME(symbols_exports.RParen);
12940
- return ACTION(() => C.factory.wrap(args, C.factory.sourceLocation(open, close)));
12966
+ return ACTION(() => C.astFactory.wrap(args, C.astFactory.sourceLocation(open, close)));
12941
12967
  } }
12942
12968
  ])
12943
12969
  };
@@ -12946,7 +12972,7 @@ var prefixOperator = /* @__PURE__ */ new Set(["!", "UPLUS", "UMINUS"]);
12946
12972
  var expression = {
12947
12973
  name: "expression",
12948
12974
  impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression),
12949
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12975
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
12950
12976
  if (F2.isTerm(ast)) {
12951
12977
  SUBRULE(varOrTerm, ast);
12952
12978
  } else if (F2.isExpressionOperator(ast)) {
@@ -13011,7 +13037,7 @@ var conditionalOrExpression = {
13011
13037
  impl: ({ ACTION, MANY, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => constructLeftDeep(() => SUBRULE1(conditionalAndExpression), () => {
13012
13038
  CONSUME(symbols_exports.logicOr);
13013
13039
  const args = SUBRULE2(conditionalAndExpression);
13014
- return (left) => ACTION(() => C.factory.expressionOperation("||", [left, args], C.factory.sourceLocation(left, args)));
13040
+ return (left) => ACTION(() => C.astFactory.expressionOperation("||", [left, args], C.astFactory.sourceLocation(left, args)));
13015
13041
  }, ACTION, MANY)
13016
13042
  };
13017
13043
  var conditionalAndExpression = {
@@ -13019,7 +13045,7 @@ var conditionalAndExpression = {
13019
13045
  impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => constructLeftDeep(() => SUBRULE1(valueLogical), () => {
13020
13046
  CONSUME(symbols_exports.logicAnd);
13021
13047
  const arg = SUBRULE2(valueLogical);
13022
- return (left) => ACTION(() => C.factory.expressionOperation("&&", [left, arg], C.factory.sourceLocation(left, arg)));
13048
+ return (left) => ACTION(() => C.astFactory.expressionOperation("&&", [left, arg], C.astFactory.sourceLocation(left, arg)));
13023
13049
  }, ACTION, MANY)
13024
13050
  };
13025
13051
  var valueLogical = {
@@ -13041,7 +13067,7 @@ var relationalExpression = {
13041
13067
  { ALT: () => CONSUME(symbols_exports.greaterThanEqual) }
13042
13068
  ]);
13043
13069
  const expr = SUBRULE2(numericExpression);
13044
- return ACTION(() => C.factory.expressionOperation(operator.image, [args1, expr], C.factory.sourceLocation(args1, expr)));
13070
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [args1, expr], C.astFactory.sourceLocation(args1, expr)));
13045
13071
  } },
13046
13072
  { ALT: () => {
13047
13073
  const operator = OR3([
@@ -13049,7 +13075,7 @@ var relationalExpression = {
13049
13075
  { ALT: () => CONSUME(notIn) }
13050
13076
  ]);
13051
13077
  const args = SUBRULE1(expressionList);
13052
- return ACTION(() => C.factory.expressionOperation(operator.image, [args1, ...args.val], C.factory.sourceLocation(args1, args)));
13078
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [args1, ...args.val], C.astFactory.sourceLocation(args1, args)));
13053
13079
  } }
13054
13080
  ]));
13055
13081
  return expression2 ?? args1;
@@ -13068,7 +13094,7 @@ var additiveExpression = {
13068
13094
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13069
13095
  ]);
13070
13096
  const arg = SUBRULE2(multiplicativeExpression);
13071
- return ACTION(() => (left) => C.factory.expressionOperation(operator.image, [left, arg], C.factory.sourceLocation(left, arg)));
13097
+ return ACTION(() => (left) => C.astFactory.expressionOperation(operator.image, [left, arg], C.astFactory.sourceLocation(left, arg)));
13072
13098
  } },
13073
13099
  { ALT: () => {
13074
13100
  const { operator, startInt } = OR3([
@@ -13099,9 +13125,9 @@ var additiveExpression = {
13099
13125
  { ALT: () => CONSUME(symbols_exports.slash) }
13100
13126
  ]);
13101
13127
  const innerExpr = SUBRULE1(unaryExpression);
13102
- return ACTION(() => (leftInner) => C.factory.expressionOperation(innerOperator.image, [leftInner, innerExpr], C.factory.sourceLocation(leftInner, innerExpr)));
13128
+ return ACTION(() => (leftInner) => C.astFactory.expressionOperation(innerOperator.image, [leftInner, innerExpr], C.astFactory.sourceLocation(leftInner, innerExpr)));
13103
13129
  }, ACTION, MANY2);
13104
- return (left) => C.factory.expressionOperation(operator, [left, multiplicativeExpr], C.factory.sourceLocation(left, multiplicativeExpr));
13130
+ return (left) => C.astFactory.expressionOperation(operator, [left, multiplicativeExpr], C.astFactory.sourceLocation(left, multiplicativeExpr));
13105
13131
  } }
13106
13132
  ]), ACTION, MANY1)
13107
13133
  };
@@ -13118,7 +13144,7 @@ var multiplicativeExpression = {
13118
13144
  subType: "operation",
13119
13145
  operator: operator.image,
13120
13146
  args: [left, expr],
13121
- loc: C.factory.sourceLocation(left, expr)
13147
+ loc: C.astFactory.sourceLocation(left, expr)
13122
13148
  });
13123
13149
  }, ACTION, MANY)
13124
13150
  };
@@ -13133,7 +13159,7 @@ var unaryExpression = {
13133
13159
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13134
13160
  ]);
13135
13161
  const expr = SUBRULE2(primaryExpression);
13136
- return ACTION(() => C.factory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.factory.sourceLocation(operator, expr)));
13162
+ return ACTION(() => C.astFactory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.astFactory.sourceLocation(operator, expr)));
13137
13163
  } }
13138
13164
  ])
13139
13165
  };
@@ -13156,7 +13182,7 @@ var brackettedExpression = {
13156
13182
  const expr = SUBRULE(expression);
13157
13183
  const close = CONSUME(symbols_exports.RParen);
13158
13184
  return ACTION(() => {
13159
- expr.loc = C.factory.sourceLocation(open, close);
13185
+ expr.loc = C.astFactory.sourceLocation(open, close);
13160
13186
  return expr;
13161
13187
  });
13162
13188
  }
@@ -13178,13 +13204,13 @@ var iriOrFunction = {
13178
13204
  function: iriVal,
13179
13205
  args: args.val.args,
13180
13206
  distinct: distinct2,
13181
- loc: C.factory.sourceLocation(iriVal, args)
13207
+ loc: C.astFactory.sourceLocation(iriVal, args)
13182
13208
  };
13183
13209
  });
13184
13210
  });
13185
13211
  return functionCall2 ?? iriVal;
13186
13212
  },
13187
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
13213
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => {
13188
13214
  if (F2.isTermNamed(ast)) {
13189
13215
  SUBRULE(iri2, ast);
13190
13216
  } else {
@@ -13237,11 +13263,14 @@ var groupClause = {
13237
13263
  type: "solutionModifier",
13238
13264
  subType: "group",
13239
13265
  groupings,
13240
- loc: C.factory.sourceLocation(start, groupings.at(-1))
13266
+ loc: C.astFactory.sourceLocation(start, groupings.at(-1))
13241
13267
  }));
13242
13268
  },
13243
- gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F2 }) => {
13244
- F2.printFilter(ast, () => PRINT_WORDS("GROUP", "BY"));
13269
+ gImpl: ({ PRINT_WORDS, SUBRULE, PRINT_ON_EMPTY }) => (ast, { astFactory: F2 }) => {
13270
+ F2.printFilter(ast, () => {
13271
+ PRINT_ON_EMPTY("");
13272
+ PRINT_WORDS("GROUP", "BY");
13273
+ });
13245
13274
  for (const grouping of ast.groupings) {
13246
13275
  if (F2.isExpression(grouping)) {
13247
13276
  SUBRULE(expression, grouping);
@@ -13275,7 +13304,7 @@ var groupCondition = {
13275
13304
  return {
13276
13305
  variable,
13277
13306
  value: expressionValue,
13278
- loc: C.factory.sourceLocation(open, close)
13307
+ loc: C.astFactory.sourceLocation(open, close)
13279
13308
  };
13280
13309
  }
13281
13310
  return expressionValue;
@@ -13294,10 +13323,13 @@ var havingClause = {
13294
13323
  expressions.push(SUBRULE(havingCondition));
13295
13324
  });
13296
13325
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13297
- return ACTION(() => C.factory.solutionModifierHaving(expressions, C.factory.sourceLocation(having2, expressions.at(-1))));
13326
+ return ACTION(() => C.astFactory.solutionModifierHaving(expressions, C.astFactory.sourceLocation(having2, expressions.at(-1))));
13298
13327
  },
13299
- gImpl: ({ PRINT_WORD, SUBRULE }) => (ast, { factory: F2 }) => {
13300
- F2.printFilter(ast, () => PRINT_WORD("HAVING"));
13328
+ gImpl: ({ PRINT_WORD, PRINT_ON_EMPTY, SUBRULE }) => (ast, { astFactory: F2 }) => {
13329
+ F2.printFilter(ast, () => {
13330
+ PRINT_ON_EMPTY("");
13331
+ PRINT_WORD("HAVING");
13332
+ });
13301
13333
  for (const having2 of ast.having) {
13302
13334
  SUBRULE(expression, having2);
13303
13335
  }
@@ -13318,10 +13350,13 @@ var orderClause = {
13318
13350
  orderings.push(SUBRULE1(orderCondition));
13319
13351
  });
13320
13352
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13321
- return ACTION(() => C.factory.solutionModifierOrder(orderings, C.factory.sourceLocation(order2, orderings.at(-1))));
13353
+ return ACTION(() => C.astFactory.solutionModifierOrder(orderings, C.astFactory.sourceLocation(order2, orderings.at(-1))));
13322
13354
  },
13323
- gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F2 }) => {
13324
- F2.printFilter(ast, () => PRINT_WORDS("ORDER", "BY"));
13355
+ gImpl: ({ PRINT_WORDS, PRINT_ON_EMPTY, SUBRULE }) => (ast, { astFactory: F2 }) => {
13356
+ F2.printFilter(ast, () => {
13357
+ PRINT_ON_EMPTY("");
13358
+ PRINT_WORDS("ORDER", "BY");
13359
+ });
13325
13360
  for (const ordering of ast.orderDefs) {
13326
13361
  if (ordering.descending) {
13327
13362
  F2.printFilter(ast, () => PRINT_WORDS("DESC"));
@@ -13352,7 +13387,7 @@ var orderCondition = {
13352
13387
  return ACTION(() => ({
13353
13388
  expression: expr,
13354
13389
  descending: descending[0],
13355
- loc: C.factory.sourceLocation(descending[1], expr)
13390
+ loc: C.astFactory.sourceLocation(descending[1], expr)
13356
13391
  }));
13357
13392
  } },
13358
13393
  { ALT: () => {
@@ -13371,16 +13406,17 @@ var limitOffsetClauses = {
13371
13406
  { ALT: () => {
13372
13407
  const limit2 = SUBRULE1(limitClause);
13373
13408
  const offset2 = OPTION1(() => SUBRULE1(offsetClause));
13374
- return ACTION(() => C.factory.solutionModifierLimitOffset(limit2.val, offset2?.val, C.factory.sourceLocation(limit2, ...offset2 ? [offset2] : [])));
13409
+ return ACTION(() => C.astFactory.solutionModifierLimitOffset(limit2.val, offset2?.val, C.astFactory.sourceLocation(limit2, ...offset2 ? [offset2] : [])));
13375
13410
  } },
13376
13411
  { ALT: () => {
13377
13412
  const offset2 = SUBRULE2(offsetClause);
13378
13413
  const limit2 = OPTION2(() => SUBRULE2(limitClause));
13379
- return ACTION(() => C.factory.solutionModifierLimitOffset(limit2?.val, offset2.val, C.factory.sourceLocation(offset2, limit2)));
13414
+ return ACTION(() => C.astFactory.solutionModifierLimitOffset(limit2?.val, offset2.val, C.astFactory.sourceLocation(offset2, limit2)));
13380
13415
  } }
13381
13416
  ]),
13382
- gImpl: ({ PRINT_WORDS }) => (ast, { factory: F2 }) => {
13417
+ gImpl: ({ PRINT_WORDS, PRINT_ON_EMPTY }) => (ast, { astFactory: F2 }) => {
13383
13418
  F2.printFilter(ast, () => {
13419
+ PRINT_ON_EMPTY("");
13384
13420
  if (ast.limit) {
13385
13421
  PRINT_WORDS("LIMIT", String(ast.limit));
13386
13422
  }
@@ -13396,7 +13432,7 @@ var limitClause = {
13396
13432
  const offset2 = CONSUME(limit);
13397
13433
  const value = CONSUME(terminals_exports.integer);
13398
13434
  const val = Number.parseInt(value.image, 10);
13399
- return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset2, value)));
13435
+ return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(offset2, value)));
13400
13436
  }
13401
13437
  };
13402
13438
  var offsetClause = {
@@ -13405,7 +13441,7 @@ var offsetClause = {
13405
13441
  const offset2 = CONSUME(offset);
13406
13442
  const value = CONSUME(terminals_exports.integer);
13407
13443
  const val = Number.parseInt(value.image, 10);
13408
- return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset2, value)));
13444
+ return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(offset2, value)));
13409
13445
  }
13410
13446
  };
13411
13447
 
@@ -13430,10 +13466,10 @@ var query = {
13430
13466
  ...subType,
13431
13467
  type: "query",
13432
13468
  ...values3 && { values: values3 },
13433
- loc: C.factory.sourceLocation(prologueValues.at(0), subType, values3)
13469
+ loc: C.astFactory.sourceLocation(prologueValues.at(0), subType, values3)
13434
13470
  }));
13435
13471
  },
13436
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
13472
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => {
13437
13473
  SUBRULE(prologue, ast.context);
13438
13474
  if (F2.isQuerySelect(ast)) {
13439
13475
  SUBRULE(selectQuery, ast);
@@ -13463,13 +13499,13 @@ var selectQuery = {
13463
13499
  solutionModifiers: modifiers,
13464
13500
  datasets: from2,
13465
13501
  ...selectVal.val,
13466
- loc: C.factory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13502
+ loc: C.astFactory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13467
13503
  };
13468
13504
  queryIsGood(ret);
13469
13505
  return ret;
13470
13506
  });
13471
13507
  },
13472
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
13508
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => {
13473
13509
  SUBRULE(selectClause, F2.wrap({
13474
13510
  variables: ast.variables,
13475
13511
  distinct: ast.distinct,
@@ -13487,14 +13523,14 @@ var subSelect = {
13487
13523
  const where2 = SUBRULE(whereClause);
13488
13524
  const modifiers = SUBRULE(solutionModifier);
13489
13525
  const values3 = SUBRULE(valuesClause);
13490
- return ACTION(() => C.factory.querySelect({
13526
+ return ACTION(() => C.astFactory.querySelect({
13491
13527
  where: where2.val,
13492
- datasets: C.factory.datasetClauses([], C.factory.sourceLocation()),
13528
+ datasets: C.astFactory.datasetClauses([], C.astFactory.sourceLocation()),
13493
13529
  context: [],
13494
13530
  solutionModifiers: modifiers,
13495
13531
  ...selectVal.val,
13496
13532
  ...values3 && { values: values3 }
13497
- }, C.factory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset, values3)));
13533
+ }, C.astFactory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset, values3)));
13498
13534
  }
13499
13535
  };
13500
13536
  var selectClause = {
@@ -13525,7 +13561,7 @@ var selectClause = {
13525
13561
  const star2 = CONSUME(symbols_exports.star);
13526
13562
  return ACTION(() => {
13527
13563
  last2 = star2;
13528
- return { variables: [C.factory.wildcard(C.factory.sourceLocation(star2))], ...distRed };
13564
+ return { variables: [C.astFactory.wildcard(C.astFactory.sourceLocation(star2))], ...distRed };
13529
13565
  });
13530
13566
  } },
13531
13567
  { ALT: () => {
@@ -13555,7 +13591,7 @@ var selectClause = {
13555
13591
  throw new Error(`Variable ${variable.value} used more than once in SELECT clause`);
13556
13592
  }
13557
13593
  usedVars.push(variable);
13558
- variables.push(C.factory.patternBind(expr, variable, C.factory.sourceLocation(open, last2)));
13594
+ variables.push(C.astFactory.patternBind(expr, variable, C.astFactory.sourceLocation(open, last2)));
13559
13595
  });
13560
13596
  } }
13561
13597
  ]));
@@ -13563,9 +13599,9 @@ var selectClause = {
13563
13599
  } }
13564
13600
  ]);
13565
13601
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13566
- return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(select2, last2)));
13602
+ return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(select2, last2)));
13567
13603
  },
13568
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13604
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
13569
13605
  F2.printFilter(ast, () => {
13570
13606
  PRINT_WORD("SELECT");
13571
13607
  if (ast.val.distinct) {
@@ -13605,7 +13641,7 @@ var constructQuery = {
13605
13641
  datasets: from2,
13606
13642
  where: where2.val,
13607
13643
  solutionModifiers: modifiers,
13608
- loc: C.factory.sourceLocation(construct2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13644
+ loc: C.astFactory.sourceLocation(construct2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13609
13645
  }));
13610
13646
  } },
13611
13647
  { ALT: () => {
@@ -13617,19 +13653,26 @@ var constructQuery = {
13617
13653
  subType: "construct",
13618
13654
  template: template.val,
13619
13655
  datasets: from2,
13620
- where: C.factory.patternGroup([template.val], C.factory.sourceLocation()),
13656
+ where: C.astFactory.patternGroup([template.val], C.astFactory.sourceLocation()),
13621
13657
  solutionModifiers: modifiers,
13622
- loc: C.factory.sourceLocation(construct2, template, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13658
+ loc: C.astFactory.sourceLocation(construct2, template, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13623
13659
  }));
13624
13660
  } }
13625
13661
  ]);
13626
13662
  },
13627
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13663
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
13664
+ const { astFactory: F2, indentInc } = C;
13628
13665
  F2.printFilter(ast, () => PRINT_WORD("CONSTRUCT"));
13629
13666
  if (!F2.isSourceLocationNoMaterialize(ast.where.loc)) {
13630
- F2.printFilter(ast, () => PRINT_WORD("{"));
13667
+ F2.printFilter(ast, () => {
13668
+ C[traqulaIndentation] += indentInc;
13669
+ PRINT_WORD("{\n");
13670
+ });
13631
13671
  SUBRULE(triplesBlock, ast.template);
13632
- F2.printFilter(ast, () => PRINT_WORD("}"));
13672
+ F2.printFilter(ast, () => {
13673
+ C[traqulaIndentation] -= indentInc;
13674
+ PRINT_ON_EMPTY("}\n");
13675
+ });
13633
13676
  }
13634
13677
  SUBRULE(datasetClauseStar, ast.datasets);
13635
13678
  if (F2.isSourceLocationNoMaterialize(ast.where.loc)) {
@@ -13654,7 +13697,7 @@ var describeQuery = {
13654
13697
  } },
13655
13698
  { ALT: () => {
13656
13699
  const star2 = CONSUME(symbols_exports.star);
13657
- return [ACTION(() => C.factory.wildcard(C.factory.sourceLocation(star2)))];
13700
+ return [ACTION(() => C.astFactory.wildcard(C.astFactory.sourceLocation(star2)))];
13658
13701
  } }
13659
13702
  ]);
13660
13703
  const from2 = SUBRULE1(datasetClauseStar);
@@ -13666,10 +13709,10 @@ var describeQuery = {
13666
13709
  datasets: from2,
13667
13710
  ...where2 && { where: where2.val },
13668
13711
  solutionModifiers: modifiers,
13669
- loc: C.factory.sourceLocation(describe2, ...variables, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13712
+ loc: C.astFactory.sourceLocation(describe2, ...variables, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13670
13713
  }));
13671
13714
  },
13672
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13715
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
13673
13716
  F2.printFilter(ast, () => PRINT_WORD("DESCRIBE"));
13674
13717
  if (F2.isWildcard(ast.variables[0])) {
13675
13718
  F2.printFilter(ast, () => PRINT_WORD("*"));
@@ -13697,10 +13740,10 @@ var askQuery = {
13697
13740
  datasets: from2,
13698
13741
  where: where2.val,
13699
13742
  solutionModifiers: modifiers,
13700
- loc: C.factory.sourceLocation(ask2, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13743
+ loc: C.astFactory.sourceLocation(ask2, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13701
13744
  }));
13702
13745
  },
13703
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13746
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
13704
13747
  F2.printFilter(ast, () => PRINT_WORD("ASK"));
13705
13748
  SUBRULE(datasetClauseStar, ast.datasets);
13706
13749
  SUBRULE(whereClause, F2.wrap(ast.where, ast.loc));
@@ -13717,7 +13760,7 @@ var constructTemplate = {
13717
13760
  const open = CONSUME(symbols_exports.LCurly);
13718
13761
  const triples = OPTION(() => SUBRULE1(constructTriples));
13719
13762
  const close = CONSUME(symbols_exports.RCurly);
13720
- return ACTION(() => C.factory.wrap(triples ?? C.factory.patternBgp([], C.factory.sourceLocation()), C.factory.sourceLocation(open, close)));
13763
+ return ACTION(() => C.astFactory.wrap(triples ?? C.astFactory.patternBgp([], C.astFactory.sourceLocation()), C.astFactory.sourceLocation(open, close)));
13721
13764
  }
13722
13765
  };
13723
13766
  var constructTriples = {
@@ -13754,13 +13797,13 @@ var update = {
13754
13797
  const update2 = {
13755
13798
  type: "update",
13756
13799
  updates,
13757
- loc: C.factory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
13800
+ loc: C.astFactory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
13758
13801
  };
13759
13802
  updateNoReuseBlankNodeLabels(update2);
13760
13803
  return update2;
13761
13804
  });
13762
13805
  },
13763
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13806
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
13764
13807
  const [head2, ...tail] = ast.updates;
13765
13808
  if (head2) {
13766
13809
  SUBRULE(prologue, head2.context);
@@ -13840,9 +13883,9 @@ var load2 = {
13840
13883
  CONSUME(loadInto);
13841
13884
  return SUBRULE1(graphRef);
13842
13885
  });
13843
- return ACTION(() => C.factory.updateOperationLoad(C.factory.sourceLocation(loadToken, source, destination), source, Boolean(silent2), destination));
13886
+ return ACTION(() => C.astFactory.updateOperationLoad(C.astFactory.sourceLocation(loadToken, source, destination), source, Boolean(silent2), destination));
13844
13887
  },
13845
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13888
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
13846
13889
  F2.printFilter(ast, () => {
13847
13890
  PRINT_WORD("LOAD");
13848
13891
  if (ast.silent) {
@@ -13863,9 +13906,9 @@ function clearOrDrop(operation) {
13863
13906
  const opToken = CONSUME(operation);
13864
13907
  const silent2 = OPTION(() => CONSUME(silent));
13865
13908
  const destination = SUBRULE1(graphRefAll);
13866
- return ACTION(() => C.factory.updateOperationClearDrop(unCapitalize(operation.name), Boolean(silent2), destination, C.factory.sourceLocation(opToken, destination)));
13909
+ return ACTION(() => C.astFactory.updateOperationClearDrop(unCapitalize(operation.name), Boolean(silent2), destination, C.astFactory.sourceLocation(opToken, destination)));
13867
13910
  },
13868
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13911
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
13869
13912
  F2.printFilter(ast, () => {
13870
13913
  PRINT_WORD(operation.name.toUpperCase());
13871
13914
  if (ast.silent) {
@@ -13884,9 +13927,9 @@ var create2 = {
13884
13927
  const createToken3 = CONSUME(create);
13885
13928
  const silent2 = OPTION(() => CONSUME(silent));
13886
13929
  const destination = SUBRULE1(graphRef);
13887
- return ACTION(() => C.factory.updateOperationCreate(destination, Boolean(silent2), C.factory.sourceLocation(createToken3, destination)));
13930
+ return ACTION(() => C.astFactory.updateOperationCreate(destination, Boolean(silent2), C.astFactory.sourceLocation(createToken3, destination)));
13888
13931
  },
13889
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13932
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
13890
13933
  F2.printFilter(ast, () => {
13891
13934
  PRINT_WORD("CREATE");
13892
13935
  if (ast.silent) {
@@ -13905,9 +13948,9 @@ function copyMoveAddOperation(operation) {
13905
13948
  const source = SUBRULE1(graphOrDefault);
13906
13949
  CONSUME(to);
13907
13950
  const destination = SUBRULE2(graphOrDefault);
13908
- return ACTION(() => C.factory.updateOperationAddMoveCopy(unCapitalize(operation.name), source, destination, Boolean(silent2), C.factory.sourceLocation(op, destination)));
13951
+ return ACTION(() => C.astFactory.updateOperationAddMoveCopy(unCapitalize(operation.name), source, destination, Boolean(silent2), C.astFactory.sourceLocation(op, destination)));
13909
13952
  },
13910
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13953
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
13911
13954
  F2.printFilter(ast, () => {
13912
13955
  PRINT_WORD(operation.name.toUpperCase());
13913
13956
  if (ast.silent) {
@@ -13929,7 +13972,7 @@ var quadPattern = {
13929
13972
  const open = CONSUME(symbols_exports.LCurly);
13930
13973
  const val = SUBRULE1(quads);
13931
13974
  const close = CONSUME(symbols_exports.RCurly);
13932
- return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
13975
+ return ACTION(() => C.astFactory.wrap(val.val, C.astFactory.sourceLocation(open, close)));
13933
13976
  }
13934
13977
  };
13935
13978
  var quadData = {
@@ -13940,7 +13983,7 @@ var quadData = {
13940
13983
  const val = SUBRULE1(quads);
13941
13984
  ACTION(() => couldParseVars && C.parseMode.add("canParseVars"));
13942
13985
  const close = CONSUME(symbols_exports.RCurly);
13943
- return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
13986
+ return ACTION(() => C.astFactory.wrap(val.val, C.astFactory.sourceLocation(open, close)));
13944
13987
  }
13945
13988
  };
13946
13989
  function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
@@ -13957,12 +14000,26 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
13957
14000
  if (name !== "insertData") {
13958
14001
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
13959
14002
  }
13960
- return ACTION(() => C.factory.updateOperationInsDelDataWhere(subType, data.val, C.factory.sourceLocation(insDelToken, data)));
14003
+ return ACTION(() => C.astFactory.updateOperationInsDelDataWhere(subType, data.val, C.astFactory.sourceLocation(insDelToken, data)));
13961
14004
  },
13962
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13963
- F2.printFilter(ast, () => PRINT_WORD(subType === "insertdata" ? "INSERT DATA" : subType === "deletedata" ? "DELETE DATA" : "DELETE WHERE", "{"));
14005
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
14006
+ const { astFactory: F2, indentInc } = C;
14007
+ F2.printFilter(ast, () => {
14008
+ C[traqulaIndentation] += indentInc;
14009
+ if (subType === "insertdata") {
14010
+ PRINT_WORD("INSERT DATA");
14011
+ } else if (subType === "deletedata") {
14012
+ PRINT_WORD("DELETE DATA");
14013
+ } else if (subType === "deletewhere") {
14014
+ PRINT_WORD("DELETE WHERE");
14015
+ }
14016
+ PRINT_WORD("{\n");
14017
+ });
13964
14018
  SUBRULE(quads, F2.wrap(ast.data, ast.loc));
13965
- F2.printFilter(ast, () => PRINT_WORD("}"));
14019
+ F2.printFilter(ast, () => {
14020
+ C[traqulaIndentation] -= indentInc;
14021
+ PRINT_ON_EMPTY("}\n");
14022
+ });
13966
14023
  }
13967
14024
  };
13968
14025
  }
@@ -13991,22 +14048,35 @@ var modify = {
13991
14048
  const using = SUBRULE1(usingClauseStar);
13992
14049
  CONSUME(where);
13993
14050
  const where2 = SUBRULE1(groupGraphPattern);
13994
- return ACTION(() => C.factory.updateOperationModify(C.factory.sourceLocation(graph2?.withToken, del, insert, where2), insert?.val ?? [], del?.val ?? [], where2, using, graph2?.graph));
14051
+ return ACTION(() => C.astFactory.updateOperationModify(C.astFactory.sourceLocation(graph2?.withToken, del, insert, where2), insert?.val ?? [], del?.val ?? [], where2, using, graph2?.graph));
13995
14052
  },
13996
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14053
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
14054
+ const { astFactory: F2, indentInc } = C;
13997
14055
  if (ast.graph) {
13998
14056
  F2.printFilter(ast, () => PRINT_WORD("WITH"));
13999
14057
  SUBRULE(iri2, ast.graph);
14000
14058
  }
14001
14059
  if (ast.delete.length > 0) {
14002
- F2.printFilter(ast, () => PRINT_WORD("DELETE", "{"));
14060
+ F2.printFilter(ast, () => {
14061
+ C[traqulaIndentation] += indentInc;
14062
+ PRINT_WORD("DELETE", "{\n");
14063
+ });
14003
14064
  SUBRULE(quads, F2.wrap(ast.delete, ast.loc));
14004
- F2.printFilter(ast, () => PRINT_WORD("}"));
14065
+ F2.printFilter(ast, () => {
14066
+ C[traqulaIndentation] -= indentInc;
14067
+ PRINT_ON_EMPTY("}\n");
14068
+ });
14005
14069
  }
14006
14070
  if (ast.insert.length > 0) {
14007
- F2.printFilter(ast, () => PRINT_WORD("INSERT", "{"));
14071
+ F2.printFilter(ast, () => {
14072
+ C[traqulaIndentation] += indentInc;
14073
+ PRINT_WORD("INSERT", "{\n");
14074
+ });
14008
14075
  SUBRULE(quads, F2.wrap(ast.insert, ast.loc));
14009
- F2.printFilter(ast, () => PRINT_WORD("}"));
14076
+ F2.printFilter(ast, () => {
14077
+ C[traqulaIndentation] -= indentInc;
14078
+ PRINT_ON_EMPTY("}\n");
14079
+ });
14010
14080
  }
14011
14081
  SUBRULE(usingClauseStar, ast.from);
14012
14082
  F2.printFilter(ast, () => PRINT_WORD("WHERE"));
@@ -14020,7 +14090,7 @@ var deleteClause2 = {
14020
14090
  const couldCreateBlankNodes = ACTION(() => C.parseMode.delete("canCreateBlankNodes"));
14021
14091
  const del = SUBRULE(quadPattern);
14022
14092
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
14023
- return ACTION(() => C.factory.wrap(del.val, C.factory.sourceLocation(delToken, del)));
14093
+ return ACTION(() => C.astFactory.wrap(del.val, C.astFactory.sourceLocation(delToken, del)));
14024
14094
  }
14025
14095
  };
14026
14096
  var insertClause2 = {
@@ -14028,7 +14098,7 @@ var insertClause2 = {
14028
14098
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14029
14099
  const insertToken = CONSUME(insertClause);
14030
14100
  const insert = SUBRULE(quadPattern);
14031
- return ACTION(() => C.factory.wrap(insert.val, C.factory.sourceLocation(insertToken, insert)));
14101
+ return ACTION(() => C.astFactory.wrap(insert.val, C.astFactory.sourceLocation(insertToken, insert)));
14032
14102
  }
14033
14103
  };
14034
14104
  var graphOrDefault = {
@@ -14036,12 +14106,12 @@ var graphOrDefault = {
14036
14106
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => OR([
14037
14107
  { ALT: () => {
14038
14108
  const def = CONSUME(graph_exports.default_);
14039
- return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
14109
+ return ACTION(() => C.astFactory.graphRefDefault(C.astFactory.sourceLocation(def)));
14040
14110
  } },
14041
14111
  { ALT: () => {
14042
14112
  const graph2 = OPTION(() => CONSUME(graph_exports.graph));
14043
14113
  const name = SUBRULE1(iri2);
14044
- return ACTION(() => C.factory.graphRefSpecific(name, C.factory.sourceLocation(graph2, name)));
14114
+ return ACTION(() => C.astFactory.graphRefSpecific(name, C.astFactory.sourceLocation(graph2, name)));
14045
14115
  } }
14046
14116
  ])
14047
14117
  };
@@ -14050,9 +14120,9 @@ var graphRef = {
14050
14120
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14051
14121
  const graph2 = CONSUME(graph_exports.graph);
14052
14122
  const val = SUBRULE(iri2);
14053
- return ACTION(() => C.factory.graphRefSpecific(val, C.factory.sourceLocation(graph2, val)));
14123
+ return ACTION(() => C.astFactory.graphRefSpecific(val, C.astFactory.sourceLocation(graph2, val)));
14054
14124
  },
14055
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14125
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
14056
14126
  F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
14057
14127
  SUBRULE(iri2, ast.graph);
14058
14128
  }
@@ -14063,18 +14133,18 @@ var graphRefAll = {
14063
14133
  { ALT: () => SUBRULE(graphRef) },
14064
14134
  { ALT: () => {
14065
14135
  const def = CONSUME(graph_exports.default_);
14066
- return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
14136
+ return ACTION(() => C.astFactory.graphRefDefault(C.astFactory.sourceLocation(def)));
14067
14137
  } },
14068
14138
  { ALT: () => {
14069
14139
  const named2 = CONSUME(graph_exports.named);
14070
- return ACTION(() => C.factory.graphRefNamed(C.factory.sourceLocation(named2)));
14140
+ return ACTION(() => C.astFactory.graphRefNamed(C.astFactory.sourceLocation(named2)));
14071
14141
  } },
14072
14142
  { ALT: () => {
14073
14143
  const graphAll2 = CONSUME(graph_exports.graphAll);
14074
- return ACTION(() => C.factory.graphRefAll(C.factory.sourceLocation(graphAll2)));
14144
+ return ACTION(() => C.astFactory.graphRefAll(C.astFactory.sourceLocation(graphAll2)));
14075
14145
  } }
14076
14146
  ]),
14077
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14147
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F2 }) => {
14078
14148
  if (F2.isGraphRefSpecific(ast)) {
14079
14149
  SUBRULE(graphRef, ast);
14080
14150
  } else if (F2.isGraphRefDefault(ast)) {
@@ -14111,9 +14181,9 @@ var quads = {
14111
14181
  ACTION(() => quads2.push(triples));
14112
14182
  });
14113
14183
  });
14114
- return ACTION(() => C.factory.wrap(quads2, C.factory.sourceLocation(quads2.at(0), last2)));
14184
+ return ACTION(() => C.astFactory.wrap(quads2, C.astFactory.sourceLocation(quads2.at(0), last2)));
14115
14185
  },
14116
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
14186
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => {
14117
14187
  for (const quad of ast.val) {
14118
14188
  if (F2.isPattern(quad)) {
14119
14189
  SUBRULE(triplesBlock, quad);
@@ -14131,14 +14201,21 @@ var quadsNotTriples = {
14131
14201
  CONSUME(symbols_exports.LCurly);
14132
14202
  const triples = OPTION(() => SUBRULE1(triplesTemplate));
14133
14203
  const close = CONSUME(symbols_exports.RCurly);
14134
- return ACTION(() => C.factory.graphQuads(name, triples ?? C.factory.patternBgp([], C.factory.sourceLocationNoMaterialize()), C.factory.sourceLocation(graph2, close)));
14204
+ return ACTION(() => C.astFactory.graphQuads(name, triples ?? C.astFactory.patternBgp([], C.astFactory.sourceLocationNoMaterialize()), C.astFactory.sourceLocation(graph2, close)));
14135
14205
  },
14136
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14206
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
14207
+ const { astFactory: F2, indentInc } = C;
14137
14208
  F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
14138
14209
  SUBRULE(varOrTerm, ast.graph);
14139
- F2.printFilter(ast, () => PRINT_WORD("{"));
14210
+ F2.printFilter(ast, () => {
14211
+ C[traqulaIndentation] += indentInc;
14212
+ PRINT_WORD("{\n");
14213
+ });
14140
14214
  SUBRULE(triplesBlock, ast.triples);
14141
- F2.printFilter(ast, () => PRINT_WORD("}"));
14215
+ F2.printFilter(ast, () => {
14216
+ C[traqulaIndentation] -= indentInc;
14217
+ PRINT_ON_EMPTY("}\n");
14218
+ });
14142
14219
  }
14143
14220
  };
14144
14221
 
@@ -14161,7 +14238,7 @@ var queryOrUpdate = {
14161
14238
  ...subType,
14162
14239
  type: "query",
14163
14240
  ...values3 && { values: values3 },
14164
- loc: C.factory.sourceLocation(prologueValues.at(0), subType, values3)
14241
+ loc: C.astFactory.sourceLocation(prologueValues.at(0), subType, values3)
14165
14242
  }));
14166
14243
  } },
14167
14244
  { ALT: () => {
@@ -14185,7 +14262,7 @@ var queryOrUpdate = {
14185
14262
  const update2 = {
14186
14263
  type: "update",
14187
14264
  updates,
14188
- loc: C.factory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
14265
+ loc: C.astFactory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
14189
14266
  };
14190
14267
  updateNoReuseBlankNodeLabels(update2);
14191
14268
  return update2;
@@ -14193,7 +14270,7 @@ var queryOrUpdate = {
14193
14270
  } }
14194
14271
  ]);
14195
14272
  },
14196
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
14273
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F2 }) => {
14197
14274
  if (F2.isQuery(ast)) {
14198
14275
  SUBRULE(query, ast);
14199
14276
  } else {
@@ -14205,13 +14282,15 @@ var queryOrUpdate = {
14205
14282
  // lib/MinimalSparqlParser.js
14206
14283
  function completeParseContext(context) {
14207
14284
  return {
14208
- factory: context.factory ?? new Factory(),
14285
+ astFactory: context.astFactory ?? new AstFactory(),
14209
14286
  baseIRI: context.baseIRI,
14210
14287
  prefixes: { ...context.prefixes },
14211
14288
  origSource: context.origSource ?? "",
14212
14289
  offset: context.offset,
14213
14290
  parseMode: context.parseMode ? new Set(context.parseMode) : /* @__PURE__ */ new Set(["canParseVars", "canCreateBlankNodes"]),
14214
- skipValidation: context.skipValidation ?? false
14291
+ skipValidation: context.skipValidation ?? false,
14292
+ [traqulaIndentation]: context[traqulaIndentation] ?? 0,
14293
+ indentInc: context.indentInc ?? 2
14215
14294
  };
14216
14295
  }
14217
14296
  var MinimalSparqlParser = class {
@@ -14219,7 +14298,7 @@ var MinimalSparqlParser = class {
14219
14298
  constructor(parser) {
14220
14299
  this.parser = parser;
14221
14300
  }
14222
- F = new Factory();
14301
+ F = new AstFactory();
14223
14302
  parse(query2, context = {}) {
14224
14303
  return this.parser.queryOrUpdate(query2, completeParseContext(context));
14225
14304
  }