@traqula/rules-sparql-1-1 0.0.23 → 0.0.25

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 (116) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/lib/MinimalSparqlParser.js +66 -58
  3. package/dist/cjs/lib/MinimalSparqlParser.js.map +1 -0
  4. package/dist/cjs/lib/Sparql11types.js +2 -15
  5. package/dist/cjs/lib/Sparql11types.js.map +1 -0
  6. package/dist/cjs/lib/astFactory.js +110 -119
  7. package/dist/cjs/lib/astFactory.js.map +1 -0
  8. package/dist/cjs/lib/expressionHelpers.js +181 -191
  9. package/dist/cjs/lib/expressionHelpers.js.map +1 -0
  10. package/dist/cjs/lib/factoryMixins/ContextFactory.js +30 -52
  11. package/dist/cjs/lib/factoryMixins/ContextFactory.js.map +1 -0
  12. package/dist/cjs/lib/factoryMixins/ExpressionFactory.js +83 -102
  13. package/dist/cjs/lib/factoryMixins/ExpressionFactory.js.map +1 -0
  14. package/dist/cjs/lib/factoryMixins/GraphRefFactory.js +51 -73
  15. package/dist/cjs/lib/factoryMixins/GraphRefFactory.js.map +1 -0
  16. package/dist/cjs/lib/factoryMixins/PathFactory.js +68 -87
  17. package/dist/cjs/lib/factoryMixins/PathFactory.js.map +1 -0
  18. package/dist/cjs/lib/factoryMixins/Patternfactory.js +98 -120
  19. package/dist/cjs/lib/factoryMixins/Patternfactory.js.map +1 -0
  20. package/dist/cjs/lib/factoryMixins/QueryFactory.js +43 -65
  21. package/dist/cjs/lib/factoryMixins/QueryFactory.js.map +1 -0
  22. package/dist/cjs/lib/factoryMixins/SolutionModifiersFactory.js +55 -77
  23. package/dist/cjs/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
  24. package/dist/cjs/lib/factoryMixins/TermFactory.js +81 -102
  25. package/dist/cjs/lib/factoryMixins/TermFactory.js.map +1 -0
  26. package/dist/cjs/lib/factoryMixins/UpdateOperationFactory.js +126 -147
  27. package/dist/cjs/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
  28. package/dist/cjs/lib/factoryMixins/mixins.js +21 -38
  29. package/dist/cjs/lib/factoryMixins/mixins.js.map +1 -0
  30. package/dist/cjs/lib/grammar/builtIn.js +277 -377
  31. package/dist/cjs/lib/grammar/builtIn.js.map +1 -0
  32. package/dist/cjs/lib/grammar/dataSetClause.js +110 -109
  33. package/dist/cjs/lib/grammar/dataSetClause.js.map +1 -0
  34. package/dist/cjs/lib/grammar/expression.js +387 -358
  35. package/dist/cjs/lib/grammar/expression.js.map +1 -0
  36. package/dist/cjs/lib/grammar/general.js +173 -158
  37. package/dist/cjs/lib/grammar/general.js.map +1 -0
  38. package/dist/cjs/lib/grammar/index.js +94 -111
  39. package/dist/cjs/lib/grammar/index.js.map +1 -0
  40. package/dist/cjs/lib/grammar/literals.js +292 -266
  41. package/dist/cjs/lib/grammar/literals.js.map +1 -0
  42. package/dist/cjs/lib/grammar/propertyPaths.js +206 -193
  43. package/dist/cjs/lib/grammar/propertyPaths.js.map +1 -0
  44. package/dist/cjs/lib/grammar/queryUnit.js +395 -372
  45. package/dist/cjs/lib/grammar/queryUnit.js.map +1 -0
  46. package/dist/cjs/lib/grammar/solutionModifier.js +281 -265
  47. package/dist/cjs/lib/grammar/solutionModifier.js.map +1 -0
  48. package/dist/cjs/lib/grammar/tripleBlock.js +396 -355
  49. package/dist/cjs/lib/grammar/tripleBlock.js.map +1 -0
  50. package/dist/cjs/lib/grammar/updateUnit.js +551 -519
  51. package/dist/cjs/lib/grammar/updateUnit.js.map +1 -0
  52. package/dist/cjs/lib/grammar/whereClause.js +486 -459
  53. package/dist/cjs/lib/grammar/whereClause.js.map +1 -0
  54. package/dist/cjs/lib/index.js +47 -54
  55. package/dist/cjs/lib/index.js.map +1 -0
  56. package/dist/cjs/lib/lexer/BuiltInCalls.js +188 -333
  57. package/dist/cjs/lib/lexer/BuiltInCalls.js.map +1 -0
  58. package/dist/cjs/lib/lexer/graph.js +10 -40
  59. package/dist/cjs/lib/lexer/graph.js.map +1 -0
  60. package/dist/cjs/lib/lexer/index.js +43 -48
  61. package/dist/cjs/lib/lexer/index.js.map +1 -0
  62. package/dist/cjs/lib/lexer/lexer.js +84 -195
  63. package/dist/cjs/lib/lexer/lexer.js.map +1 -0
  64. package/dist/cjs/lib/lexer/lexerPatterns.js +40 -132
  65. package/dist/cjs/lib/lexer/lexerPatterns.js.map +1 -0
  66. package/dist/cjs/lib/lexer/symbols.js +31 -106
  67. package/dist/cjs/lib/lexer/symbols.js.map +1 -0
  68. package/dist/cjs/lib/lexer/terminals.js +100 -102
  69. package/dist/cjs/lib/lexer/terminals.js.map +1 -0
  70. package/dist/cjs/lib/sparql11HelperTypes.js +2 -15
  71. package/dist/cjs/lib/sparql11HelperTypes.js.map +1 -0
  72. package/dist/cjs/lib/utils.js +40 -58
  73. package/dist/cjs/lib/utils.js.map +1 -0
  74. package/dist/cjs/lib/validation/validators.js +217 -196
  75. package/dist/cjs/lib/validation/validators.js.map +1 -0
  76. package/dist/esm/lib/MinimalSparqlParser.d.ts +26 -8
  77. package/dist/esm/lib/MinimalSparqlParser.js +40 -11
  78. package/dist/esm/lib/MinimalSparqlParser.js.map +1 -1
  79. package/dist/esm/lib/astFactory.d.ts +66 -45
  80. package/dist/esm/lib/astFactory.js +3 -0
  81. package/dist/esm/lib/astFactory.js.map +1 -1
  82. package/dist/esm/lib/factoryMixins/ContextFactory.d.ts +7 -5
  83. package/dist/esm/lib/factoryMixins/ExpressionFactory.d.ts +7 -5
  84. package/dist/esm/lib/factoryMixins/GraphRefFactory.d.ts +7 -5
  85. package/dist/esm/lib/factoryMixins/PathFactory.d.ts +7 -5
  86. package/dist/esm/lib/factoryMixins/Patternfactory.d.ts +7 -5
  87. package/dist/esm/lib/factoryMixins/QueryFactory.d.ts +7 -5
  88. package/dist/esm/lib/factoryMixins/SolutionModifiersFactory.d.ts +7 -5
  89. package/dist/esm/lib/factoryMixins/TermFactory.d.ts +7 -5
  90. package/dist/esm/lib/factoryMixins/UpdateOperationFactory.d.ts +7 -5
  91. package/dist/esm/lib/grammar/index.js +1 -1
  92. package/dist/esm/lib/grammar/index.js.map +1 -1
  93. package/dist/esm/lib/grammar/literals.js +23 -13
  94. package/dist/esm/lib/grammar/literals.js.map +1 -1
  95. package/dist/esm/lib/grammar/propertyPaths.d.ts +2 -2
  96. package/dist/esm/lib/grammar/tripleBlock.d.ts +4 -4
  97. package/dist/esm/lib/grammar/tripleBlock.js +18 -12
  98. package/dist/esm/lib/grammar/tripleBlock.js.map +1 -1
  99. package/dist/esm/lib/grammar/updateUnit.js +2 -2
  100. package/dist/esm/lib/grammar/updateUnit.js.map +1 -1
  101. package/dist/esm/lib/lexer/BuiltInCalls.d.ts +1 -1
  102. package/dist/esm/lib/lexer/graph.d.ts +1 -1
  103. package/dist/esm/lib/lexer/lexer.d.ts +2 -2
  104. package/dist/esm/lib/lexer/lexerPatterns.d.ts +1 -1
  105. package/dist/esm/lib/lexer/lexerPatterns.js +1 -1
  106. package/dist/esm/lib/lexer/lexerPatterns.js.map +1 -1
  107. package/dist/esm/lib/lexer/symbols.d.ts +1 -1
  108. package/dist/esm/lib/lexer/terminals.d.ts +2 -2
  109. package/dist/esm/lib/lexer/terminals.js +3 -3
  110. package/dist/esm/lib/lexer/terminals.js.map +1 -1
  111. package/dist/esm/lib/sparql11HelperTypes.d.ts +1 -1
  112. package/dist/esm/lib/sparql11HelperTypes.js.map +1 -1
  113. package/dist/esm/lib/validation/validators.d.ts +2 -2
  114. package/dist/esm/lib/validation/validators.js +61 -51
  115. package/dist/esm/lib/validation/validators.js.map +1 -1
  116. package/package.json +10 -10
@@ -1,282 +1,308 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var literals_exports = {};
30
- __export(literals_exports, {
31
- blankNode: () => blankNode,
32
- booleanLiteral: () => booleanLiteral,
33
- canCreateBlankNodes: () => canCreateBlankNodes,
34
- iri: () => iri,
35
- iriFull: () => iriFull,
36
- numericLiteral: () => numericLiteral,
37
- numericLiteralNegative: () => numericLiteralNegative,
38
- numericLiteralPositive: () => numericLiteralPositive,
39
- numericLiteralUnsigned: () => numericLiteralUnsigned,
40
- prefixedName: () => prefixedName,
41
- rdfLiteral: () => rdfLiteral,
42
- string: () => string,
43
- stringEscapedLexical: () => stringEscapedLexical,
44
- verbA: () => verbA
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
45
17
  });
46
- module.exports = __toCommonJS(literals_exports);
47
- var l = __toESM(require("../lexer/index.js"), 1);
48
- var import_utils = require("../utils.js");
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.verbA = exports.blankNode = exports.canCreateBlankNodes = exports.prefixedName = exports.iriFull = exports.iri = exports.string = exports.booleanLiteral = exports.numericLiteralNegative = exports.numericLiteralPositive = exports.numericLiteralUnsigned = exports.numericLiteral = exports.rdfLiteral = void 0;
37
+ exports.stringEscapedLexical = stringEscapedLexical;
38
+ const l = __importStar(require("../lexer/index.js"));
39
+ const utils_js_1 = require("../utils.js");
49
40
  function stringEscapedLexical(str) {
50
- const lexical = str.replaceAll(/["\\\t\n\r\b\f]/gu, (char) => {
51
- switch (char) {
52
- case " ":
53
- return "\\t";
54
- case "\n":
55
- return "\\n";
56
- case "\r":
57
- return "\\r";
58
- case "\b":
59
- return "\\b";
60
- case "\f":
61
- return "\\f";
62
- case '"':
63
- return '\\"';
64
- case "\\":
65
- return "\\\\";
66
- default:
67
- return char;
68
- }
69
- });
70
- return `"${lexical}"`;
71
- }
72
- const rdfLiteral = {
73
- name: "rdfLiteral",
74
- impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {
75
- const value = SUBRULE1(string);
76
- return OPTION(() => OR([
77
- { ALT: () => {
78
- const lang = CONSUME(l.terminals.langTag);
79
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(value, lang), value.value, lang.image.slice(1).toLowerCase()));
80
- } },
81
- { ALT: () => {
82
- CONSUME(l.symbols.hathat);
83
- const iriVal = SUBRULE1(iri);
84
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(value, iriVal), value.value, iriVal));
85
- } }
86
- ])) ?? value;
87
- },
88
- gImpl: ({ SUBRULE, PRINT, PRINT_WORD }) => (ast, { astFactory }) => {
89
- astFactory.printFilter(ast, () => {
90
- PRINT_WORD("");
91
- PRINT(stringEscapedLexical(ast.value));
41
+ const lexical = str.replaceAll(/["\\\t\n\r\b\f]/gu, (char) => {
42
+ switch (char) {
43
+ case '\t':
44
+ return '\\t';
45
+ case '\n':
46
+ return '\\n';
47
+ case '\r':
48
+ return '\\r';
49
+ case '\b':
50
+ return '\\b';
51
+ case '\f':
52
+ return '\\f';
53
+ case '"':
54
+ return '\\"';
55
+ case '\\':
56
+ return '\\\\';
57
+ default:
58
+ return char;
59
+ }
92
60
  });
93
- if (ast.langOrIri) {
94
- if (typeof ast.langOrIri === "string") {
95
- astFactory.printFilter(ast, () => PRINT("@", ast.langOrIri));
96
- } else {
97
- astFactory.printFilter(ast, () => PRINT("^^"));
98
- SUBRULE(iri, ast.langOrIri);
99
- }
100
- }
101
- }
61
+ return `"${lexical}"`;
62
+ }
63
+ /**
64
+ * [[120]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)
65
+ */
66
+ exports.rdfLiteral = {
67
+ name: 'rdfLiteral',
68
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {
69
+ const value = SUBRULE1(exports.string);
70
+ return OPTION(() => OR([
71
+ { ALT: () => {
72
+ const lang = CONSUME(l.terminals.langTag);
73
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(value, lang), value.value, lang.image.slice(1).toLowerCase()));
74
+ } },
75
+ { ALT: () => {
76
+ CONSUME(l.symbols.hathat);
77
+ const iriVal = SUBRULE1(exports.iri);
78
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(value, iriVal), value.value, iriVal));
79
+ } },
80
+ ])) ?? value;
81
+ },
82
+ gImpl: ({ SUBRULE, PRINT, PRINT_WORD }) => (ast, { astFactory }) => {
83
+ if (!ast.langOrIri || typeof ast.langOrIri === 'string') {
84
+ // String or langdir string - no sub loc.
85
+ astFactory.printFilter(ast, () => {
86
+ PRINT_WORD('');
87
+ PRINT(stringEscapedLexical(ast.value));
88
+ });
89
+ if (typeof ast.langOrIri === 'string') {
90
+ astFactory.printFilter(ast, () => PRINT('@', ast.langOrIri));
91
+ }
92
+ }
93
+ else if (astFactory.isSourceLocationNoMaterialize(ast.langOrIri.loc)) {
94
+ // You have a typed literal. -- If type is not materialized, print raw
95
+ astFactory.printFilter(ast, () => {
96
+ PRINT_WORD(ast.value);
97
+ });
98
+ }
99
+ else {
100
+ astFactory.printFilter(ast, () => {
101
+ PRINT_WORD('');
102
+ PRINT(stringEscapedLexical(ast.value), '^^');
103
+ });
104
+ SUBRULE(exports.iri, ast.langOrIri);
105
+ }
106
+ },
102
107
  };
103
- const numericLiteral = {
104
- name: "numericLiteral",
105
- impl: ({ SUBRULE, OR }) => () => OR([
106
- { ALT: () => SUBRULE(numericLiteralUnsigned) },
107
- { ALT: () => SUBRULE(numericLiteralPositive) },
108
- { ALT: () => SUBRULE(numericLiteralNegative) }
109
- ])
108
+ /**
109
+ * Parses a numeric literal.
110
+ * [[130]](https://www.w3.org/TR/sparql11-query/#rNumericLiteral)
111
+ */
112
+ exports.numericLiteral = {
113
+ name: 'numericLiteral',
114
+ impl: ({ SUBRULE, OR }) => () => OR([
115
+ { ALT: () => SUBRULE(exports.numericLiteralUnsigned) },
116
+ { ALT: () => SUBRULE(exports.numericLiteralPositive) },
117
+ { ALT: () => SUBRULE(exports.numericLiteralNegative) },
118
+ ]),
110
119
  };
111
- const numericLiteralUnsigned = {
112
- name: "numericLiteralUnsigned",
113
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
114
- const parsed = OR([
115
- { ALT: () => [CONSUME(l.terminals.integer), import_utils.CommonIRIs.INTEGER] },
116
- { ALT: () => [CONSUME(l.terminals.decimal), import_utils.CommonIRIs.DECIMAL] },
117
- { ALT: () => [CONSUME(l.terminals.double), import_utils.CommonIRIs.DOUBLE] }
118
- ]);
119
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
120
- }
120
+ /**
121
+ * Parses an unsigned numeric literal.
122
+ * [[131]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralUnsigned)
123
+ */
124
+ exports.numericLiteralUnsigned = {
125
+ name: 'numericLiteralUnsigned',
126
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
127
+ const parsed = OR([
128
+ { ALT: () => [CONSUME(l.terminals.integer), utils_js_1.CommonIRIs.INTEGER] },
129
+ { ALT: () => [CONSUME(l.terminals.decimal), utils_js_1.CommonIRIs.DECIMAL] },
130
+ { ALT: () => [CONSUME(l.terminals.double), utils_js_1.CommonIRIs.DOUBLE] },
131
+ ]);
132
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocation(), parsed[1])));
133
+ },
121
134
  };
122
- const numericLiteralPositive = {
123
- name: "numericLiteralPositive",
124
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
125
- const parsed = OR([
126
- { ALT: () => [CONSUME(l.terminals.integerPositive), import_utils.CommonIRIs.INTEGER] },
127
- { ALT: () => [CONSUME(l.terminals.decimalPositive), import_utils.CommonIRIs.DECIMAL] },
128
- { ALT: () => [CONSUME(l.terminals.doublePositive), import_utils.CommonIRIs.DOUBLE] }
129
- ]);
130
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
131
- }
135
+ /**
136
+ * Parses a positive numeric literal.
137
+ * [[132]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralPositive)
138
+ */
139
+ exports.numericLiteralPositive = {
140
+ name: 'numericLiteralPositive',
141
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
142
+ const parsed = OR([
143
+ { ALT: () => [CONSUME(l.terminals.integerPositive), utils_js_1.CommonIRIs.INTEGER] },
144
+ { ALT: () => [CONSUME(l.terminals.decimalPositive), utils_js_1.CommonIRIs.DECIMAL] },
145
+ { ALT: () => [CONSUME(l.terminals.doublePositive), utils_js_1.CommonIRIs.DOUBLE] },
146
+ ]);
147
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocation(), parsed[1])));
148
+ },
132
149
  };
133
- const numericLiteralNegative = {
134
- name: "numericLiteralNegative",
135
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
136
- const parsed = OR([
137
- { ALT: () => [CONSUME(l.terminals.integerNegative), import_utils.CommonIRIs.INTEGER] },
138
- { ALT: () => [CONSUME(l.terminals.decimalNegative), import_utils.CommonIRIs.DECIMAL] },
139
- { ALT: () => [CONSUME(l.terminals.doubleNegative), import_utils.CommonIRIs.DOUBLE] }
140
- ]);
141
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
142
- }
150
+ /**
151
+ * Parses a negative numeric literal.
152
+ * [[133]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralNegative)
153
+ */
154
+ exports.numericLiteralNegative = {
155
+ name: 'numericLiteralNegative',
156
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
157
+ const parsed = OR([
158
+ { ALT: () => [CONSUME(l.terminals.integerNegative), utils_js_1.CommonIRIs.INTEGER] },
159
+ { ALT: () => [CONSUME(l.terminals.decimalNegative), utils_js_1.CommonIRIs.DECIMAL] },
160
+ { ALT: () => [CONSUME(l.terminals.doubleNegative), utils_js_1.CommonIRIs.DOUBLE] },
161
+ ]);
162
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocation(), parsed[1])));
163
+ },
143
164
  };
144
- const booleanLiteral = {
145
- name: "booleanLiteral",
146
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
147
- const token = OR([
148
- { ALT: () => CONSUME(l.true_) },
149
- { ALT: () => CONSUME(l.false_) }
150
- ]);
151
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(token), token.image.toLowerCase(), C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), import_utils.CommonIRIs.BOOLEAN)));
152
- }
165
+ /**
166
+ * Parses a boolean literal.
167
+ * [[134]](https://www.w3.org/TR/sparql11-query/#rBooleanLiteral)
168
+ */
169
+ exports.booleanLiteral = {
170
+ name: 'booleanLiteral',
171
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
172
+ const token = OR([
173
+ { ALT: () => CONSUME(l.true_) },
174
+ { ALT: () => CONSUME(l.false_) },
175
+ ]);
176
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(token), token.image.toLowerCase(), C.astFactory.termNamed(C.astFactory.sourceLocation(), utils_js_1.CommonIRIs.BOOLEAN)));
177
+ },
153
178
  };
154
- const string = {
155
- name: "string",
156
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
157
- const x = OR([
158
- { ALT: () => {
159
- const token = CONSUME(l.terminals.stringLiteral1);
160
- return [token, token.image.slice(1, -1)];
161
- } },
162
- { ALT: () => {
163
- const token = CONSUME(l.terminals.stringLiteral2);
164
- return [token, token.image.slice(1, -1)];
165
- } },
166
- { ALT: () => {
167
- const token = CONSUME(l.terminals.stringLiteralLong1);
168
- return [token, token.image.slice(3, -3)];
169
- } },
170
- { ALT: () => {
171
- const token = CONSUME(l.terminals.stringLiteralLong2);
172
- return [token, token.image.slice(3, -3)];
173
- } }
174
- ]);
175
- return ACTION(() => {
176
- const F = C.astFactory;
177
- const value = x[1].replaceAll(/\\([tnrbf"'\\])/gu, (_, char) => {
178
- switch (char) {
179
- case "t":
180
- return " ";
181
- case "n":
182
- return "\n";
183
- case "r":
184
- return "\r";
185
- case "b":
186
- return "\b";
187
- case "f":
188
- return "\f";
189
- default:
190
- return char;
191
- }
192
- });
193
- return F.termLiteral(F.sourceLocation(x[0]), value);
194
- });
195
- }
179
+ /**
180
+ * Parses a string literal.
181
+ * [[135]](https://www.w3.org/TR/sparql11-query/#rString)
182
+ */
183
+ exports.string = {
184
+ name: 'string',
185
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
186
+ const x = OR([
187
+ { ALT: () => {
188
+ const token = CONSUME(l.terminals.stringLiteral1);
189
+ return [token, token.image.slice(1, -1)];
190
+ } },
191
+ { ALT: () => {
192
+ const token = CONSUME(l.terminals.stringLiteral2);
193
+ return [token, token.image.slice(1, -1)];
194
+ } },
195
+ { ALT: () => {
196
+ const token = CONSUME(l.terminals.stringLiteralLong1);
197
+ return [token, token.image.slice(3, -3)];
198
+ } },
199
+ { ALT: () => {
200
+ const token = CONSUME(l.terminals.stringLiteralLong2);
201
+ return [token, token.image.slice(3, -3)];
202
+ } },
203
+ ]);
204
+ // Handle string escapes (19.7). (19.2 is handled at input level.)
205
+ return ACTION(() => {
206
+ const F = C.astFactory;
207
+ const value = x[1].replaceAll(/\\([tnrbf"'\\])/gu, (_, char) => {
208
+ switch (char) {
209
+ case 't':
210
+ return '\t';
211
+ case 'n':
212
+ return '\n';
213
+ case 'r':
214
+ return '\r';
215
+ case 'b':
216
+ return '\b';
217
+ case 'f':
218
+ return '\f';
219
+ default:
220
+ return char;
221
+ }
222
+ });
223
+ return F.termLiteral(F.sourceLocation(x[0]), value);
224
+ });
225
+ },
196
226
  };
197
- const iri = {
198
- name: "iri",
199
- impl: ({ SUBRULE, OR }) => () => OR([
200
- { ALT: () => SUBRULE(iriFull) },
201
- { ALT: () => SUBRULE(prefixedName) }
202
- ]),
203
- gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => F.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
227
+ /**
228
+ * Parses a named node, either as an IRI or as a prefixed name.
229
+ * [[136]](https://www.w3.org/TR/sparql11-query/#riri)
230
+ */
231
+ exports.iri = {
232
+ name: 'iri',
233
+ impl: ({ SUBRULE, OR }) => () => OR([
234
+ { ALT: () => SUBRULE(exports.iriFull) },
235
+ { ALT: () => SUBRULE(exports.prefixedName) },
236
+ ]),
237
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => F.isTermNamedPrefixed(ast) ? SUBRULE(exports.prefixedName, ast) : SUBRULE(exports.iriFull, ast),
204
238
  };
205
- const iriFull = {
206
- name: "iriFull",
207
- impl: ({ ACTION, CONSUME }) => (C) => {
208
- const iriToken = CONSUME(l.terminals.iriRef);
209
- return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));
210
- },
211
- gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {
212
- F.printFilter(ast, () => PRINT("<", ast.value, ">"));
213
- }
239
+ exports.iriFull = {
240
+ name: 'iriFull',
241
+ impl: ({ ACTION, CONSUME }) => (C) => {
242
+ const iriToken = CONSUME(l.terminals.iriRef);
243
+ return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));
244
+ },
245
+ gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {
246
+ F.printFilter(ast, () => PRINT('<', ast.value, '>'));
247
+ },
214
248
  };
215
- const prefixedName = {
216
- name: "prefixedName",
217
- impl: ({ ACTION, CONSUME, OR }) => (C) => OR([
218
- { ALT: () => {
219
- const longName = CONSUME(l.terminals.pNameLn);
220
- return ACTION(() => {
221
- const [prefix, localName] = longName.image.split(":");
222
- return C.astFactory.termNamed(C.astFactory.sourceLocation(longName), localName, prefix);
223
- });
224
- } },
225
- { ALT: () => {
226
- const shortName = CONSUME(l.terminals.pNameNs);
227
- return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(shortName), "", shortName.image.slice(0, -1)));
228
- } }
229
- ]),
230
- gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {
231
- F.printFilter(ast, () => PRINT(ast.prefix, ":", ast.value));
232
- }
249
+ /**
250
+ * Parses a named node with a prefix. Looks up the prefix in the context and returns the full IRI.
251
+ * [[137]](https://www.w3.org/TR/sparql11-query/#rPrefixedName)
252
+ */
253
+ exports.prefixedName = {
254
+ name: 'prefixedName',
255
+ impl: ({ ACTION, CONSUME, OR }) => C => OR([
256
+ { ALT: () => {
257
+ const longName = CONSUME(l.terminals.pNameLn);
258
+ return ACTION(() => {
259
+ const [prefix, localName] = longName.image.split(':');
260
+ return C.astFactory.termNamed(C.astFactory.sourceLocation(longName), localName, prefix);
261
+ });
262
+ } },
263
+ { ALT: () => {
264
+ const shortName = CONSUME(l.terminals.pNameNs);
265
+ return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(shortName), '', shortName.image.slice(0, -1)));
266
+ } },
267
+ ]),
268
+ gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {
269
+ F.printFilter(ast, () => PRINT(ast.prefix, ':', ast.value));
270
+ },
233
271
  };
234
- const canCreateBlankNodes = Symbol("canCreateBlankNodes");
235
- const blankNode = {
236
- name: "blankNode",
237
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
238
- const result = OR([
239
- { ALT: () => {
240
- const labelToken = CONSUME(l.terminals.blankNodeLabel);
241
- return ACTION(() => C.astFactory.termBlank(labelToken.image.slice(2), C.astFactory.sourceLocation(labelToken)));
242
- } },
243
- { ALT: () => {
244
- const anonToken = CONSUME(l.terminals.anon);
245
- return ACTION(() => C.astFactory.termBlank(void 0, C.astFactory.sourceLocation(anonToken)));
246
- } }
247
- ]);
248
- ACTION(() => {
249
- if (!C.parseMode.has("canCreateBlankNodes")) {
250
- throw new Error("Blank nodes are not allowed in this context");
251
- }
252
- });
253
- return result;
254
- },
255
- gImpl: ({ PRINT }) => (ast, { astFactory }) => {
256
- astFactory.printFilter(ast, () => PRINT("_:", ast.label.replace(/^e_/u, "")));
257
- }
272
+ exports.canCreateBlankNodes = Symbol('canCreateBlankNodes');
273
+ /**
274
+ * Parses blank note and throws an error if 'canCreateBlankNodes' is not in the current parserMode.
275
+ * [[138]](https://www.w3.org/TR/sparql11-query/#rBlankNode)
276
+ */
277
+ exports.blankNode = {
278
+ name: 'blankNode',
279
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
280
+ const result = OR([
281
+ { ALT: () => {
282
+ const labelToken = CONSUME(l.terminals.blankNodeLabel);
283
+ return ACTION(() => C.astFactory.termBlank(labelToken.image.slice(2), C.astFactory.sourceLocation(labelToken)));
284
+ } },
285
+ { ALT: () => {
286
+ const anonToken = CONSUME(l.terminals.anon);
287
+ return ACTION(() => C.astFactory.termBlank(undefined, C.astFactory.sourceLocation(anonToken)));
288
+ } },
289
+ ]);
290
+ ACTION(() => {
291
+ if (!C.parseMode.has('canCreateBlankNodes')) {
292
+ throw new Error('Blank nodes are not allowed in this context');
293
+ }
294
+ });
295
+ return result;
296
+ },
297
+ gImpl: ({ PRINT }) => (ast, { astFactory }) => {
298
+ astFactory.printFilter(ast, () => PRINT('_:', ast.label.replace(/^e_/u, '')));
299
+ },
258
300
  };
259
- const verbA = {
260
- name: "VerbA",
261
- impl: ({ ACTION, CONSUME }) => (C) => {
262
- const token = CONSUME(l.a);
263
- return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), import_utils.CommonIRIs.TYPE, void 0));
264
- }
301
+ exports.verbA = {
302
+ name: 'VerbA',
303
+ impl: ({ ACTION, CONSUME }) => (C) => {
304
+ const token = CONSUME(l.a);
305
+ return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), utils_js_1.CommonIRIs.TYPE, undefined));
306
+ },
265
307
  };
266
- // Annotate the CommonJS export names for ESM import in node:
267
- 0 && (module.exports = {
268
- blankNode,
269
- booleanLiteral,
270
- canCreateBlankNodes,
271
- iri,
272
- iriFull,
273
- numericLiteral,
274
- numericLiteralNegative,
275
- numericLiteralPositive,
276
- numericLiteralUnsigned,
277
- prefixedName,
278
- rdfLiteral,
279
- string,
280
- stringEscapedLexical,
281
- verbA
282
- });
308
+ //# sourceMappingURL=literals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../../../lib/grammar/literals.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IToken } from '@traqula/chevrotain';\nimport * as l from '../lexer/index.js';\nimport type { SparqlGrammarRule, SparqlRule } from '../sparql11HelperTypes.js';\nimport type {\n TermBlank,\n TermIri,\n TermIriFull,\n TermIriPrefixed,\n TermLiteral,\n TermLiteralStr,\n TermLiteralTyped,\n} from '../Sparql11types.js';\nimport { CommonIRIs } from '../utils.js';\n\nexport function stringEscapedLexical(str: string): string {\n const lexical = str.replaceAll(/[\"\\\\\\t\\n\\r\\b\\f]/gu, (char) => {\n switch (char) {\n case '\\t':\n return '\\\\t';\n case '\\n':\n return '\\\\n';\n case '\\r':\n return '\\\\r';\n case '\\b':\n return '\\\\b';\n case '\\f':\n return '\\\\f';\n case '\"':\n return '\\\\\"';\n case '\\\\':\n return '\\\\\\\\';\n default:\n return char;\n }\n });\n return `\"${lexical}\"`;\n}\n\n/**\n * [[120]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)\n */\nexport const rdfLiteral: SparqlRule<'rdfLiteral', TermLiteral> = <const> {\n name: 'rdfLiteral',\n impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {\n const value = SUBRULE1(string);\n return OPTION(() => OR<TermLiteral>([\n { ALT: () => {\n const lang = CONSUME(l.terminals.langTag);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, lang),\n value.value,\n lang.image.slice(1).toLowerCase(),\n ));\n } },\n { ALT: () => {\n CONSUME(l.symbols.hathat);\n const iriVal = SUBRULE1(iri);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, iriVal),\n value.value,\n iriVal,\n ));\n } },\n ])) ?? value;\n },\n gImpl: ({ SUBRULE, PRINT, PRINT_WORD }) => (ast, { astFactory }) => {\n if (!ast.langOrIri || typeof ast.langOrIri === 'string') {\n // String or langdir string - no sub loc.\n astFactory.printFilter(ast, () => {\n PRINT_WORD('');\n PRINT(stringEscapedLexical(ast.value));\n });\n if (typeof ast.langOrIri === 'string') {\n astFactory.printFilter(ast, () => PRINT('@', ast.langOrIri));\n }\n } else if (astFactory.isSourceLocationNoMaterialize(ast.langOrIri.loc)) {\n // You have a typed literal. -- If type is not materialized, print raw\n astFactory.printFilter(ast, () => {\n PRINT_WORD(ast.value);\n });\n } else {\n astFactory.printFilter(ast, () => {\n PRINT_WORD('');\n PRINT(stringEscapedLexical(ast.value), '^^');\n });\n SUBRULE(iri, ast.langOrIri);\n }\n },\n};\n\n/**\n * Parses a numeric literal.\n * [[130]](https://www.w3.org/TR/sparql11-query/#rNumericLiteral)\n */\nexport const numericLiteral: SparqlGrammarRule<'numericLiteral', TermLiteralTyped> = <const> {\n name: 'numericLiteral',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(numericLiteralUnsigned) },\n { ALT: () => SUBRULE(numericLiteralPositive) },\n { ALT: () => SUBRULE(numericLiteralNegative) },\n ]),\n};\n\n/**\n * Parses an unsigned numeric literal.\n * [[131]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralUnsigned)\n */\nexport const numericLiteralUnsigned: SparqlGrammarRule<'numericLiteralUnsigned', TermLiteralTyped> = <const> {\n name: 'numericLiteralUnsigned',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const parsed = OR<[IToken, string]>([\n { ALT: () => <const> [ CONSUME(l.terminals.integer), CommonIRIs.INTEGER ]},\n { ALT: () => <const> [ CONSUME(l.terminals.decimal), CommonIRIs.DECIMAL ]},\n { ALT: () => <const> [ CONSUME(l.terminals.double), CommonIRIs.DOUBLE ]},\n ]);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(parsed[0]),\n parsed[0].image,\n C.astFactory.termNamed(C.astFactory.sourceLocation(), parsed[1]),\n ));\n },\n};\n\n/**\n * Parses a positive numeric literal.\n * [[132]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralPositive)\n */\nexport const numericLiteralPositive: SparqlGrammarRule<'numericLiteralPositive', TermLiteralTyped> = <const> {\n name: 'numericLiteralPositive',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const parsed = OR<[IToken, string]>([\n { ALT: () => <const> [ CONSUME(l.terminals.integerPositive), CommonIRIs.INTEGER ]},\n { ALT: () => <const> [ CONSUME(l.terminals.decimalPositive), CommonIRIs.DECIMAL ]},\n { ALT: () => <const> [ CONSUME(l.terminals.doublePositive), CommonIRIs.DOUBLE ]},\n ]);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(parsed[0]),\n parsed[0].image,\n C.astFactory.termNamed(C.astFactory.sourceLocation(), parsed[1]),\n ));\n },\n};\n\n/**\n * Parses a negative numeric literal.\n * [[133]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralNegative)\n */\nexport const numericLiteralNegative: SparqlGrammarRule<'numericLiteralNegative', TermLiteralTyped> = <const> {\n name: 'numericLiteralNegative',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const parsed = OR<[IToken, string]>([\n { ALT: () => <const> [ CONSUME(l.terminals.integerNegative), CommonIRIs.INTEGER ]},\n { ALT: () => <const> [ CONSUME(l.terminals.decimalNegative), CommonIRIs.DECIMAL ]},\n { ALT: () => <const> [ CONSUME(l.terminals.doubleNegative), CommonIRIs.DOUBLE ]},\n ]);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(parsed[0]),\n parsed[0].image,\n C.astFactory.termNamed(C.astFactory.sourceLocation(), parsed[1]),\n ));\n },\n};\n\n/**\n * Parses a boolean literal.\n * [[134]](https://www.w3.org/TR/sparql11-query/#rBooleanLiteral)\n */\nexport const booleanLiteral: SparqlGrammarRule<'booleanLiteral', TermLiteralTyped> = <const> {\n name: 'booleanLiteral',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const token = OR([\n { ALT: () => CONSUME(l.true_) },\n { ALT: () => CONSUME(l.false_) },\n ]);\n\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(token),\n token.image.toLowerCase(),\n C.astFactory.termNamed(C.astFactory.sourceLocation(), CommonIRIs.BOOLEAN),\n ));\n },\n};\n\n/**\n * Parses a string literal.\n * [[135]](https://www.w3.org/TR/sparql11-query/#rString)\n */\nexport const string: SparqlGrammarRule<'string', TermLiteralStr> = <const> {\n name: 'string',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const x = OR([\n { ALT: () => {\n const token = CONSUME(l.terminals.stringLiteral1);\n return <const>[ token, token.image.slice(1, -1) ];\n } },\n { ALT: () => {\n const token = CONSUME(l.terminals.stringLiteral2);\n return <const>[ token, token.image.slice(1, -1) ];\n } },\n { ALT: () => {\n const token = CONSUME(l.terminals.stringLiteralLong1);\n return <const>[ token, token.image.slice(3, -3) ];\n } },\n { ALT: () => {\n const token = CONSUME(l.terminals.stringLiteralLong2);\n return <const>[ token, token.image.slice(3, -3) ];\n } },\n ]);\n // Handle string escapes (19.7). (19.2 is handled at input level.)\n return ACTION(() => {\n const F = C.astFactory;\n const value = x[1].replaceAll(/\\\\([tnrbf\"'\\\\])/gu, (_, char: string) => {\n switch (char) {\n case 't':\n return '\\t';\n case 'n':\n return '\\n';\n case 'r':\n return '\\r';\n case 'b':\n return '\\b';\n case 'f':\n return '\\f';\n default:\n return char;\n }\n });\n return F.termLiteral(F.sourceLocation(x[0]), value);\n });\n },\n};\n\n/**\n * Parses a named node, either as an IRI or as a prefixed name.\n * [[136]](https://www.w3.org/TR/sparql11-query/#riri)\n */\nexport const iri: SparqlRule<'iri', TermIri> = <const> {\n name: 'iri',\n impl: ({ SUBRULE, OR }) => () => OR<TermIri>([\n { ALT: () => SUBRULE(iriFull) },\n { ALT: () => SUBRULE(prefixedName) },\n ]),\n gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) =>\n F.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast),\n};\n\nexport const iriFull: SparqlRule<'iriFull', TermIriFull> = <const> {\n name: 'iriFull',\n impl: ({ ACTION, CONSUME }) => (C) => {\n const iriToken = CONSUME(l.terminals.iriRef);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));\n },\n gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT('<', ast.value, '>'));\n },\n};\n\n/**\n * Parses a named node with a prefix. Looks up the prefix in the context and returns the full IRI.\n * [[137]](https://www.w3.org/TR/sparql11-query/#rPrefixedName)\n */\nexport const prefixedName: SparqlRule<'prefixedName', TermIriPrefixed> = <const> {\n name: 'prefixedName',\n impl: ({ ACTION, CONSUME, OR }) => C => OR([\n { ALT: () => {\n const longName = CONSUME(l.terminals.pNameLn);\n return ACTION(() => {\n const [ prefix, localName ] = longName.image.split(':');\n return C.astFactory.termNamed(C.astFactory.sourceLocation(longName), localName, prefix);\n });\n } },\n { ALT: () => {\n const shortName = CONSUME(l.terminals.pNameNs);\n return ACTION(() => C.astFactory.termNamed(\n C.astFactory.sourceLocation(shortName),\n '',\n shortName.image.slice(0, -1),\n ));\n } },\n ]),\n gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT(ast.prefix, ':', ast.value));\n },\n};\n\nexport const canCreateBlankNodes = Symbol('canCreateBlankNodes');\n\n/**\n * Parses blank note and throws an error if 'canCreateBlankNodes' is not in the current parserMode.\n * [[138]](https://www.w3.org/TR/sparql11-query/#rBlankNode)\n */\nexport const blankNode: SparqlRule<'blankNode', TermBlank> = <const> {\n name: 'blankNode',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const result = OR([\n { ALT: () => {\n const labelToken = CONSUME(l.terminals.blankNodeLabel);\n return ACTION(() =>\n C.astFactory.termBlank(labelToken.image.slice(2), C.astFactory.sourceLocation(labelToken)));\n } },\n { ALT: () => {\n const anonToken = CONSUME(l.terminals.anon);\n return ACTION(() => C.astFactory.termBlank(undefined, C.astFactory.sourceLocation(anonToken)));\n } },\n ]);\n ACTION(() => {\n if (!C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Blank nodes are not allowed in this context');\n }\n });\n return result;\n },\n gImpl: ({ PRINT }) => (ast, { astFactory }) => {\n astFactory.printFilter(ast, () => PRINT('_:', ast.label.replace(/^e_/u, '')));\n },\n};\n\nexport const verbA: SparqlGrammarRule<'VerbA', TermIriFull> = <const> {\n name: 'VerbA',\n impl: ({ ACTION, CONSUME }) => (C) => {\n const token = CONSUME(l.a);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), CommonIRIs.TYPE, undefined));\n },\n};\n"]}