@traqula/rules-sparql-1-1 0.0.3 → 0.0.4

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 (91) hide show
  1. package/README.md +0 -2
  2. package/lib/Sparql11types.d.ts +373 -62
  3. package/lib/Sparql11types.js.map +1 -1
  4. package/lib/SparqlParser.d.ts +4 -4
  5. package/lib/SparqlParser.js +2 -2
  6. package/lib/SparqlParser.js.map +1 -1
  7. package/lib/expressionHelpers.d.ts +2 -2
  8. package/lib/expressionHelpers.js +19 -21
  9. package/lib/expressionHelpers.js.map +1 -1
  10. package/lib/factory.d.ts +66 -66
  11. package/lib/factory.js.map +1 -1
  12. package/lib/factoryMixins/ContextFactory.d.ts +1 -1
  13. package/lib/factoryMixins/ContextFactory.js.map +1 -1
  14. package/lib/factoryMixins/ExpressionFactory.d.ts +1 -1
  15. package/lib/factoryMixins/ExpressionFactory.js.map +1 -1
  16. package/lib/factoryMixins/GraphRefFactory.d.ts +1 -1
  17. package/lib/factoryMixins/GraphRefFactory.js.map +1 -1
  18. package/lib/factoryMixins/PathFactory.d.ts +1 -1
  19. package/lib/factoryMixins/PathFactory.js.map +1 -1
  20. package/lib/factoryMixins/Patternfactory.d.ts +1 -1
  21. package/lib/factoryMixins/Patternfactory.js.map +1 -1
  22. package/lib/factoryMixins/QueryFactory.d.ts +1 -1
  23. package/lib/factoryMixins/QueryFactory.js.map +1 -1
  24. package/lib/factoryMixins/SolutionModifiersFactory.d.ts +1 -1
  25. package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -1
  26. package/lib/factoryMixins/TermFactory.d.ts +1 -1
  27. package/lib/factoryMixins/TermFactory.js.map +1 -1
  28. package/lib/factoryMixins/UpdateOperationFactory.d.ts +1 -1
  29. package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -1
  30. package/lib/grammar/builtIn.d.ts +2 -2
  31. package/lib/grammar/builtIn.js +66 -66
  32. package/lib/grammar/builtIn.js.map +1 -1
  33. package/lib/grammar/dataSetClause.d.ts +2 -2
  34. package/lib/grammar/dataSetClause.js +7 -7
  35. package/lib/grammar/dataSetClause.js.map +1 -1
  36. package/lib/grammar/expression.d.ts +2 -2
  37. package/lib/grammar/expression.js +47 -47
  38. package/lib/grammar/expression.js.map +1 -1
  39. package/lib/grammar/general.d.ts +2 -2
  40. package/lib/grammar/general.js +25 -25
  41. package/lib/grammar/general.js.map +1 -1
  42. package/lib/grammar/index.d.ts +2 -2
  43. package/lib/grammar/index.js +2 -2
  44. package/lib/grammar/index.js.map +1 -1
  45. package/lib/grammar/literals.d.ts +2 -2
  46. package/lib/grammar/literals.js +10 -10
  47. package/lib/grammar/literals.js.map +1 -1
  48. package/lib/grammar/propertyPaths.d.ts +3 -3
  49. package/lib/grammar/propertyPaths.js +19 -19
  50. package/lib/grammar/propertyPaths.js.map +1 -1
  51. package/lib/grammar/{queryUnit/queryUnit.d.ts → queryUnit.d.ts} +2 -2
  52. package/lib/grammar/{queryUnit/queryUnit.js → queryUnit.js} +67 -67
  53. package/lib/grammar/queryUnit.js.map +1 -0
  54. package/lib/grammar/solutionModifier.d.ts +2 -2
  55. package/lib/grammar/solutionModifier.js +29 -29
  56. package/lib/grammar/solutionModifier.js.map +1 -1
  57. package/lib/grammar/tripleBlock.d.ts +10 -10
  58. package/lib/grammar/tripleBlock.js +37 -37
  59. package/lib/grammar/tripleBlock.js.map +1 -1
  60. package/lib/grammar/{updateUnit/updateUnit.d.ts → updateUnit.d.ts} +2 -2
  61. package/lib/grammar/{updateUnit/updateUnit.js → updateUnit.js} +78 -78
  62. package/lib/grammar/updateUnit.js.map +1 -0
  63. package/lib/grammar/whereClause.d.ts +2 -2
  64. package/lib/grammar/whereClause.js +69 -69
  65. package/lib/grammar/whereClause.js.map +1 -1
  66. package/lib/index.cjs +1485 -1487
  67. package/lib/index.d.ts +1 -2
  68. package/lib/index.js +1 -2
  69. package/lib/index.js.map +1 -1
  70. package/lib/lexer/graph.d.ts +1 -1
  71. package/lib/lexer/lexer.d.ts +1 -1
  72. package/lib/lexer/terminals.d.ts +69 -0
  73. package/lib/lexer/terminals.js +69 -0
  74. package/lib/lexer/terminals.js.map +1 -1
  75. package/lib/sparql11HelperTypes.d.ts +68 -0
  76. package/lib/sparql11HelperTypes.js +2 -0
  77. package/lib/sparql11HelperTypes.js.map +1 -0
  78. package/lib/utils.d.ts +11 -0
  79. package/lib/utils.js +14 -0
  80. package/lib/utils.js.map +1 -1
  81. package/lib/validation/validators.d.ts +1 -1
  82. package/lib/validation/validators.js.map +1 -1
  83. package/package.json +3 -3
  84. package/lib/RoundTripTypes.d.ts +0 -379
  85. package/lib/RoundTripTypes.js +0 -2
  86. package/lib/RoundTripTypes.js.map +0 -1
  87. package/lib/grammar/queryUnit/queryUnit.js.map +0 -1
  88. package/lib/grammar/updateUnit/updateUnit.js.map +0 -1
  89. package/lib/grammar-helpers/utils.d.ts +0 -12
  90. package/lib/grammar-helpers/utils.js +0 -16
  91. package/lib/grammar-helpers/utils.js.map +0 -1
@@ -9,10 +9,10 @@ import { constraint, functionCall } from './whereClause';
9
9
  export const solutionModifier = {
10
10
  name: 'solutionModifier',
11
11
  impl: ({ ACTION, SUBRULE, OPTION1, OPTION2, OPTION3, OPTION4 }) => () => {
12
- const group = OPTION1(() => SUBRULE(groupClause, undefined));
13
- const having = OPTION2(() => SUBRULE(havingClause, undefined));
14
- const order = OPTION3(() => SUBRULE(orderClause, undefined));
15
- const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses, undefined));
12
+ const group = OPTION1(() => SUBRULE(groupClause));
13
+ const having = OPTION2(() => SUBRULE(havingClause));
14
+ const order = OPTION3(() => SUBRULE(orderClause));
15
+ const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses));
16
16
  return ACTION(() => ({
17
17
  ...(limitOffset && { limitOffset }),
18
18
  ...(group && { group }),
@@ -22,16 +22,16 @@ export const solutionModifier = {
22
22
  },
23
23
  gImpl: ({ SUBRULE }) => (ast) => {
24
24
  if (ast.group) {
25
- SUBRULE(groupClause, ast.group, undefined);
25
+ SUBRULE(groupClause, ast.group);
26
26
  }
27
27
  if (ast.having) {
28
- SUBRULE(havingClause, ast.having, undefined);
28
+ SUBRULE(havingClause, ast.having);
29
29
  }
30
30
  if (ast.order) {
31
- SUBRULE(orderClause, ast.order, undefined);
31
+ SUBRULE(orderClause, ast.order);
32
32
  }
33
33
  if (ast.limitOffset) {
34
- SUBRULE(limitOffsetClauses, ast.limitOffset, undefined);
34
+ SUBRULE(limitOffsetClauses, ast.limitOffset);
35
35
  }
36
36
  },
37
37
  };
@@ -45,7 +45,7 @@ export const groupClause = {
45
45
  const start = CONSUME(l.groupByGroup);
46
46
  CONSUME(l.by);
47
47
  AT_LEAST_ONE(() => {
48
- groupings.push(SUBRULE1(groupCondition, undefined));
48
+ groupings.push(SUBRULE1(groupCondition));
49
49
  });
50
50
  return ACTION(() => ({
51
51
  type: 'solutionModifier',
@@ -58,13 +58,13 @@ export const groupClause = {
58
58
  F.printFilter(ast, () => PRINT_WORDS('GROUP', 'BY'));
59
59
  for (const grouping of ast.groupings) {
60
60
  if (F.isExpression(grouping)) {
61
- SUBRULE(expression, grouping, undefined);
61
+ SUBRULE(expression, grouping);
62
62
  }
63
63
  else {
64
64
  F.printFilter(ast, () => PRINT_WORDS('('));
65
- SUBRULE(expression, grouping.value, undefined);
65
+ SUBRULE(expression, grouping.value);
66
66
  F.printFilter(ast, () => PRINT_WORDS('AS'));
67
- SUBRULE(var_, grouping.variable, undefined);
67
+ SUBRULE(var_, grouping.variable);
68
68
  F.printFilter(ast, () => PRINT_WORDS(')'));
69
69
  }
70
70
  }
@@ -76,17 +76,17 @@ export const groupClause = {
76
76
  export const groupCondition = {
77
77
  name: 'groupCondition',
78
78
  impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR }) => C => OR([
79
- { ALT: () => SUBRULE(builtInCall, undefined) },
80
- { ALT: () => SUBRULE(functionCall, undefined) },
81
- { ALT: () => SUBRULE2(var_, undefined) },
79
+ { ALT: () => SUBRULE(builtInCall) },
80
+ { ALT: () => SUBRULE(functionCall) },
81
+ { ALT: () => SUBRULE2(var_) },
82
82
  {
83
83
  ALT: () => {
84
84
  // Creates a bracketted expression or a Bind.
85
85
  const open = CONSUME(l.symbols.LParen);
86
- const expressionValue = SUBRULE(expression, undefined);
86
+ const expressionValue = SUBRULE(expression);
87
87
  const variable = OPTION(() => {
88
88
  CONSUME(l.as);
89
- return SUBRULE1(var_, undefined);
89
+ return SUBRULE1(var_);
90
90
  });
91
91
  const close = CONSUME(l.symbols.RParen);
92
92
  return ACTION(() => {
@@ -113,7 +113,7 @@ export const havingClause = {
113
113
  const expressions = [];
114
114
  const couldParseAgg = ACTION(() => C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));
115
115
  AT_LEAST_ONE(() => {
116
- expressions.push(SUBRULE(havingCondition, undefined));
116
+ expressions.push(SUBRULE(havingCondition));
117
117
  });
118
118
  ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));
119
119
  return ACTION(() => C.factory.solutionModifierHaving(expressions, C.factory.sourceLocation(having, expressions.at(-1))));
@@ -121,7 +121,7 @@ export const havingClause = {
121
121
  gImpl: ({ PRINT_WORD, SUBRULE }) => (ast, { factory: F }) => {
122
122
  F.printFilter(ast, () => PRINT_WORD('HAVING'));
123
123
  for (const having of ast.having) {
124
- SUBRULE(expression, having, undefined);
124
+ SUBRULE(expression, having);
125
125
  }
126
126
  },
127
127
  };
@@ -130,7 +130,7 @@ export const havingClause = {
130
130
  */
131
131
  export const havingCondition = {
132
132
  name: 'havingCondition',
133
- impl: ({ SUBRULE }) => () => SUBRULE(constraint, undefined),
133
+ impl: ({ SUBRULE }) => () => SUBRULE(constraint),
134
134
  };
135
135
  /**
136
136
  * [[23]](https://www.w3.org/TR/sparql11-query/#rOrderClause)
@@ -143,7 +143,7 @@ export const orderClause = {
143
143
  const orderings = [];
144
144
  const couldParseAgg = ACTION(() => C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));
145
145
  AT_LEAST_ONE(() => {
146
- orderings.push(SUBRULE1(orderCondition, undefined));
146
+ orderings.push(SUBRULE1(orderCondition));
147
147
  });
148
148
  ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));
149
149
  return ACTION(() => C.factory.solutionModifierOrder(orderings, C.factory.sourceLocation(order, orderings.at(-1))));
@@ -158,7 +158,7 @@ export const orderClause = {
158
158
  F.printFilter(ast, () => PRINT_WORDS('ASC'));
159
159
  }
160
160
  F.printFilter(ast, () => PRINT_WORDS('('));
161
- SUBRULE(expression, ordering.expression, undefined);
161
+ SUBRULE(expression, ordering.expression);
162
162
  F.printFilter(ast, () => PRINT_WORDS(')'));
163
163
  }
164
164
  },
@@ -180,7 +180,7 @@ export const orderCondition = {
180
180
  return [true, token];
181
181
  } },
182
182
  ]);
183
- const expr = SUBRULE(brackettedExpression, undefined);
183
+ const expr = SUBRULE(brackettedExpression);
184
184
  return ACTION(() => ({
185
185
  expression: expr,
186
186
  descending: descending[0],
@@ -188,11 +188,11 @@ export const orderCondition = {
188
188
  }));
189
189
  } },
190
190
  { ALT: () => {
191
- const expr = SUBRULE(constraint, undefined);
191
+ const expr = SUBRULE(constraint);
192
192
  return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));
193
193
  } },
194
194
  { ALT: () => {
195
- const expr = SUBRULE(var_, undefined);
195
+ const expr = SUBRULE(var_);
196
196
  return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));
197
197
  } },
198
198
  ]),
@@ -205,13 +205,13 @@ export const limitOffsetClauses = {
205
205
  name: 'limitOffsetClauses',
206
206
  impl: ({ ACTION, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => C => OR([
207
207
  { ALT: () => {
208
- const limit = SUBRULE1(limitClause, undefined);
209
- const offset = OPTION1(() => SUBRULE1(offsetClause, undefined));
208
+ const limit = SUBRULE1(limitClause);
209
+ const offset = OPTION1(() => SUBRULE1(offsetClause));
210
210
  return ACTION(() => C.factory.solutionModifierLimitOffset(limit.val, offset?.val, C.factory.sourceLocation(limit, ...(offset ? [offset] : []))));
211
211
  } },
212
212
  { ALT: () => {
213
- const offset = SUBRULE2(offsetClause, undefined);
214
- const limit = OPTION2(() => SUBRULE2(limitClause, undefined));
213
+ const offset = SUBRULE2(offsetClause);
214
+ const limit = OPTION2(() => SUBRULE2(limitClause));
215
215
  return ACTION(() => C.factory.solutionModifierLimitOffset(limit?.val, offset.val, C.factory.sourceLocation(offset, limit)));
216
216
  } },
217
217
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"solutionModifier.js","sourceRoot":"","sources":["solutionModifier.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IToken } from '@chevrotain/types';\nimport type { Wrap } from '@traqula/core';\nimport * as l from '../lexer';\nimport type {\n Expression,\n SolutionModifierGroup,\n SolutionModifierGroupBind,\n SolutionModifierHaving,\n SolutionModifierOrder,\n Ordering,\n SolutionModifierLimitOffset,\n SolutionModifiers,\n} from '../RoundTripTypes';\nimport type { SparqlGrammarRule, SparqlRule } from '../Sparql11types';\nimport { builtInCall } from './builtIn';\nimport { brackettedExpression, expression } from './expression';\nimport { var_ } from './general';\nimport { constraint, functionCall } from './whereClause';\n\n/**\n * [[18]](https://www.w3.org/TR/sparql11-query/#rSolutionModifier)\n */\nexport const solutionModifier: SparqlRule<'solutionModifier', SolutionModifiers> = <const> {\n name: 'solutionModifier',\n impl: ({ ACTION, SUBRULE, OPTION1, OPTION2, OPTION3, OPTION4 }) => () => {\n const group = OPTION1(() => SUBRULE(groupClause, undefined));\n const having = OPTION2(() => SUBRULE(havingClause, undefined));\n const order = OPTION3(() => SUBRULE(orderClause, undefined));\n const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses, undefined));\n return ACTION(() => ({\n ...(limitOffset && { limitOffset }),\n ...(group && { group }),\n ...(having && { having }),\n ...(order && { order }),\n }));\n },\n gImpl: ({ SUBRULE }) => (ast) => {\n if (ast.group) {\n SUBRULE(groupClause, ast.group, undefined);\n }\n if (ast.having) {\n SUBRULE(havingClause, ast.having, undefined);\n }\n if (ast.order) {\n SUBRULE(orderClause, ast.order, undefined);\n }\n if (ast.limitOffset) {\n SUBRULE(limitOffsetClauses, ast.limitOffset, undefined);\n }\n },\n};\n\n/**\n * [[19]](https://www.w3.org/TR/sparql11-query/#rGroupClause)\n */\nexport const groupClause: SparqlRule<'groupClause', SolutionModifierGroup> = <const> {\n name: 'groupClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE1, CONSUME }) => (C) => {\n const groupings: (Expression | SolutionModifierGroupBind)[] = [];\n const start = CONSUME(l.groupByGroup);\n CONSUME(l.by);\n AT_LEAST_ONE(() => {\n groupings.push(SUBRULE1(groupCondition, undefined));\n });\n\n return ACTION(() => ({\n type: 'solutionModifier',\n subType: 'group',\n groupings,\n loc: C.factory.sourceLocation(start, groupings.at(-1)),\n }));\n },\n gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORDS('GROUP', 'BY'));\n for (const grouping of ast.groupings) {\n if (F.isExpression(grouping)) {\n SUBRULE(expression, grouping, undefined);\n } else {\n F.printFilter(ast, () => PRINT_WORDS('('));\n SUBRULE(expression, grouping.value, undefined);\n F.printFilter(ast, () => PRINT_WORDS('AS'));\n SUBRULE(var_, grouping.variable, undefined);\n F.printFilter(ast, () => PRINT_WORDS(')'));\n }\n }\n },\n};\n\n/**\n * [[20]](https://www.w3.org/TR/sparql11-query/#rGroupCondition)\n */\nexport const groupCondition: SparqlGrammarRule<'groupCondition', Expression | SolutionModifierGroupBind> = <const>{\n name: 'groupCondition',\n impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR }) => C =>\n OR<Expression | SolutionModifierGroupBind>([\n { ALT: () => SUBRULE(builtInCall, undefined) },\n { ALT: () => SUBRULE(functionCall, undefined) },\n { ALT: () => SUBRULE2(var_, undefined) },\n {\n ALT: () => {\n // Creates a bracketted expression or a Bind.\n const open = CONSUME(l.symbols.LParen);\n const expressionValue = SUBRULE(expression, undefined);\n const variable = OPTION(() => {\n CONSUME(l.as);\n return SUBRULE1(var_, undefined);\n });\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() => {\n if (variable !== undefined) {\n return {\n variable,\n value: expressionValue,\n loc: C.factory.sourceLocation(open, close),\n } satisfies SolutionModifierGroupBind;\n }\n return expressionValue;\n });\n },\n },\n ]),\n};\n\n/**\n * [[21]](https://www.w3.org/TR/sparql11-query/#rHavingClause)\n */\nexport const havingClause: SparqlRule<'havingClause', SolutionModifierHaving> = <const> {\n name: 'havingClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {\n const having = CONSUME(l.having);\n const expressions: Expression[] = [];\n\n const couldParseAgg = ACTION(() =>\n C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));\n AT_LEAST_ONE(() => {\n expressions.push(SUBRULE(havingCondition, undefined));\n });\n ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));\n\n return ACTION(() =>\n C.factory.solutionModifierHaving(expressions, C.factory.sourceLocation(having, expressions.at(-1))));\n },\n gImpl: ({ PRINT_WORD, SUBRULE }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('HAVING'));\n for (const having of ast.having) {\n SUBRULE(expression, having, undefined);\n }\n },\n};\n\n/**\n * [[22]](https://www.w3.org/TR/sparql11-query/#rHavingCondition)\n */\nexport const havingCondition: SparqlGrammarRule<'havingCondition', Expression> = <const> {\n name: 'havingCondition',\n impl: ({ SUBRULE }) => () => SUBRULE(constraint, undefined),\n};\n\n/**\n * [[23]](https://www.w3.org/TR/sparql11-query/#rOrderClause)\n */\nexport const orderClause: SparqlRule<'orderClause', SolutionModifierOrder> = <const> {\n name: 'orderClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE1, CONSUME }) => (C) => {\n const order = CONSUME(l.order);\n CONSUME(l.by);\n const orderings: Ordering[] = [];\n\n const couldParseAgg = ACTION(() =>\n C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));\n AT_LEAST_ONE(() => {\n orderings.push(SUBRULE1(orderCondition, undefined));\n });\n ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));\n\n return ACTION(() =>\n C.factory.solutionModifierOrder(orderings, C.factory.sourceLocation(order, orderings.at(-1))));\n },\n gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORDS('ORDER', 'BY'));\n for (const ordering of ast.orderDefs) {\n if (ordering.descending) {\n F.printFilter(ast, () => PRINT_WORDS('DESC'));\n } else {\n F.printFilter(ast, () => PRINT_WORDS('ASC'));\n }\n F.printFilter(ast, () => PRINT_WORDS('('));\n SUBRULE(expression, ordering.expression, undefined);\n F.printFilter(ast, () => PRINT_WORDS(')'));\n }\n },\n};\n\n/**\n * [[24]](https://www.w3.org/TR/sparql11-query/#rOrderCondition)\n */\nexport const orderCondition: SparqlGrammarRule<'orderCondition', Ordering> = <const> {\n name: 'orderCondition',\n impl: ({ ACTION, SUBRULE, CONSUME, OR1, OR2 }) => C => OR1<Ordering>([\n { ALT: () => {\n const descending = OR2<[boolean, IToken]>([\n { ALT: () => {\n const token = CONSUME(l.orderAsc);\n return <const>[ false, token ];\n } },\n { ALT: () => {\n const token = CONSUME(l.orderDesc);\n return <const> [ true, token ];\n } },\n ]);\n\n const expr = SUBRULE(brackettedExpression, undefined);\n\n return ACTION(() => ({\n expression: expr,\n descending: descending[0],\n loc: C.factory.sourceLocation(descending[1], expr),\n }));\n } },\n { ALT: () => {\n const expr = SUBRULE(constraint, undefined);\n return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));\n } },\n { ALT: () => {\n const expr = SUBRULE(var_, undefined);\n return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));\n } },\n ]),\n};\n\n/**\n * Parses limit and or offset in any order.\n * [[25]](https://www.w3.org/TR/sparql11-query/#rLimitOffsetClauses)\n */\nexport const limitOffsetClauses: SparqlRule<'limitOffsetClauses', SolutionModifierLimitOffset> = <const> {\n name: 'limitOffsetClauses',\n impl: ({ ACTION, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => C => OR([\n { ALT: () => {\n const limit = SUBRULE1(limitClause, undefined);\n const offset = OPTION1(() => SUBRULE1(offsetClause, undefined));\n return ACTION(() => C.factory.solutionModifierLimitOffset(\n limit.val,\n offset?.val,\n C.factory.sourceLocation(limit, ...(offset ? [ offset ] : [])),\n ));\n } },\n { ALT: () => {\n const offset = SUBRULE2(offsetClause, undefined);\n const limit = OPTION2(() => SUBRULE2(limitClause, undefined));\n return ACTION(() => C.factory.solutionModifierLimitOffset(\n limit?.val,\n offset.val,\n C.factory.sourceLocation(offset, limit),\n ));\n } },\n ]),\n gImpl: ({ PRINT_WORDS }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n if (ast.limit) {\n PRINT_WORDS('LIMIT', String(ast.limit));\n }\n if (ast.offset) {\n PRINT_WORDS('OFFSET', String(ast.offset));\n }\n });\n },\n};\n\n/**\n * [[26]](https://www.w3.org/TR/sparql11-query/#rLimitClause)\n */\nexport const limitClause: SparqlGrammarRule<'limitClause', Wrap<number>> = <const> {\n name: 'limitClause',\n impl: ({ ACTION, CONSUME }) => (C) => {\n const offset = CONSUME(l.limit);\n const value = CONSUME(l.terminals.integer);\n const val = Number.parseInt(value.image, 10);\n return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset, value)));\n },\n};\n\n/**\n * [[27]](https://www.w3.org/TR/sparql11-query/#rWhereClause)\n */\nexport const offsetClause: SparqlGrammarRule<'offsetClause', Wrap<number>> = <const> {\n name: <const> 'offsetClause',\n impl: ({ CONSUME, ACTION }) => (C) => {\n const offset = CONSUME(l.offset);\n const value = CONSUME(l.terminals.integer);\n const val = Number.parseInt(value.image, 10);\n return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset, value)));\n },\n};\n"]}
1
+ {"version":3,"file":"solutionModifier.js","sourceRoot":"","sources":["solutionModifier.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IToken } from '@chevrotain/types';\nimport type { Wrap } from '@traqula/core';\nimport * as l from '../lexer';\nimport type { SparqlGrammarRule, SparqlRule } from '../sparql11HelperTypes';\nimport type {\n Expression,\n SolutionModifierGroup,\n SolutionModifierGroupBind,\n SolutionModifierHaving,\n SolutionModifierOrder,\n Ordering,\n SolutionModifierLimitOffset,\n SolutionModifiers,\n} from '../Sparql11types';\nimport { builtInCall } from './builtIn';\nimport { brackettedExpression, expression } from './expression';\nimport { var_ } from './general';\nimport { constraint, functionCall } from './whereClause';\n\n/**\n * [[18]](https://www.w3.org/TR/sparql11-query/#rSolutionModifier)\n */\nexport const solutionModifier: SparqlRule<'solutionModifier', SolutionModifiers> = <const> {\n name: 'solutionModifier',\n impl: ({ ACTION, SUBRULE, OPTION1, OPTION2, OPTION3, OPTION4 }) => () => {\n const group = OPTION1(() => SUBRULE(groupClause));\n const having = OPTION2(() => SUBRULE(havingClause));\n const order = OPTION3(() => SUBRULE(orderClause));\n const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses));\n return ACTION(() => ({\n ...(limitOffset && { limitOffset }),\n ...(group && { group }),\n ...(having && { having }),\n ...(order && { order }),\n }));\n },\n gImpl: ({ SUBRULE }) => (ast) => {\n if (ast.group) {\n SUBRULE(groupClause, ast.group);\n }\n if (ast.having) {\n SUBRULE(havingClause, ast.having);\n }\n if (ast.order) {\n SUBRULE(orderClause, ast.order);\n }\n if (ast.limitOffset) {\n SUBRULE(limitOffsetClauses, ast.limitOffset);\n }\n },\n};\n\n/**\n * [[19]](https://www.w3.org/TR/sparql11-query/#rGroupClause)\n */\nexport const groupClause: SparqlRule<'groupClause', SolutionModifierGroup> = <const> {\n name: 'groupClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE1, CONSUME }) => (C) => {\n const groupings: (Expression | SolutionModifierGroupBind)[] = [];\n const start = CONSUME(l.groupByGroup);\n CONSUME(l.by);\n AT_LEAST_ONE(() => {\n groupings.push(SUBRULE1(groupCondition));\n });\n\n return ACTION(() => ({\n type: 'solutionModifier',\n subType: 'group',\n groupings,\n loc: C.factory.sourceLocation(start, groupings.at(-1)),\n }));\n },\n gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORDS('GROUP', 'BY'));\n for (const grouping of ast.groupings) {\n if (F.isExpression(grouping)) {\n SUBRULE(expression, grouping);\n } else {\n F.printFilter(ast, () => PRINT_WORDS('('));\n SUBRULE(expression, grouping.value);\n F.printFilter(ast, () => PRINT_WORDS('AS'));\n SUBRULE(var_, grouping.variable);\n F.printFilter(ast, () => PRINT_WORDS(')'));\n }\n }\n },\n};\n\n/**\n * [[20]](https://www.w3.org/TR/sparql11-query/#rGroupCondition)\n */\nexport const groupCondition: SparqlGrammarRule<'groupCondition', Expression | SolutionModifierGroupBind> = <const>{\n name: 'groupCondition',\n impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR }) => C =>\n OR<Expression | SolutionModifierGroupBind>([\n { ALT: () => SUBRULE(builtInCall) },\n { ALT: () => SUBRULE(functionCall) },\n { ALT: () => SUBRULE2(var_) },\n {\n ALT: () => {\n // Creates a bracketted expression or a Bind.\n const open = CONSUME(l.symbols.LParen);\n const expressionValue = SUBRULE(expression);\n const variable = OPTION(() => {\n CONSUME(l.as);\n return SUBRULE1(var_);\n });\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() => {\n if (variable !== undefined) {\n return {\n variable,\n value: expressionValue,\n loc: C.factory.sourceLocation(open, close),\n } satisfies SolutionModifierGroupBind;\n }\n return expressionValue;\n });\n },\n },\n ]),\n};\n\n/**\n * [[21]](https://www.w3.org/TR/sparql11-query/#rHavingClause)\n */\nexport const havingClause: SparqlRule<'havingClause', SolutionModifierHaving> = <const> {\n name: 'havingClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {\n const having = CONSUME(l.having);\n const expressions: Expression[] = [];\n\n const couldParseAgg = ACTION(() =>\n C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));\n AT_LEAST_ONE(() => {\n expressions.push(SUBRULE(havingCondition));\n });\n ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));\n\n return ACTION(() =>\n C.factory.solutionModifierHaving(expressions, C.factory.sourceLocation(having, expressions.at(-1))));\n },\n gImpl: ({ PRINT_WORD, SUBRULE }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('HAVING'));\n for (const having of ast.having) {\n SUBRULE(expression, having);\n }\n },\n};\n\n/**\n * [[22]](https://www.w3.org/TR/sparql11-query/#rHavingCondition)\n */\nexport const havingCondition: SparqlGrammarRule<'havingCondition', Expression> = <const> {\n name: 'havingCondition',\n impl: ({ SUBRULE }) => () => SUBRULE(constraint),\n};\n\n/**\n * [[23]](https://www.w3.org/TR/sparql11-query/#rOrderClause)\n */\nexport const orderClause: SparqlRule<'orderClause', SolutionModifierOrder> = <const> {\n name: 'orderClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE1, CONSUME }) => (C) => {\n const order = CONSUME(l.order);\n CONSUME(l.by);\n const orderings: Ordering[] = [];\n\n const couldParseAgg = ACTION(() =>\n C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));\n AT_LEAST_ONE(() => {\n orderings.push(SUBRULE1(orderCondition));\n });\n ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));\n\n return ACTION(() =>\n C.factory.solutionModifierOrder(orderings, C.factory.sourceLocation(order, orderings.at(-1))));\n },\n gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORDS('ORDER', 'BY'));\n for (const ordering of ast.orderDefs) {\n if (ordering.descending) {\n F.printFilter(ast, () => PRINT_WORDS('DESC'));\n } else {\n F.printFilter(ast, () => PRINT_WORDS('ASC'));\n }\n F.printFilter(ast, () => PRINT_WORDS('('));\n SUBRULE(expression, ordering.expression);\n F.printFilter(ast, () => PRINT_WORDS(')'));\n }\n },\n};\n\n/**\n * [[24]](https://www.w3.org/TR/sparql11-query/#rOrderCondition)\n */\nexport const orderCondition: SparqlGrammarRule<'orderCondition', Ordering> = <const> {\n name: 'orderCondition',\n impl: ({ ACTION, SUBRULE, CONSUME, OR1, OR2 }) => C => OR1<Ordering>([\n { ALT: () => {\n const descending = OR2<[boolean, IToken]>([\n { ALT: () => {\n const token = CONSUME(l.orderAsc);\n return <const>[ false, token ];\n } },\n { ALT: () => {\n const token = CONSUME(l.orderDesc);\n return <const> [ true, token ];\n } },\n ]);\n\n const expr = SUBRULE(brackettedExpression);\n\n return ACTION(() => ({\n expression: expr,\n descending: descending[0],\n loc: C.factory.sourceLocation(descending[1], expr),\n }));\n } },\n { ALT: () => {\n const expr = SUBRULE(constraint);\n return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));\n } },\n { ALT: () => {\n const expr = SUBRULE(var_);\n return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));\n } },\n ]),\n};\n\n/**\n * Parses limit and or offset in any order.\n * [[25]](https://www.w3.org/TR/sparql11-query/#rLimitOffsetClauses)\n */\nexport const limitOffsetClauses: SparqlRule<'limitOffsetClauses', SolutionModifierLimitOffset> = <const> {\n name: 'limitOffsetClauses',\n impl: ({ ACTION, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => C => OR([\n { ALT: () => {\n const limit = SUBRULE1(limitClause);\n const offset = OPTION1(() => SUBRULE1(offsetClause));\n return ACTION(() => C.factory.solutionModifierLimitOffset(\n limit.val,\n offset?.val,\n C.factory.sourceLocation(limit, ...(offset ? [ offset ] : [])),\n ));\n } },\n { ALT: () => {\n const offset = SUBRULE2(offsetClause);\n const limit = OPTION2(() => SUBRULE2(limitClause));\n return ACTION(() => C.factory.solutionModifierLimitOffset(\n limit?.val,\n offset.val,\n C.factory.sourceLocation(offset, limit),\n ));\n } },\n ]),\n gImpl: ({ PRINT_WORDS }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n if (ast.limit) {\n PRINT_WORDS('LIMIT', String(ast.limit));\n }\n if (ast.offset) {\n PRINT_WORDS('OFFSET', String(ast.offset));\n }\n });\n },\n};\n\n/**\n * [[26]](https://www.w3.org/TR/sparql11-query/#rLimitClause)\n */\nexport const limitClause: SparqlGrammarRule<'limitClause', Wrap<number>> = <const> {\n name: 'limitClause',\n impl: ({ ACTION, CONSUME }) => (C) => {\n const offset = CONSUME(l.limit);\n const value = CONSUME(l.terminals.integer);\n const val = Number.parseInt(value.image, 10);\n return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset, value)));\n },\n};\n\n/**\n * [[27]](https://www.w3.org/TR/sparql11-query/#rWhereClause)\n */\nexport const offsetClause: SparqlGrammarRule<'offsetClause', Wrap<number>> = <const> {\n name: <const> 'offsetClause',\n impl: ({ CONSUME, ACTION }) => (C) => {\n const offset = CONSUME(l.offset);\n const value = CONSUME(l.terminals.integer);\n const val = Number.parseInt(value.image, 10);\n return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset, value)));\n },\n};\n"]}
@@ -1,5 +1,5 @@
1
- import type { BasicGraphPattern, Path, PatternBgp, Term, TermVariable, TripleCollection, TripleCollectionBlankNodeProperties, TripleCollectionList, TripleNesting } from '../RoundTripTypes';
2
- import type { SparqlGrammarRule, SparqlRule } from '../Sparql11types';
1
+ import type { SparqlGrammarRule, SparqlRule } from '../sparql11HelperTypes';
2
+ import type { BasicGraphPattern, GraphNode, Path, PatternBgp, Term, TermVariable, TripleCollection, TripleCollectionBlankNodeProperties, TripleCollectionList, TripleNesting } from '../Sparql11types';
3
3
  /**
4
4
  * [[55]](https://www.w3.org/TR/sparql11-query/#rTriplesBlock)
5
5
  */
@@ -10,10 +10,10 @@ export declare const triplesSameSubjectPath: SparqlGrammarRule<"triplesSameSubje
10
10
  * [[52]](https://www.w3.org/TR/sparql11-query/#rTriplesTemplate)
11
11
  */
12
12
  export declare const triplesTemplate: SparqlGrammarRule<'triplesTemplate', PatternBgp>;
13
- export declare const propertyList: SparqlGrammarRule<"propertyList", TripleNesting[], Pick<TripleNesting, "subject">>;
14
- export declare const propertyListPath: SparqlGrammarRule<"propertyListPath", TripleNesting[], Pick<TripleNesting, "subject">>;
15
- export declare const propertyListNotEmpty: SparqlGrammarRule<"propertyListNotEmpty", TripleNesting[], Pick<TripleNesting, "subject">>;
16
- export declare const propertyListPathNotEmpty: SparqlGrammarRule<"propertyListPathNotEmpty", TripleNesting[], Pick<TripleNesting, "subject">>;
13
+ export declare const propertyList: SparqlGrammarRule<"propertyList", TripleNesting[], [GraphNode]>;
14
+ export declare const propertyListPath: SparqlGrammarRule<"propertyListPath", TripleNesting[], [GraphNode]>;
15
+ export declare const propertyListNotEmpty: SparqlGrammarRule<"propertyListNotEmpty", TripleNesting[], [GraphNode]>;
16
+ export declare const propertyListPathNotEmpty: SparqlGrammarRule<"propertyListPathNotEmpty", TripleNesting[], [GraphNode]>;
17
17
  /**
18
18
  * [[84]](https://www.w3.org/TR/sparql11-query/#rVerbPath)
19
19
  */
@@ -22,10 +22,10 @@ export declare const verbPath: SparqlGrammarRule<'verbPath', Path>;
22
22
  * [[85]](https://www.w3.org/TR/sparql11-query/#rVerbSimple)
23
23
  */
24
24
  export declare const verbSimple: SparqlGrammarRule<'verbSimple', TermVariable>;
25
- export declare const objectList: SparqlGrammarRule<"objectList", TripleNesting[], Pick<TripleNesting, "subject" | "predicate">>;
26
- export declare const objectListPath: SparqlGrammarRule<"objectListPath", TripleNesting[], Pick<TripleNesting, "subject" | "predicate">>;
27
- export declare const object: SparqlGrammarRule<"object", TripleNesting, Pick<TripleNesting, "subject" | "predicate">>;
28
- export declare const objectPath: SparqlGrammarRule<"objectPath", TripleNesting, Pick<TripleNesting, "subject" | "predicate">>;
25
+ export declare const objectList: SparqlGrammarRule<"objectList", TripleNesting[], [GraphNode, import("..").TermIriFull | import("..").TermIriPrefixed | TermVariable | import("..").PropertyPathChain | import("..").PathModified | import("..").PathNegated]>;
26
+ export declare const objectListPath: SparqlGrammarRule<"objectListPath", TripleNesting[], [GraphNode, import("..").TermIriFull | import("..").TermIriPrefixed | TermVariable | import("..").PropertyPathChain | import("..").PathModified | import("..").PathNegated]>;
27
+ export declare const object: SparqlGrammarRule<"object", TripleNesting, [GraphNode, import("..").TermIriFull | import("..").TermIriPrefixed | TermVariable | import("..").PropertyPathChain | import("..").PathModified | import("..").PathNegated]>;
28
+ export declare const objectPath: SparqlGrammarRule<"objectPath", TripleNesting, [GraphNode, import("..").TermIriFull | import("..").TermIriPrefixed | TermVariable | import("..").PropertyPathChain | import("..").PathModified | import("..").PathNegated]>;
29
29
  export declare const collection: SparqlRule<"collection", TripleCollectionList>;
30
30
  export declare const collectionPath: SparqlRule<"collectionPath", TripleCollectionList>;
31
31
  export declare const triplesNode: SparqlRule<"triplesNode", TripleCollection>;
@@ -1,5 +1,5 @@
1
- import { CommonIRIs } from '../grammar-helpers/utils';
2
1
  import * as l from '../lexer';
2
+ import { CommonIRIs } from '../utils';
3
3
  import { var_, varOrTerm, verb } from './general';
4
4
  import { path, pathGenerator } from './propertyPaths';
5
5
  function triplesDotSeperated(triplesSameSubjectSubrule) {
@@ -11,7 +11,7 @@ function triplesDotSeperated(triplesSameSubjectSubrule) {
11
11
  GATE: () => parsedDot,
12
12
  DEF: () => {
13
13
  parsedDot = false;
14
- const template = SUBRULE(triplesSameSubjectSubrule, undefined);
14
+ const template = SUBRULE(triplesSameSubjectSubrule);
15
15
  ACTION(() => {
16
16
  triples.push(...template);
17
17
  });
@@ -29,28 +29,28 @@ function triplesDotSeperated(triplesSameSubjectSubrule) {
29
29
  */
30
30
  export const triplesBlock = {
31
31
  name: 'triplesBlock',
32
- impl: implArgs => C => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C, undefined),
32
+ impl: implArgs => C => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C),
33
33
  gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {
34
34
  for (const [index, triple] of ast.triples.entries()) {
35
35
  HANDLE_LOC(triple, () => {
36
36
  const nextTriple = ast.triples.at(index);
37
37
  if (F.isTripleCollection(triple)) {
38
- SUBRULE(graphNodePath, triple, undefined);
38
+ SUBRULE(graphNodePath, triple);
39
39
  // A top level tripleCollection block means that it is not used in a triple. So you end with DOT.
40
40
  F.printFilter(triple, () => PRINT_WORD('.'));
41
41
  }
42
42
  else {
43
43
  // Subject
44
- SUBRULE(graphNodePath, triple.subject, undefined);
44
+ SUBRULE(graphNodePath, triple.subject);
45
45
  // Predicate
46
46
  if (F.isTerm(triple.predicate) && F.isTermVariable(triple.predicate)) {
47
- SUBRULE(varOrTerm, triple.predicate, undefined);
47
+ SUBRULE(varOrTerm, triple.predicate);
48
48
  }
49
49
  else {
50
50
  SUBRULE(pathGenerator, triple.predicate, undefined);
51
51
  }
52
52
  // Object
53
- SUBRULE(graphNodePath, triple.object, undefined);
53
+ SUBRULE(graphNodePath, triple.object);
54
54
  // If no more things, or a top level collection (only possible if new block was part), or new subject: add DOT
55
55
  if (nextTriple === undefined || F.isTripleCollection(nextTriple) ||
56
56
  !F.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
@@ -78,8 +78,8 @@ function triplesSameSubjectImpl(name, allowPaths) {
78
78
  name,
79
79
  impl: ({ ACTION, SUBRULE, OR }) => C => OR([
80
80
  { ALT: () => {
81
- const subject = SUBRULE(varOrTerm, undefined);
82
- const res = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, { subject: ACTION(() => C.factory.dematerialized(subject)) });
81
+ const subject = SUBRULE(varOrTerm);
82
+ const res = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, ACTION(() => C.factory.dematerialized(subject)));
83
83
  // Only the first occurrence of a subject is actually materialized.
84
84
  return ACTION(() => {
85
85
  if (res.length > 0) {
@@ -90,8 +90,8 @@ function triplesSameSubjectImpl(name, allowPaths) {
90
90
  });
91
91
  } },
92
92
  { ALT: () => {
93
- const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode, undefined);
94
- const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, { subject: ACTION(() => C.factory.graphNodeIdentifier(subjectNode)) });
93
+ const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);
94
+ const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, ACTION(() => C.factory.graphNodeIdentifier(subjectNode)));
95
95
  return ACTION(() => {
96
96
  if (restNode.length === 0) {
97
97
  return [subjectNode];
@@ -120,7 +120,7 @@ export const triplesTemplate = {
120
120
  function propertyListImpl(name, allowPaths) {
121
121
  return {
122
122
  name,
123
- impl: ({ SUBRULE, OPTION }) => (_, arg) => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, arg)) ?? [],
123
+ impl: ({ SUBRULE, OPTION }) => (_, subject) => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, subject)) ?? [],
124
124
  };
125
125
  }
126
126
  export const propertyList = propertyListImpl('propertyList', false);
@@ -134,7 +134,7 @@ export const propertyListPath = propertyListImpl('propertyListPath', true);
134
134
  function propertyListNotEmptyImplementation(name, allowPaths) {
135
135
  return {
136
136
  name,
137
- impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (_, arg) => {
137
+ impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (_, subject) => {
138
138
  const result = [];
139
139
  let parsedSemi = true;
140
140
  AT_LEAST_ONE({
@@ -143,11 +143,11 @@ function propertyListNotEmptyImplementation(name, allowPaths) {
143
143
  parsedSemi = false;
144
144
  const predicate = allowPaths ?
145
145
  OR1([
146
- { ALT: () => SUBRULE1(verbPath, undefined) },
147
- { ALT: () => SUBRULE1(verbSimple, undefined) },
146
+ { ALT: () => SUBRULE1(verbPath) },
147
+ { ALT: () => SUBRULE1(verbSimple) },
148
148
  ]) :
149
- SUBRULE1(verb, undefined);
150
- const triples = SUBRULE1(allowPaths ? objectListPath : objectList, ACTION(() => ({ subject: arg.subject, predicate })));
149
+ SUBRULE1(verb);
150
+ const triples = SUBRULE1(allowPaths ? objectListPath : objectList, subject, predicate);
151
151
  MANY2(() => {
152
152
  CONSUME(l.symbols.semi);
153
153
  parsedSemi = true;
@@ -168,14 +168,14 @@ export const propertyListPathNotEmpty = propertyListNotEmptyImplementation('prop
168
168
  */
169
169
  export const verbPath = {
170
170
  name: 'verbPath',
171
- impl: ({ SUBRULE }) => () => SUBRULE(path, undefined),
171
+ impl: ({ SUBRULE }) => () => SUBRULE(path),
172
172
  };
173
173
  /**
174
174
  * [[85]](https://www.w3.org/TR/sparql11-query/#rVerbSimple)
175
175
  */
176
176
  export const verbSimple = {
177
177
  name: 'verbSimple',
178
- impl: ({ SUBRULE }) => () => SUBRULE(var_, undefined),
178
+ impl: ({ SUBRULE }) => () => SUBRULE(var_),
179
179
  };
180
180
  /**
181
181
  * [[79]](https://www.w3.org/TR/sparql11-query/#rObjectList)
@@ -184,12 +184,12 @@ export const verbSimple = {
184
184
  function objectListImpl(name, allowPaths) {
185
185
  return {
186
186
  name,
187
- impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, arg) => {
187
+ impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, subj, pred) => {
188
188
  const objects = [];
189
189
  AT_LEAST_ONE_SEP({
190
190
  SEP: l.symbols.comma,
191
191
  DEF: () => {
192
- const objectTriple = SUBRULE(allowPaths ? objectPath : object, arg);
192
+ const objectTriple = SUBRULE(allowPaths ? objectPath : object, subj, pred);
193
193
  ACTION(() => {
194
194
  objects.push(objectTriple);
195
195
  });
@@ -208,9 +208,9 @@ export const objectListPath = objectListImpl('objectListPath', true);
208
208
  function objectImpl(name, allowPaths) {
209
209
  return {
210
210
  name,
211
- impl: ({ ACTION, SUBRULE }) => (C, arg) => {
212
- const node = SUBRULE(allowPaths ? graphNodePath : graphNode, undefined);
213
- return ACTION(() => C.factory.triple(arg.subject, arg.predicate, node));
211
+ impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {
212
+ const node = SUBRULE(allowPaths ? graphNodePath : graphNode);
213
+ return ACTION(() => C.factory.triple(subject, predicate, node));
214
214
  },
215
215
  };
216
216
  }
@@ -229,7 +229,7 @@ function collectionImpl(name, allowPaths) {
229
229
  const terms = [];
230
230
  const startToken = CONSUME(l.symbols.LParen);
231
231
  AT_LEAST_ONE(() => {
232
- terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode, undefined));
232
+ terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode));
233
233
  });
234
234
  const endToken = CONSUME(l.symbols.RParen);
235
235
  return ACTION(() => {
@@ -265,7 +265,7 @@ function collectionImpl(name, allowPaths) {
265
265
  // Only every 2 triple is relevant. The odd triples are linking triples.
266
266
  for (const [idx, triple] of ast.triples.entries()) {
267
267
  if (idx % 2 === 0) {
268
- SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object, undefined);
268
+ SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object);
269
269
  }
270
270
  }
271
271
  F.printFilter(ast, () => PRINT_WORD(')'));
@@ -282,12 +282,12 @@ function triplesNodeImpl(name, allowPaths) {
282
282
  return {
283
283
  name,
284
284
  impl: ({ SUBRULE, OR }) => () => OR([
285
- { ALT: () => SUBRULE(allowPaths ? collectionPath : collection, undefined) },
286
- { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, undefined) },
285
+ { ALT: () => SUBRULE(allowPaths ? collectionPath : collection) },
286
+ { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList) },
287
287
  ]),
288
288
  gImpl: ({ SUBRULE }) => ast => ast.subType === 'list' ?
289
- SUBRULE(allowPaths ? collectionPath : collection, ast, undefined) :
290
- SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast, undefined),
289
+ SUBRULE(allowPaths ? collectionPath : collection, ast) :
290
+ SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast),
291
291
  };
292
292
  }
293
293
  export const triplesNode = triplesNodeImpl('triplesNode', false);
@@ -303,7 +303,7 @@ function blankNodePropertyListImpl(name, allowPaths) {
303
303
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
304
304
  const startToken = CONSUME(l.symbols.LSquare);
305
305
  const blankNode = ACTION(() => C.factory.blankNode(undefined, C.factory.sourceLocationNoMaterialize()));
306
- const propList = SUBRULE(propertyPathNotEmptyImpl, { subject: blankNode });
306
+ const propList = SUBRULE(propertyPathNotEmptyImpl, blankNode);
307
307
  const endToken = CONSUME(l.symbols.RSquare);
308
308
  return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(blankNode, propList, C.factory.sourceLocation(startToken, endToken)));
309
309
  },
@@ -312,12 +312,12 @@ function blankNodePropertyListImpl(name, allowPaths) {
312
312
  for (const triple of ast.triples) {
313
313
  HANDLE_LOC(triple, () => {
314
314
  if (F.isTerm(triple.predicate) && F.isTermVariable(triple.predicate)) {
315
- SUBRULE(varOrTerm, triple.predicate, undefined);
315
+ SUBRULE(varOrTerm, triple.predicate);
316
316
  }
317
317
  else {
318
318
  SUBRULE(pathGenerator, triple.predicate, undefined);
319
319
  }
320
- SUBRULE(graphNodePath, triple.object, undefined);
320
+ SUBRULE(graphNodePath, triple.object);
321
321
  F.printFilter(ast, () => PRINT_WORD(';'));
322
322
  });
323
323
  }
@@ -336,18 +336,18 @@ function graphNodeImpl(name, allowPaths) {
336
336
  return {
337
337
  name,
338
338
  impl: ({ SUBRULE, OR }) => C => OR([
339
- { ALT: () => SUBRULE(varOrTerm, undefined) },
339
+ { ALT: () => SUBRULE(varOrTerm) },
340
340
  {
341
341
  GATE: () => C.parseMode.has('canCreateBlankNodes'),
342
- ALT: () => SUBRULE(triplesNodeRule, undefined),
342
+ ALT: () => SUBRULE(triplesNodeRule),
343
343
  },
344
344
  ]),
345
345
  gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {
346
346
  if (F.isTerm(ast)) {
347
- SUBRULE(varOrTerm, ast, undefined);
347
+ SUBRULE(varOrTerm, ast);
348
348
  }
349
349
  else {
350
- SUBRULE(triplesNodeRule, ast, undefined);
350
+ SUBRULE(triplesNodeRule, ast);
351
351
  }
352
352
  },
353
353
  };