@traqula/rules-sparql-1-2 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/grammar.d.ts +1 -0
- package/lib/grammar.js +19 -0
- package/lib/grammar.js.map +1 -1
- package/lib/index.cjs +33 -7
- package/lib/lexer.d.ts +1 -1
- package/package.json +4 -4
package/lib/grammar.d.ts
CHANGED
|
@@ -179,6 +179,7 @@ export declare const builtInCall: typeof S11.builtInCall;
|
|
|
179
179
|
* [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)
|
|
180
180
|
*/
|
|
181
181
|
export declare const rdfLiteral: SparqlGrammarRule<'rdfLiteral', RuleDefReturn<typeof S11.rdfLiteral>>;
|
|
182
|
+
export declare const unaryExpression: SparqlGrammarRule<(typeof S11.unaryExpression)['name'], Expression>;
|
|
182
183
|
/**
|
|
183
184
|
* OVERRIDING RULE: {@link S11.triplesBlock}.
|
|
184
185
|
*/
|
package/lib/grammar.js
CHANGED
|
@@ -542,6 +542,25 @@ export const rdfLiteral = {
|
|
|
542
542
|
])) ?? value;
|
|
543
543
|
},
|
|
544
544
|
};
|
|
545
|
+
export const unaryExpression = {
|
|
546
|
+
name: 'unaryExpression',
|
|
547
|
+
impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => C => OR1([
|
|
548
|
+
{ ALT: () => SUBRULE1(primaryExpression) },
|
|
549
|
+
{ ALT: () => {
|
|
550
|
+
const operator = CONSUME(l11.symbols.exclamation);
|
|
551
|
+
const expr = SUBRULE1(unaryExpression);
|
|
552
|
+
return ACTION(() => C.factory.expressionOperation('!', [expr], C.factory.sourceLocation(operator, expr)));
|
|
553
|
+
} },
|
|
554
|
+
{ ALT: () => {
|
|
555
|
+
const operator = OR2([
|
|
556
|
+
{ ALT: () => CONSUME(l11.symbols.opPlus) },
|
|
557
|
+
{ ALT: () => CONSUME(l11.symbols.opMinus) },
|
|
558
|
+
]);
|
|
559
|
+
const expr = SUBRULE2(primaryExpression);
|
|
560
|
+
return ACTION(() => C.factory.expressionOperation(operator.image === '!' ? '!' : (operator.image === '+' ? 'UPLUS' : 'UMINUS'), [expr], C.factory.sourceLocation(operator, expr)));
|
|
561
|
+
} },
|
|
562
|
+
]),
|
|
563
|
+
};
|
|
545
564
|
/**
|
|
546
565
|
* OVERRIDING RULE: {@link S11.triplesBlock}.
|
|
547
566
|
*/
|
package/lib/grammar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["grammar.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * This module will define patch rules that should be used in combination with the sparql11 grammar to create\n * a sparql12 grammar.\n * Rules in this module redefine the return type of core grammar rules.\n * It is therefore essential that the parser retypes the rules from the core grammar.\n */\nimport type { RuleDefReturn, Wrap } from '@traqula/core';\nimport { CommonIRIs, funcExpr1, funcExpr3, gram as S11, lex as l11 } from '@traqula/rules-sparql-1-1';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport * as l12 from './lexer';\nimport type { SparqlGeneratorRule, SparqlGrammarRule, SparqlRule } from './sparql12HelperTypes';\nimport type {\n Annotation,\n ContextDefinition,\n ContextDefinitionVersion,\n Expression,\n GraphNode,\n GraphTerm,\n PatternBgp,\n Term,\n TermBlank,\n TermIri,\n TermLiteral,\n TermTriple,\n TermVariable,\n TripleCollectionBlankNodeProperties,\n TripleCollectionReifiedTriple,\n TripleNesting,\n} from './sparql12Types';\nimport { langTagHasCorrectRange } from './validators';\n\n/**\n *[[7]](https://www.w3.org/TR/sparql12-query/#rVersionDecl)\n */\nexport const versionDecl: SparqlRule<'versionDecl', ContextDefinitionVersion> = {\n name: 'versionDecl',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const versionToken = CONSUME(l12.version);\n const identifier = SUBRULE(versionSpecifier);\n return ACTION(() =>\n C.factory.contextDefinitionVersion(identifier.val, C.factory.sourceLocation(versionToken, identifier)));\n },\n gImpl: ({ PRINT_WORDS }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORDS('VERSION', `${S11.stringEscapedLexical(ast.version)}`);\n });\n },\n};\n\n/**\n * [[8]](https://www.w3.org/TR/sparql12-query/#rVersionSpecifier)\n */\nexport const versionSpecifier: SparqlGrammarRule<'versionSpecifier', Wrap<string>> = {\n name: 'versionSpecifier',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const token = OR([\n { ALT: () => CONSUME(l11.terminals.stringLiteral1) },\n { ALT: () => CONSUME(l11.terminals.stringLiteral2) },\n ]);\n return ACTION(() => C.factory.wrap(token.image.slice(1, -1), C.factory.sourceLocation(token)));\n },\n};\n\n/**\n * OVERRIDING RULE {@link S11.prologue}\n * [[4]](https://www.w3.org/TR/sparql12-query/#rPrologue)\n */\nexport const prologue: SparqlRule<'prologue', ContextDefinition[]> = {\n name: 'prologue',\n impl: ({ SUBRULE, MANY, OR }) => () => {\n const result: ContextDefinition[] = [];\n MANY(() => OR([\n { ALT: () => result.push(SUBRULE(S11.baseDecl)) },\n // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.\n // We might need to check this.\n { ALT: () => result.push(SUBRULE(S11.prefixDecl)) },\n { ALT: () => result.push(SUBRULE(versionDecl)) },\n ]));\n return result;\n },\n gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {\n for (const context of ast) {\n if (F.isContextDefinitionBase(context)) {\n SUBRULE(S11.baseDecl, context);\n } else if (F.isContextDefinitionPrefix(context)) {\n SUBRULE(S11.prefixDecl, context);\n } else if (F.isContextDefinitionVersion(context)) {\n SUBRULE(versionDecl, context);\n }\n }\n },\n};\n\nfunction reifiedTripleBlockImpl<T extends string>(name: T, allowPath: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE }) => (C) => {\n const triple = SUBRULE(reifiedTriple);\n const properties = SUBRULE(\n allowPath ? S11.propertyListPath : S11.propertyList,\n ACTION(() => C.factory.dematerialized(triple.identifier)),\n );\n\n return ACTION(() => <T11.BasicGraphPattern> [ triple, ...properties ]);\n },\n };\n}\n/**\n * [[58]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlock) Used by triplesSameSubject\n */\nexport const reifiedTripleBlock = reifiedTripleBlockImpl('reifiedTripleBlock', false);\n/**\n * [[59]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlockPath) Used by TriplesSameSubjectPath\n */\nexport const reifiedTripleBlockPath = reifiedTripleBlockImpl('reifiedTripleBlockPath', true);\n\n/**\n * OVERRIDING RULE: {@link S11.dataBlockValue}.\n * [[69]](https://www.w3.org/TR/sparql12-query/#rDataBlockValue)\n */\nexport const dataBlockValue:\nSparqlGrammarRule<'dataBlockValue', RuleDefReturn<typeof S11.dataBlockValue> | TermTriple> = <const> {\n name: 'dataBlockValue',\n impl: $ => C => $.OR2<RuleDefReturn<typeof dataBlockValue>>([\n { ALT: () => S11.dataBlockValue.impl($)(C) },\n { ALT: () => $.SUBRULE(tripleTermData) },\n ]),\n};\n\n/**\n * [[70]](https://www.w3.org/TR/sparql12-query/#rReifier)\n */\nexport const reifier: SparqlGrammarRule<'reifier', Wrap<RuleDefReturn<typeof varOrReifierId>>> = <const> {\n name: 'reifier',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const tildeToken = CONSUME(l12.tilde);\n const reifier = OPTION(() => SUBRULE(varOrReifierId));\n return ACTION(() => {\n if (reifier === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.factory.wrap(\n reifier ?? C.factory.blankNode(undefined, C.factory.sourceLocation()),\n C.factory.sourceLocation(tildeToken, reifier),\n );\n });\n },\n};\n\n/**\n * [[71]](https://www.w3.org/TR/sparql12-query/#rVarOrReifierId)\n */\nexport const varOrReifierId: SparqlGrammarRule<'varOrReifierId', TermVariable | TermIri | TermBlank> =\n <const> {\n name: 'varOrReifierId',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof varOrReifierId>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(S11.blankNode) },\n ]),\n };\n\nfunction triplesSameSubjectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: $ => C => $.OR2([\n { ALT: () => allowPaths ?\n S11.triplesSameSubjectPath.impl($)(C) :\n S11.triplesSameSubject.impl($)(C) },\n { ALT: () => $.SUBRULE(allowPaths ? reifiedTripleBlockPath : reifiedTripleBlock) },\n ]),\n };\n}\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubject}\n * [[81]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubject)\n */\nexport const triplesSameSubject = triplesSameSubjectImpl('triplesSameSubject', false);\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubjectPath}\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath)\n */\nexport const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubjectPath', true);\n\nfunction objectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting, [TripleNesting['subject'], TripleNesting['predicate']]> {\n return <const>{\n name,\n impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {\n const objectVal = SUBRULE(allowPaths ? graphNodePath : graphNode);\n const annotationVal = SUBRULE(allowPaths ? annotationPath : annotation);\n\n return ACTION(() => {\n const F = C.factory;\n if (F.isPathPure(predicate) && annotationVal.length > 0) {\n throw new Error('Note 17 violation');\n }\n return F.annotatedTriple(\n subject,\n predicate,\n objectVal,\n annotationVal,\n );\n });\n },\n };\n}\n/**\n * OVERRIDING RULE: {@link S11.object}.\n * [[86]](https://www.w3.org/TR/sparql12-query/#rObject) Used by ObjectList\n */\nexport const object = objectImpl('object', false);\n/**\n * OVERRIDING RULE: {@link S11.objectPath}.\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath) Used by ObjectListPath\n */\nexport const objectPath = objectImpl('objectPath', true);\n\nfunction annotationImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, Annotation[]> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, OR, MANY }) => (C) => {\n const annotations: Annotation[] = [];\n let currentReifier: TermBlank | TermVariable | TermIri | undefined;\n\n MANY(() => {\n OR([\n { ALT: () => {\n const node = SUBRULE(reifier);\n annotations.push(node);\n currentReifier = node.val;\n } },\n { ALT: () => {\n ACTION(() => {\n if (!currentReifier && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n currentReifier = currentReifier ?? C.factory.blankNode(undefined, C.factory.sourceLocation());\n });\n const block = SUBRULE(\n allowPaths ? annotationBlockPath : annotationBlock,\n currentReifier!,\n );\n ACTION(() => {\n annotations.push(block);\n currentReifier = undefined;\n });\n } },\n ]);\n });\n return annotations;\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n for (const annotation of ast) {\n if (F.isTripleCollectionBlankNodeProperties(annotation)) {\n SUBRULE(annotationBlockPath, annotation);\n } else {\n F.printFilter(annotation, () => PRINT_WORD('~'));\n SUBRULE(graphNodePath, annotation.val);\n }\n }\n },\n };\n}\n/**\n * [[109]](https://www.w3.org/TR/sparql12-query/#rAnnotationPath)\n */\nexport const annotationPath = annotationImpl('annotationPath', true);\n/**\n * [[111]](https://www.w3.org/TR/sparql12-query/#rAnnotation)\n */\nexport const annotation = annotationImpl('annotation', false);\n\nfunction annotationBlockImpl<T extends string>(name: T, allowPaths: boolean):\n SparqlGrammarRule<T, TripleCollectionBlankNodeProperties, [TripleCollectionBlankNodeProperties['identifier']]> &\n SparqlGeneratorRule<T, TripleCollectionBlankNodeProperties> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C, arg) => {\n const open = CONSUME(l12.annotationOpen);\n const res = SUBRULE(\n allowPaths ? S11.propertyListPathNotEmpty : S11.propertyListNotEmpty,\n arg,\n );\n const close = CONSUME(l12.annotationClose);\n\n return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(\n arg,\n res,\n C.factory.sourceLocation(open, close),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('{|'));\n for (const triple of ast.triples) {\n HANDLE_LOC(triple, () => {\n if (F.isTerm(triple.predicate)) {\n SUBRULE(graphNodePath, triple.predicate);\n } else {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n }\n SUBRULE(graphNodePath, triple.object);\n\n F.printFilter(ast, () => PRINT_WORD(';'));\n });\n }\n F.printFilter(ast, () => PRINT_WORD('|}'));\n },\n };\n}\n/**\n * [[110]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlockPath)\n */\nexport const annotationBlockPath = annotationBlockImpl('annotationBlockPath', true);\n/**\n * [[112]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlock)\n */\nexport const annotationBlock = annotationBlockImpl('annotationBlock', false);\n\n/**\n * OVERRIDING RULE: {@link S11.graphNode}.\n * [[113]](https://www.w3.org/TR/sparql12-query/#rGraphNode)\n */\nexport const graphNode: SparqlGrammarRule<'graphNode', GraphNode> = <const> {\n name: 'graphNode',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNode>>([\n { ALT: () => S11.graphNode.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n};\n/**\n * OVERRIDING RULE: {@link S11.graphNodePath}.\n * [[114]](https://www.w3.org/TR/sparql12-query/#rGraphNodePath)\n */\nexport const graphNodePath: SparqlRule<'graphNodePath', GraphNode> = <const> {\n name: 'graphNodePath',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNodePath>>([\n { ALT: () => S11.graphNodePath.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n gImpl: $ => (ast, C) => {\n if (C.factory.isTripleCollectionReifiedTriple(ast)) {\n $.SUBRULE(reifiedTriple, ast);\n } else {\n S11.graphNodePath.gImpl($)(<T11.Term | T11.TripleCollection> ast, C);\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.varOrTerm}.\n * [[115]](https://www.w3.org/TR/sparql12-query/#rVarOrTerm)\n */\nexport const varOrTerm: SparqlGrammarRule<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ ACTION, SUBRULE, OR, CONSUME }) => C => OR<Term>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => {\n const token = CONSUME(l11.terminals.nil);\n return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.NIL));\n } },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n // Generation remains untouched - go through graphTerm\n};\n\n/**\n * [[116]](https://www.w3.org/TR/sparql12-query/#rReifiedTriple)\n */\nexport const reifiedTriple: SparqlRule<'reifiedTriple', TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTriple',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const open = CONSUME(l12.reificationOpen);\n const subject = SUBRULE(reifiedTripleSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(reifiedTripleObject);\n const reifierVal = OPTION(() => SUBRULE(reifier));\n const close = CONSUME(l12.reificationClose);\n\n return ACTION(() => {\n // A reifier would be auto generated in this case, but we are not allowed to use them.\n if (reifierVal === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.factory.tripleCollectionReifiedTriple(\n C.factory.sourceLocation(open, close),\n subject,\n predicate,\n object,\n reifierVal?.val,\n );\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<'));\n const triple = ast.triples[0];\n SUBRULE(graphNodePath, triple.subject);\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n SUBRULE(graphNodePath, triple.object);\n SUBRULE(annotationPath, [ F.wrap(ast.identifier, ast.identifier.loc) ]);\n F.printFilter(ast, () => PRINT_WORD('>>'));\n },\n};\n\n/**\n * [[117]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleSubject)\n */\nexport const reifiedTripleSubject:\nSparqlGrammarRule<'reifiedTripleSubject', Term | TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTripleSubject',\n impl: ({ OR, SUBRULE }) => C => OR<RuleDefReturn<typeof reifiedTripleSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(reifiedTriple) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[118]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleObject)\n */\nexport const reifiedTripleObject:\nSparqlGrammarRule<'reifiedTripleObject', RuleDefReturn<typeof reifiedTripleSubject>> =\n <const> {\n name: 'reifiedTripleObject',\n impl: reifiedTripleSubject.impl,\n };\n\n/**\n * [[119]](https://www.w3.org/TR/sparql12-query/#rTripleTerm)\n */\nexport const tripleTerm: SparqlRule<'tripleTerm', TermTriple> = <const> {\n name: 'tripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(tripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n return ACTION(() => C.factory.termTriple(subject, predicate, object, C.factory.sourceLocation(open, close)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<('));\n SUBRULE(graphNodePath, ast.subject);\n SUBRULE(graphNodePath, ast.predicate);\n SUBRULE(graphNodePath, ast.object);\n F.printFilter(ast, () => PRINT_WORD(')>>'));\n },\n};\n\n/**\n * [[120]](https://www.w3.org/TR/sparql12-query/#rTripleTermSubject)\n */\nexport const tripleTermSubject:\nSparqlGrammarRule<'tripleTermSubject', TermVariable | TermIri | TermLiteral | TermBlank | TermTriple> = <const> {\n name: 'tripleTermSubject',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof tripleTermSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[121]](https://www.w3.org/TR/sparql12-query/#rTripleTermObject)\n */\nexport const tripleTermObject:\nSparqlGrammarRule<'tripleTermObject', RuleDefReturn<typeof tripleTermSubject>> = <const> {\n name: 'tripleTermObject',\n impl: tripleTermSubject.impl,\n};\n\n/**\n * [[122]](https://www.w3.org/TR/sparql12-query/#rTripleTermData)\n */\nexport const tripleTermData: SparqlGrammarRule<'tripleTermData', TermTriple> = <const> {\n name: 'tripleTermData',\n impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermDataSubject);\n const predicate = OR([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => {\n const token = CONSUME(l11.a);\n return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.TYPE));\n } },\n ]);\n const object = SUBRULE(tripleTermDataObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.factory.termTriple(subject, predicate, object, C.factory.sourceLocation(open, close)));\n },\n};\n\n/**\n * [[123]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataSubject)\n */\nexport const tripleTermDataSubject: SparqlGrammarRule<'tripleTermDataSubject', TermIri | TermLiteral | TermTriple> =\n <const> {\n name: 'tripleTermDataSubject',\n impl: ({ OR, SUBRULE }) => () => OR<RuleDefReturn<typeof tripleTermDataSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(tripleTermData) },\n ]),\n };\n\n/**\n * [[124]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataObject)\n */\nexport const tripleTermDataObject:\nSparqlGrammarRule<'tripleTermDataObject', RuleDefReturn<typeof tripleTermDataSubject>> = <const> {\n name: 'tripleTermDataObject',\n impl: tripleTermDataSubject.impl,\n};\n\n/**\n * OVERRIDING RULE: {@link S11.primaryExpression}.\n * [[136]](https://www.w3.org/TR/sparql12-query/#rPrimaryExpression)\n */\nexport const primaryExpression: SparqlGrammarRule<'primaryExpression', Expression> = <const> {\n name: 'primaryExpression',\n impl: $ => C => $.OR2<Expression>([\n { ALT: () => S11.primaryExpression.impl($)(C) },\n { ALT: () => $.SUBRULE(exprTripleTerm) },\n ]),\n};\n\n/**\n * [[137]](https://www.w3.org/TR/sparql12-query/#rExprTripleTerm)\n */\nexport const exprTripleTerm: SparqlGrammarRule<'exprTripleTerm', TermTriple> = <const> {\n name: 'exprTripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(exprTripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(exprTripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.factory.termTriple(\n subject,\n predicate,\n object,\n C.factory.sourceLocation(open, close),\n ));\n },\n};\n\n/**\n * [[138]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermSubject)\n */\nexport const exprTripleTermSubject:\nSparqlGrammarRule<'exprTripleTermSubject', TermIri | TermVariable | TermLiteral | TermTriple> = <const> {\n name: 'exprTripleTermSubject',\n impl: ({ OR, SUBRULE }) => C =>\n OR<RuleDefReturn<typeof exprTripleTermSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(exprTripleTerm) },\n ]),\n};\n\n/**\n * [[139]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermObject)\n */\nexport const exprTripleTermObject:\nSparqlGrammarRule<'exprTripleTermObject', RuleDefReturn<typeof exprTripleTermSubject> | TermTriple> = <const> {\n name: 'exprTripleTermObject',\n impl: exprTripleTermSubject.impl,\n};\n\nexport const buildInLangDir = funcExpr1(l12.buildInLangDir);\nexport const buildInLangStrDir = funcExpr3(l12.buildInStrLangDir);\nexport const buildInHasLang = funcExpr1(l12.buildInHasLang);\nexport const buildInHasLangDir = funcExpr1(l12.buildInHasLangDir);\nexport const buildInIsTriple = funcExpr1(l12.buildInIsTRIPLE);\nexport const buildInTriple = funcExpr3(l12.buildInTRIPLE);\nexport const buildInSubject = funcExpr1(l12.buildInSUBJECT);\nexport const buildInPredicate = funcExpr1(l12.buildInPREDICATE);\nexport const buildInObject = funcExpr1(l12.buildInOBJECT);\n\n/**\n * OVERRIDING RULE: {@link S11.builtInCall}.\n * [[141]](https://www.w3.org/TR/sparql12-query/#rBuiltInCall)\n */\nexport const builtInCall: typeof S11.builtInCall = <const> {\n name: 'builtInCall',\n impl: $ => C => $.OR2<T11.Expression>([\n { ALT: () => S11.builtInCall.impl($)(C) },\n { ALT: () => $.SUBRULE(buildInLangDir) },\n { ALT: () => $.SUBRULE(buildInLangStrDir) },\n { ALT: () => $.SUBRULE(buildInHasLang) },\n { ALT: () => $.SUBRULE(buildInHasLangDir) },\n { ALT: () => $.SUBRULE(buildInIsTriple) },\n { ALT: () => $.SUBRULE(buildInTriple) },\n { ALT: () => $.SUBRULE(buildInSubject) },\n { ALT: () => $.SUBRULE(buildInPredicate) },\n { ALT: () => $.SUBRULE(buildInObject) },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.rdfLiteral}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const rdfLiteral: SparqlGrammarRule<'rdfLiteral', RuleDefReturn<typeof S11.rdfLiteral>> = <const> {\n name: 'rdfLiteral',\n impl: ({ ACTION, SUBRULE, OPTION, CONSUME, OR }) => (C) => {\n const value = SUBRULE(S11.string);\n return OPTION(() => OR<RuleDefReturn<typeof rdfLiteral>>([\n { ALT: () => {\n const langTag = CONSUME(l12.LANG_DIR);\n return ACTION(() => {\n const literal = C.factory.literalTerm(\n C.factory.sourceLocation(value, langTag),\n value.value,\n langTag.image.slice(1).toLowerCase(),\n );\n langTagHasCorrectRange(literal);\n return literal;\n });\n } },\n { ALT: () => {\n CONSUME(l11.symbols.hathat);\n const iriVal = SUBRULE(S11.iri);\n return ACTION(() => C.factory.literalTerm(\n C.factory.sourceLocation(value, iriVal),\n value.value,\n iriVal,\n ));\n } },\n ])) ?? value;\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.triplesBlock}.\n */\nexport const generateTriplesBlock: SparqlGeneratorRule<'triplesBlock', PatternBgp> = {\n name: 'triplesBlock',\n gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {\n for (const [ index, triple ] of ast.triples.entries()) {\n HANDLE_LOC(triple, () => {\n const nextTriple = ast.triples.at(index);\n if (F.isTripleCollection(triple)) {\n SUBRULE(graphNodePath, triple);\n // A top level tripleCollection block means that it is not used in a triple. So you end with DOT.\n F.printFilter(triple, () => PRINT_WORD('.'));\n } else {\n // Subject\n SUBRULE(graphNodePath, triple.subject);\n // Predicate\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n // Object\n SUBRULE(graphNodePath, triple.object);\n SUBRULE(annotationPath, triple.annotations ?? []);\n\n // If no more things, or a top level collection (only possible if new block was part), or new subject: add DOT\n if (nextTriple === undefined || F.isTripleCollection(nextTriple) ||\n !F.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {\n F.printFilter(ast, () => PRINT_WORD('.'));\n } else if (F.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {\n F.printFilter(ast, () => PRINT_WORD(','));\n } else {\n F.printFilter(ast, () => PRINT_WORD(';'));\n }\n }\n });\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.graphTerm}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const generateGraphTerm: SparqlGeneratorRule<'graphTerm', GraphTerm> = {\n name: 'graphTerm',\n gImpl: $ => (ast, C) => {\n if (C.factory.isTermTriple(ast)) {\n $.SUBRULE(tripleTerm, ast);\n } else {\n S11.graphTerm.gImpl($)(ast, C);\n }\n },\n};\n"]}
|
|
1
|
+
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["grammar.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * This module will define patch rules that should be used in combination with the sparql11 grammar to create\n * a sparql12 grammar.\n * Rules in this module redefine the return type of core grammar rules.\n * It is therefore essential that the parser retypes the rules from the core grammar.\n */\nimport type { RuleDefReturn, Wrap } from '@traqula/core';\nimport { CommonIRIs, funcExpr1, funcExpr3, gram as S11, lex as l11 } from '@traqula/rules-sparql-1-1';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport * as l12 from './lexer';\nimport type { SparqlGeneratorRule, SparqlGrammarRule, SparqlRule } from './sparql12HelperTypes';\nimport type {\n Annotation,\n ContextDefinition,\n ContextDefinitionVersion,\n Expression,\n GraphNode,\n GraphTerm,\n PatternBgp,\n Term,\n TermBlank,\n TermIri,\n TermLiteral,\n TermTriple,\n TermVariable,\n TripleCollectionBlankNodeProperties,\n TripleCollectionReifiedTriple,\n TripleNesting,\n} from './sparql12Types';\nimport { langTagHasCorrectRange } from './validators';\n\n/**\n *[[7]](https://www.w3.org/TR/sparql12-query/#rVersionDecl)\n */\nexport const versionDecl: SparqlRule<'versionDecl', ContextDefinitionVersion> = {\n name: 'versionDecl',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const versionToken = CONSUME(l12.version);\n const identifier = SUBRULE(versionSpecifier);\n return ACTION(() =>\n C.factory.contextDefinitionVersion(identifier.val, C.factory.sourceLocation(versionToken, identifier)));\n },\n gImpl: ({ PRINT_WORDS }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORDS('VERSION', `${S11.stringEscapedLexical(ast.version)}`);\n });\n },\n};\n\n/**\n * [[8]](https://www.w3.org/TR/sparql12-query/#rVersionSpecifier)\n */\nexport const versionSpecifier: SparqlGrammarRule<'versionSpecifier', Wrap<string>> = {\n name: 'versionSpecifier',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const token = OR([\n { ALT: () => CONSUME(l11.terminals.stringLiteral1) },\n { ALT: () => CONSUME(l11.terminals.stringLiteral2) },\n ]);\n return ACTION(() => C.factory.wrap(token.image.slice(1, -1), C.factory.sourceLocation(token)));\n },\n};\n\n/**\n * OVERRIDING RULE {@link S11.prologue}\n * [[4]](https://www.w3.org/TR/sparql12-query/#rPrologue)\n */\nexport const prologue: SparqlRule<'prologue', ContextDefinition[]> = {\n name: 'prologue',\n impl: ({ SUBRULE, MANY, OR }) => () => {\n const result: ContextDefinition[] = [];\n MANY(() => OR([\n { ALT: () => result.push(SUBRULE(S11.baseDecl)) },\n // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.\n // We might need to check this.\n { ALT: () => result.push(SUBRULE(S11.prefixDecl)) },\n { ALT: () => result.push(SUBRULE(versionDecl)) },\n ]));\n return result;\n },\n gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {\n for (const context of ast) {\n if (F.isContextDefinitionBase(context)) {\n SUBRULE(S11.baseDecl, context);\n } else if (F.isContextDefinitionPrefix(context)) {\n SUBRULE(S11.prefixDecl, context);\n } else if (F.isContextDefinitionVersion(context)) {\n SUBRULE(versionDecl, context);\n }\n }\n },\n};\n\nfunction reifiedTripleBlockImpl<T extends string>(name: T, allowPath: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE }) => (C) => {\n const triple = SUBRULE(reifiedTriple);\n const properties = SUBRULE(\n allowPath ? S11.propertyListPath : S11.propertyList,\n ACTION(() => C.factory.dematerialized(triple.identifier)),\n );\n\n return ACTION(() => <T11.BasicGraphPattern> [ triple, ...properties ]);\n },\n };\n}\n/**\n * [[58]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlock) Used by triplesSameSubject\n */\nexport const reifiedTripleBlock = reifiedTripleBlockImpl('reifiedTripleBlock', false);\n/**\n * [[59]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlockPath) Used by TriplesSameSubjectPath\n */\nexport const reifiedTripleBlockPath = reifiedTripleBlockImpl('reifiedTripleBlockPath', true);\n\n/**\n * OVERRIDING RULE: {@link S11.dataBlockValue}.\n * [[69]](https://www.w3.org/TR/sparql12-query/#rDataBlockValue)\n */\nexport const dataBlockValue:\nSparqlGrammarRule<'dataBlockValue', RuleDefReturn<typeof S11.dataBlockValue> | TermTriple> = <const> {\n name: 'dataBlockValue',\n impl: $ => C => $.OR2<RuleDefReturn<typeof dataBlockValue>>([\n { ALT: () => S11.dataBlockValue.impl($)(C) },\n { ALT: () => $.SUBRULE(tripleTermData) },\n ]),\n};\n\n/**\n * [[70]](https://www.w3.org/TR/sparql12-query/#rReifier)\n */\nexport const reifier: SparqlGrammarRule<'reifier', Wrap<RuleDefReturn<typeof varOrReifierId>>> = <const> {\n name: 'reifier',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const tildeToken = CONSUME(l12.tilde);\n const reifier = OPTION(() => SUBRULE(varOrReifierId));\n return ACTION(() => {\n if (reifier === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.factory.wrap(\n reifier ?? C.factory.blankNode(undefined, C.factory.sourceLocation()),\n C.factory.sourceLocation(tildeToken, reifier),\n );\n });\n },\n};\n\n/**\n * [[71]](https://www.w3.org/TR/sparql12-query/#rVarOrReifierId)\n */\nexport const varOrReifierId: SparqlGrammarRule<'varOrReifierId', TermVariable | TermIri | TermBlank> =\n <const> {\n name: 'varOrReifierId',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof varOrReifierId>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(S11.blankNode) },\n ]),\n };\n\nfunction triplesSameSubjectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: $ => C => $.OR2([\n { ALT: () => allowPaths ?\n S11.triplesSameSubjectPath.impl($)(C) :\n S11.triplesSameSubject.impl($)(C) },\n { ALT: () => $.SUBRULE(allowPaths ? reifiedTripleBlockPath : reifiedTripleBlock) },\n ]),\n };\n}\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubject}\n * [[81]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubject)\n */\nexport const triplesSameSubject = triplesSameSubjectImpl('triplesSameSubject', false);\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubjectPath}\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath)\n */\nexport const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubjectPath', true);\n\nfunction objectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting, [TripleNesting['subject'], TripleNesting['predicate']]> {\n return <const>{\n name,\n impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {\n const objectVal = SUBRULE(allowPaths ? graphNodePath : graphNode);\n const annotationVal = SUBRULE(allowPaths ? annotationPath : annotation);\n\n return ACTION(() => {\n const F = C.factory;\n if (F.isPathPure(predicate) && annotationVal.length > 0) {\n throw new Error('Note 17 violation');\n }\n return F.annotatedTriple(\n subject,\n predicate,\n objectVal,\n annotationVal,\n );\n });\n },\n };\n}\n/**\n * OVERRIDING RULE: {@link S11.object}.\n * [[86]](https://www.w3.org/TR/sparql12-query/#rObject) Used by ObjectList\n */\nexport const object = objectImpl('object', false);\n/**\n * OVERRIDING RULE: {@link S11.objectPath}.\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath) Used by ObjectListPath\n */\nexport const objectPath = objectImpl('objectPath', true);\n\nfunction annotationImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, Annotation[]> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, OR, MANY }) => (C) => {\n const annotations: Annotation[] = [];\n let currentReifier: TermBlank | TermVariable | TermIri | undefined;\n\n MANY(() => {\n OR([\n { ALT: () => {\n const node = SUBRULE(reifier);\n annotations.push(node);\n currentReifier = node.val;\n } },\n { ALT: () => {\n ACTION(() => {\n if (!currentReifier && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n currentReifier = currentReifier ?? C.factory.blankNode(undefined, C.factory.sourceLocation());\n });\n const block = SUBRULE(\n allowPaths ? annotationBlockPath : annotationBlock,\n currentReifier!,\n );\n ACTION(() => {\n annotations.push(block);\n currentReifier = undefined;\n });\n } },\n ]);\n });\n return annotations;\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n for (const annotation of ast) {\n if (F.isTripleCollectionBlankNodeProperties(annotation)) {\n SUBRULE(annotationBlockPath, annotation);\n } else {\n F.printFilter(annotation, () => PRINT_WORD('~'));\n SUBRULE(graphNodePath, annotation.val);\n }\n }\n },\n };\n}\n/**\n * [[109]](https://www.w3.org/TR/sparql12-query/#rAnnotationPath)\n */\nexport const annotationPath = annotationImpl('annotationPath', true);\n/**\n * [[111]](https://www.w3.org/TR/sparql12-query/#rAnnotation)\n */\nexport const annotation = annotationImpl('annotation', false);\n\nfunction annotationBlockImpl<T extends string>(name: T, allowPaths: boolean):\n SparqlGrammarRule<T, TripleCollectionBlankNodeProperties, [TripleCollectionBlankNodeProperties['identifier']]> &\n SparqlGeneratorRule<T, TripleCollectionBlankNodeProperties> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C, arg) => {\n const open = CONSUME(l12.annotationOpen);\n const res = SUBRULE(\n allowPaths ? S11.propertyListPathNotEmpty : S11.propertyListNotEmpty,\n arg,\n );\n const close = CONSUME(l12.annotationClose);\n\n return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(\n arg,\n res,\n C.factory.sourceLocation(open, close),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('{|'));\n for (const triple of ast.triples) {\n HANDLE_LOC(triple, () => {\n if (F.isTerm(triple.predicate)) {\n SUBRULE(graphNodePath, triple.predicate);\n } else {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n }\n SUBRULE(graphNodePath, triple.object);\n\n F.printFilter(ast, () => PRINT_WORD(';'));\n });\n }\n F.printFilter(ast, () => PRINT_WORD('|}'));\n },\n };\n}\n/**\n * [[110]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlockPath)\n */\nexport const annotationBlockPath = annotationBlockImpl('annotationBlockPath', true);\n/**\n * [[112]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlock)\n */\nexport const annotationBlock = annotationBlockImpl('annotationBlock', false);\n\n/**\n * OVERRIDING RULE: {@link S11.graphNode}.\n * [[113]](https://www.w3.org/TR/sparql12-query/#rGraphNode)\n */\nexport const graphNode: SparqlGrammarRule<'graphNode', GraphNode> = <const> {\n name: 'graphNode',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNode>>([\n { ALT: () => S11.graphNode.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n};\n/**\n * OVERRIDING RULE: {@link S11.graphNodePath}.\n * [[114]](https://www.w3.org/TR/sparql12-query/#rGraphNodePath)\n */\nexport const graphNodePath: SparqlRule<'graphNodePath', GraphNode> = <const> {\n name: 'graphNodePath',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNodePath>>([\n { ALT: () => S11.graphNodePath.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n gImpl: $ => (ast, C) => {\n if (C.factory.isTripleCollectionReifiedTriple(ast)) {\n $.SUBRULE(reifiedTriple, ast);\n } else {\n S11.graphNodePath.gImpl($)(<T11.Term | T11.TripleCollection> ast, C);\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.varOrTerm}.\n * [[115]](https://www.w3.org/TR/sparql12-query/#rVarOrTerm)\n */\nexport const varOrTerm: SparqlGrammarRule<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ ACTION, SUBRULE, OR, CONSUME }) => C => OR<Term>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => {\n const token = CONSUME(l11.terminals.nil);\n return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.NIL));\n } },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n // Generation remains untouched - go through graphTerm\n};\n\n/**\n * [[116]](https://www.w3.org/TR/sparql12-query/#rReifiedTriple)\n */\nexport const reifiedTriple: SparqlRule<'reifiedTriple', TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTriple',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const open = CONSUME(l12.reificationOpen);\n const subject = SUBRULE(reifiedTripleSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(reifiedTripleObject);\n const reifierVal = OPTION(() => SUBRULE(reifier));\n const close = CONSUME(l12.reificationClose);\n\n return ACTION(() => {\n // A reifier would be auto generated in this case, but we are not allowed to use them.\n if (reifierVal === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.factory.tripleCollectionReifiedTriple(\n C.factory.sourceLocation(open, close),\n subject,\n predicate,\n object,\n reifierVal?.val,\n );\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<'));\n const triple = ast.triples[0];\n SUBRULE(graphNodePath, triple.subject);\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n SUBRULE(graphNodePath, triple.object);\n SUBRULE(annotationPath, [ F.wrap(ast.identifier, ast.identifier.loc) ]);\n F.printFilter(ast, () => PRINT_WORD('>>'));\n },\n};\n\n/**\n * [[117]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleSubject)\n */\nexport const reifiedTripleSubject:\nSparqlGrammarRule<'reifiedTripleSubject', Term | TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTripleSubject',\n impl: ({ OR, SUBRULE }) => C => OR<RuleDefReturn<typeof reifiedTripleSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(reifiedTriple) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[118]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleObject)\n */\nexport const reifiedTripleObject:\nSparqlGrammarRule<'reifiedTripleObject', RuleDefReturn<typeof reifiedTripleSubject>> =\n <const> {\n name: 'reifiedTripleObject',\n impl: reifiedTripleSubject.impl,\n };\n\n/**\n * [[119]](https://www.w3.org/TR/sparql12-query/#rTripleTerm)\n */\nexport const tripleTerm: SparqlRule<'tripleTerm', TermTriple> = <const> {\n name: 'tripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(tripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n return ACTION(() => C.factory.termTriple(subject, predicate, object, C.factory.sourceLocation(open, close)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<('));\n SUBRULE(graphNodePath, ast.subject);\n SUBRULE(graphNodePath, ast.predicate);\n SUBRULE(graphNodePath, ast.object);\n F.printFilter(ast, () => PRINT_WORD(')>>'));\n },\n};\n\n/**\n * [[120]](https://www.w3.org/TR/sparql12-query/#rTripleTermSubject)\n */\nexport const tripleTermSubject:\nSparqlGrammarRule<'tripleTermSubject', TermVariable | TermIri | TermLiteral | TermBlank | TermTriple> = <const> {\n name: 'tripleTermSubject',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof tripleTermSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[121]](https://www.w3.org/TR/sparql12-query/#rTripleTermObject)\n */\nexport const tripleTermObject:\nSparqlGrammarRule<'tripleTermObject', RuleDefReturn<typeof tripleTermSubject>> = <const> {\n name: 'tripleTermObject',\n impl: tripleTermSubject.impl,\n};\n\n/**\n * [[122]](https://www.w3.org/TR/sparql12-query/#rTripleTermData)\n */\nexport const tripleTermData: SparqlGrammarRule<'tripleTermData', TermTriple> = <const> {\n name: 'tripleTermData',\n impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermDataSubject);\n const predicate = OR([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => {\n const token = CONSUME(l11.a);\n return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.TYPE));\n } },\n ]);\n const object = SUBRULE(tripleTermDataObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.factory.termTriple(subject, predicate, object, C.factory.sourceLocation(open, close)));\n },\n};\n\n/**\n * [[123]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataSubject)\n */\nexport const tripleTermDataSubject: SparqlGrammarRule<'tripleTermDataSubject', TermIri | TermLiteral | TermTriple> =\n <const> {\n name: 'tripleTermDataSubject',\n impl: ({ OR, SUBRULE }) => () => OR<RuleDefReturn<typeof tripleTermDataSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(tripleTermData) },\n ]),\n };\n\n/**\n * [[124]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataObject)\n */\nexport const tripleTermDataObject:\nSparqlGrammarRule<'tripleTermDataObject', RuleDefReturn<typeof tripleTermDataSubject>> = <const> {\n name: 'tripleTermDataObject',\n impl: tripleTermDataSubject.impl,\n};\n\n/**\n * OVERRIDING RULE: {@link S11.primaryExpression}.\n * [[136]](https://www.w3.org/TR/sparql12-query/#rPrimaryExpression)\n */\nexport const primaryExpression: SparqlGrammarRule<'primaryExpression', Expression> = <const> {\n name: 'primaryExpression',\n impl: $ => C => $.OR2<Expression>([\n { ALT: () => S11.primaryExpression.impl($)(C) },\n { ALT: () => $.SUBRULE(exprTripleTerm) },\n ]),\n};\n\n/**\n * [[137]](https://www.w3.org/TR/sparql12-query/#rExprTripleTerm)\n */\nexport const exprTripleTerm: SparqlGrammarRule<'exprTripleTerm', TermTriple> = <const> {\n name: 'exprTripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(exprTripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(exprTripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.factory.termTriple(\n subject,\n predicate,\n object,\n C.factory.sourceLocation(open, close),\n ));\n },\n};\n\n/**\n * [[138]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermSubject)\n */\nexport const exprTripleTermSubject:\nSparqlGrammarRule<'exprTripleTermSubject', TermIri | TermVariable | TermLiteral | TermTriple> = <const> {\n name: 'exprTripleTermSubject',\n impl: ({ OR, SUBRULE }) => C =>\n OR<RuleDefReturn<typeof exprTripleTermSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(exprTripleTerm) },\n ]),\n};\n\n/**\n * [[139]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermObject)\n */\nexport const exprTripleTermObject:\nSparqlGrammarRule<'exprTripleTermObject', RuleDefReturn<typeof exprTripleTermSubject> | TermTriple> = <const> {\n name: 'exprTripleTermObject',\n impl: exprTripleTermSubject.impl,\n};\n\nexport const buildInLangDir = funcExpr1(l12.buildInLangDir);\nexport const buildInLangStrDir = funcExpr3(l12.buildInStrLangDir);\nexport const buildInHasLang = funcExpr1(l12.buildInHasLang);\nexport const buildInHasLangDir = funcExpr1(l12.buildInHasLangDir);\nexport const buildInIsTriple = funcExpr1(l12.buildInIsTRIPLE);\nexport const buildInTriple = funcExpr3(l12.buildInTRIPLE);\nexport const buildInSubject = funcExpr1(l12.buildInSUBJECT);\nexport const buildInPredicate = funcExpr1(l12.buildInPREDICATE);\nexport const buildInObject = funcExpr1(l12.buildInOBJECT);\n\n/**\n * OVERRIDING RULE: {@link S11.builtInCall}.\n * [[141]](https://www.w3.org/TR/sparql12-query/#rBuiltInCall)\n */\nexport const builtInCall: typeof S11.builtInCall = <const> {\n name: 'builtInCall',\n impl: $ => C => $.OR2<T11.Expression>([\n { ALT: () => S11.builtInCall.impl($)(C) },\n { ALT: () => $.SUBRULE(buildInLangDir) },\n { ALT: () => $.SUBRULE(buildInLangStrDir) },\n { ALT: () => $.SUBRULE(buildInHasLang) },\n { ALT: () => $.SUBRULE(buildInHasLangDir) },\n { ALT: () => $.SUBRULE(buildInIsTriple) },\n { ALT: () => $.SUBRULE(buildInTriple) },\n { ALT: () => $.SUBRULE(buildInSubject) },\n { ALT: () => $.SUBRULE(buildInPredicate) },\n { ALT: () => $.SUBRULE(buildInObject) },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.rdfLiteral}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const rdfLiteral: SparqlGrammarRule<'rdfLiteral', RuleDefReturn<typeof S11.rdfLiteral>> = <const> {\n name: 'rdfLiteral',\n impl: ({ ACTION, SUBRULE, OPTION, CONSUME, OR }) => (C) => {\n const value = SUBRULE(S11.string);\n return OPTION(() => OR<RuleDefReturn<typeof rdfLiteral>>([\n { ALT: () => {\n const langTag = CONSUME(l12.LANG_DIR);\n return ACTION(() => {\n const literal = C.factory.literalTerm(\n C.factory.sourceLocation(value, langTag),\n value.value,\n langTag.image.slice(1).toLowerCase(),\n );\n langTagHasCorrectRange(literal);\n return literal;\n });\n } },\n { ALT: () => {\n CONSUME(l11.symbols.hathat);\n const iriVal = SUBRULE(S11.iri);\n return ACTION(() => C.factory.literalTerm(\n C.factory.sourceLocation(value, iriVal),\n value.value,\n iriVal,\n ));\n } },\n ])) ?? value;\n },\n};\n\nexport const unaryExpression: SparqlGrammarRule<(typeof S11.unaryExpression)['name'], Expression> = {\n name: 'unaryExpression',\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => C => OR1<Expression>([\n { ALT: () => SUBRULE1(primaryExpression) },\n { ALT: () => {\n const operator = CONSUME(l11.symbols.exclamation);\n const expr = SUBRULE1(unaryExpression);\n return ACTION(() => C.factory.expressionOperation(\n '!',\n [ <T11.Expression> expr ],\n C.factory.sourceLocation(operator, expr),\n ));\n } },\n { ALT: () => {\n const operator = OR2([\n { ALT: () => CONSUME(l11.symbols.opPlus) },\n { ALT: () => CONSUME(l11.symbols.opMinus) },\n ]);\n const expr = SUBRULE2(primaryExpression);\n return ACTION(() => C.factory.expressionOperation(\n operator.image === '!' ? '!' : (operator.image === '+' ? 'UPLUS' : 'UMINUS'),\n [ <T11.Expression> expr ],\n C.factory.sourceLocation(operator, expr),\n ));\n } },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.triplesBlock}.\n */\nexport const generateTriplesBlock: SparqlGeneratorRule<'triplesBlock', PatternBgp> = {\n name: 'triplesBlock',\n gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {\n for (const [ index, triple ] of ast.triples.entries()) {\n HANDLE_LOC(triple, () => {\n const nextTriple = ast.triples.at(index);\n if (F.isTripleCollection(triple)) {\n SUBRULE(graphNodePath, triple);\n // A top level tripleCollection block means that it is not used in a triple. So you end with DOT.\n F.printFilter(triple, () => PRINT_WORD('.'));\n } else {\n // Subject\n SUBRULE(graphNodePath, triple.subject);\n // Predicate\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n // Object\n SUBRULE(graphNodePath, triple.object);\n SUBRULE(annotationPath, triple.annotations ?? []);\n\n // If no more things, or a top level collection (only possible if new block was part), or new subject: add DOT\n if (nextTriple === undefined || F.isTripleCollection(nextTriple) ||\n !F.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {\n F.printFilter(ast, () => PRINT_WORD('.'));\n } else if (F.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {\n F.printFilter(ast, () => PRINT_WORD(','));\n } else {\n F.printFilter(ast, () => PRINT_WORD(';'));\n }\n }\n });\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.graphTerm}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const generateGraphTerm: SparqlGeneratorRule<'graphTerm', GraphTerm> = {\n name: 'graphTerm',\n gImpl: $ => (ast, C) => {\n if (C.factory.isTermTriple(ast)) {\n $.SUBRULE(tripleTerm, ast);\n } else {\n S11.graphTerm.gImpl($)(ast, C);\n }\n },\n};\n"]}
|
package/lib/index.cjs
CHANGED
|
@@ -73,6 +73,7 @@ __export(grammar_exports2, {
|
|
|
73
73
|
tripleTermSubject: () => tripleTermSubject,
|
|
74
74
|
triplesSameSubject: () => triplesSameSubject2,
|
|
75
75
|
triplesSameSubjectPath: () => triplesSameSubjectPath2,
|
|
76
|
+
unaryExpression: () => unaryExpression2,
|
|
76
77
|
varOrReifierId: () => varOrReifierId,
|
|
77
78
|
varOrTerm: () => varOrTerm2,
|
|
78
79
|
versionDecl: () => versionDecl,
|
|
@@ -13460,13 +13461,11 @@ var unaryExpression = {
|
|
|
13460
13461
|
{ ALT: () => CONSUME(symbols_exports.opMinus) }
|
|
13461
13462
|
]);
|
|
13462
13463
|
const expr = SUBRULE2(primaryExpression);
|
|
13463
|
-
return ACTION(() => (
|
|
13464
|
-
|
|
13465
|
-
|
|
13466
|
-
|
|
13467
|
-
|
|
13468
|
-
loc: C.factory.sourceLocation(operator, expr)
|
|
13469
|
-
}));
|
|
13464
|
+
return ACTION(() => C.factory.expressionOperation(
|
|
13465
|
+
operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS",
|
|
13466
|
+
[expr],
|
|
13467
|
+
C.factory.sourceLocation(operator, expr)
|
|
13468
|
+
));
|
|
13470
13469
|
} }
|
|
13471
13470
|
])
|
|
13472
13471
|
};
|
|
@@ -15274,6 +15273,33 @@ var rdfLiteral2 = {
|
|
|
15274
15273
|
])) ?? value;
|
|
15275
15274
|
}
|
|
15276
15275
|
};
|
|
15276
|
+
var unaryExpression2 = {
|
|
15277
|
+
name: "unaryExpression",
|
|
15278
|
+
impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
|
|
15279
|
+
{ ALT: () => SUBRULE1(primaryExpression2) },
|
|
15280
|
+
{ ALT: () => {
|
|
15281
|
+
const operator = CONSUME(lexer_exports.symbols.exclamation);
|
|
15282
|
+
const expr = SUBRULE1(unaryExpression2);
|
|
15283
|
+
return ACTION(() => C.factory.expressionOperation(
|
|
15284
|
+
"!",
|
|
15285
|
+
[expr],
|
|
15286
|
+
C.factory.sourceLocation(operator, expr)
|
|
15287
|
+
));
|
|
15288
|
+
} },
|
|
15289
|
+
{ ALT: () => {
|
|
15290
|
+
const operator = OR2([
|
|
15291
|
+
{ ALT: () => CONSUME(lexer_exports.symbols.opPlus) },
|
|
15292
|
+
{ ALT: () => CONSUME(lexer_exports.symbols.opMinus) }
|
|
15293
|
+
]);
|
|
15294
|
+
const expr = SUBRULE2(primaryExpression2);
|
|
15295
|
+
return ACTION(() => C.factory.expressionOperation(
|
|
15296
|
+
operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS",
|
|
15297
|
+
[expr],
|
|
15298
|
+
C.factory.sourceLocation(operator, expr)
|
|
15299
|
+
));
|
|
15300
|
+
} }
|
|
15301
|
+
])
|
|
15302
|
+
};
|
|
15277
15303
|
var generateTriplesBlock = {
|
|
15278
15304
|
name: "triplesBlock",
|
|
15279
15305
|
gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
|
package/lib/lexer.d.ts
CHANGED
|
@@ -17,4 +17,4 @@ export declare const buildInSUBJECT: import("@traqula/core").NamedToken<"BuiltIn
|
|
|
17
17
|
export declare const buildInPREDICATE: import("@traqula/core").NamedToken<"BuiltInPredicate">;
|
|
18
18
|
export declare const buildInOBJECT: import("@traqula/core").NamedToken<"BuiltInObject">;
|
|
19
19
|
export declare const LANG_DIR: import("@traqula/core").NamedToken<"LANG_DIR">;
|
|
20
|
-
export declare const sparql12LexerBuilder: LexerBuilder<"BuiltInStr" | "BuiltInLang" | "BuiltInLangmatches" | "BuiltInDatatype" | "BuiltInBound" | "BuiltInIri" | "BuiltInUri" | "BuiltInBnode" | "BuiltInRand" | "BuiltInAbs" | "BuiltInCeil" | "BuiltInFloor" | "BuiltInRound" | "BuiltInConcat" | "BuiltInStrlen" | "BuiltInUcase" | "BuiltInLcase" | "BuiltInEncode_for_uri" | "BuiltInContains" | "BuiltInStrstarts" | "BuiltInStrends" | "BuiltInStrbefore" | "BuiltInStrafter" | "BuiltInYear" | "BuiltInMonth" | "BuiltInDay" | "BuiltInHours" | "BuiltInMinutes" | "BuiltInSeconds" | "BuiltInTimezone" | "BuiltInTz" | "BuiltInNow" | "BuiltInUuid" | "BuiltInStruuid" | "BuiltInMd5" | "BuiltInSha1" | "BuiltInSha256" | "BuiltInSha384" | "BuiltInSha512" | "BuiltInCoalesce" | "BuiltInIf" | "BuiltInStrlang" | "BuiltInStrdt" | "BuiltInSameterm" | "BuiltInIsiri" | "BuiltInIsuri" | "BuiltInIsblank" | "BuiltInIsliteral" | "BuiltInIsnumeric" | "BuiltInRegex" | "BuiltInSubstr" | "BuiltInReplace" | "BuiltInSum" | "BuiltInMin" | "BuiltInMax" | "BuiltInAvg" | "BuiltInSample" | "BuiltInExists" | "BuiltInNotexists" | "Pipe" | "Slash" | "From" | "Clear" | "Drop" | "Add" | "Copy" | "Move" | "InsertClause" | "DataClause" | "DeleteClause" | "Where" | "UsingClause" | "BuiltInLangdir" | "BuiltInStrLangdir" | "BuiltInHasLang" | "BuiltInHasLangdir" | "BuiltInIsTriple" | "BuiltInTriple" | "BuiltInSubject" | "BuiltInPredicate" | "BuiltInObject" | "IriRef" | "PNameNs" | "PNameLn" | "BlankNodeLabel" | "Var1" | "Var2" | "Double" | "Decimal" | "Integer" | "InterferePositive" | "DecimalPositive" | "DoublePositive" | "IntegerNegative" | "DecimalNegative" | "DoubleNegative" | "StringLiteralLong1" | "StringLiteralLong2" | "StringLiteral1" | "StringLiteral2" | "Ws" | "Comment" | "Nil" | "Anon" | "BaseDecl" | "PrefixDecl" | "Select" | "Distinct" | "Reduced" | "Construct" | "Describe" | "Ask" | "Having" | "GroupByGroup" | "By" | "Order" | "OrderAsc" | "OrderDesc" | "Limit" | "Offset" | "Values" | "Load" | "Silent" | "LoadInto" | "Create" | "To" | "ModifyWith" | "Optional" | "Service" | "Bind" | "Undef" | "Minus" | "Union" | "Filter" | "As" | "
|
|
20
|
+
export declare const sparql12LexerBuilder: LexerBuilder<"a" | "BuiltInStr" | "BuiltInLang" | "BuiltInLangmatches" | "BuiltInDatatype" | "BuiltInBound" | "BuiltInIri" | "BuiltInUri" | "BuiltInBnode" | "BuiltInRand" | "BuiltInAbs" | "BuiltInCeil" | "BuiltInFloor" | "BuiltInRound" | "BuiltInConcat" | "BuiltInStrlen" | "BuiltInUcase" | "BuiltInLcase" | "BuiltInEncode_for_uri" | "BuiltInContains" | "BuiltInStrstarts" | "BuiltInStrends" | "BuiltInStrbefore" | "BuiltInStrafter" | "BuiltInYear" | "BuiltInMonth" | "BuiltInDay" | "BuiltInHours" | "BuiltInMinutes" | "BuiltInSeconds" | "BuiltInTimezone" | "BuiltInTz" | "BuiltInNow" | "BuiltInUuid" | "BuiltInStruuid" | "BuiltInMd5" | "BuiltInSha1" | "BuiltInSha256" | "BuiltInSha384" | "BuiltInSha512" | "BuiltInCoalesce" | "BuiltInIf" | "BuiltInStrlang" | "BuiltInStrdt" | "BuiltInSameterm" | "BuiltInIsiri" | "BuiltInIsuri" | "BuiltInIsblank" | "BuiltInIsliteral" | "BuiltInIsnumeric" | "BuiltInRegex" | "BuiltInSubstr" | "BuiltInReplace" | "BuiltInSum" | "BuiltInMin" | "BuiltInMax" | "BuiltInAvg" | "BuiltInSample" | "BuiltInExists" | "BuiltInNotexists" | "Pipe" | "Slash" | "From" | "Clear" | "Drop" | "Add" | "Copy" | "Move" | "InsertClause" | "DataClause" | "DeleteClause" | "Where" | "UsingClause" | "BuiltInLangdir" | "BuiltInStrLangdir" | "BuiltInHasLang" | "BuiltInHasLangdir" | "BuiltInIsTriple" | "BuiltInTriple" | "BuiltInSubject" | "BuiltInPredicate" | "BuiltInObject" | "IriRef" | "PNameNs" | "PNameLn" | "BlankNodeLabel" | "Var1" | "Var2" | "Double" | "Decimal" | "Integer" | "InterferePositive" | "DecimalPositive" | "DoublePositive" | "IntegerNegative" | "DecimalNegative" | "DoubleNegative" | "StringLiteralLong1" | "StringLiteralLong2" | "StringLiteral1" | "StringLiteral2" | "Ws" | "Comment" | "Nil" | "Anon" | "BaseDecl" | "PrefixDecl" | "Select" | "Distinct" | "Reduced" | "Construct" | "Describe" | "Ask" | "Having" | "GroupByGroup" | "By" | "Order" | "OrderAsc" | "OrderDesc" | "Limit" | "Offset" | "Values" | "Load" | "Silent" | "LoadInto" | "Create" | "To" | "ModifyWith" | "Optional" | "Service" | "Bind" | "Undef" | "Minus" | "Union" | "Filter" | "As" | "True" | "False" | "In" | "NotIn" | "Separator" | "BuiltInCount" | "BuiltInGroup_concat" | "NamedGraph" | "DefaultGraph" | "Graph" | "GraphAll" | "LogicAnd" | "LogicOr" | "NotEqual" | "LessThanEqual" | "GreaterThanEqual" | "LCurly" | "RCurly" | "Dot" | "Comma" | "Semi" | "LParen" | "RParen" | "LSquare" | "RSquare" | "Hathat" | "Hat" | "Question" | "Star" | "OpPlus" | "OpMinus" | "Exclamation" | "Equal" | "LessThan" | "GreaterThan" | "Tilde" | "AnnotationOpen" | "AnnotationClose" | "TripleTermOpen" | "TripleTermClose" | "ReificationOpen" | "ReificationClose" | "Version" | "LANG_DIR">;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@traqula/rules-sparql-1-2",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.13",
|
|
5
5
|
"description": "Traqula Lexer and Grammar Rules for sparql 1.2",
|
|
6
6
|
"lsd:module": true,
|
|
7
7
|
"license": "MIT",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"build:transpile": " node \"../../node_modules/esbuild/bin/esbuild\" --format=cjs --bundle --log-level=error --outfile=lib/index.cjs lib/index.ts"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@traqula/core": "^0.0.
|
|
45
|
-
"@traqula/rules-sparql-1-1": "^0.0.
|
|
44
|
+
"@traqula/core": "^0.0.13",
|
|
45
|
+
"@traqula/rules-sparql-1-1": "^0.0.13"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "324ed65dcfacb6cfa31007e0d5ee43f2599b7284"
|
|
48
48
|
}
|