@traqula/core 0.0.1-alpha.137

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parserBuilder.js","sourceRoot":"","sources":["parserBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable ts/ban-ts-comment */\nimport type { ILexerConfig, IParserConfig } from '@chevrotain/types';\nimport type {IToken, TokenType, TokenVocabulary} from 'chevrotain';\nimport { EmbeddedActionsParser, Lexer } from 'chevrotain';\nimport { DataFactory } from 'rdf-data-factory';\nimport type {\n CheckOverlap,\n RuleDefMap,\n ParserFromRules,\n RuleListToObject,\n RuleNamesFromList,\n ParseMethodsFromRules,\n} from './builderTypes';\nimport type { CstDef, ImplArgs, RuleDef } from './ruleDefTypes';\n\nfunction listToRuleDefMap<T extends readonly RuleDef[]>(rules: T): RuleListToObject<T> {\n const newRules: Record<string, RuleDef> = {};\n for (const rule of rules) {\n newRules[rule.name] = rule;\n }\n return <RuleListToObject<T>>newRules;\n}\n\nexport class Builder<Names extends string, RuleDefs extends RuleDefMap<Names>> {\n public static createBuilder<\n Rules extends readonly RuleDef[] = RuleDef[],\n Names extends string = RuleNamesFromList<Rules>,\n // @ts-expect-error TS2344\n RuleDefs extends RuleDefMap<Names> = RuleListToObject<Rules>,\n// eslint-disable-next-line antfu/consistent-list-newline\n>(start: Rules | Builder<Names, RuleDefs>): Builder<Names, RuleDefs> {\n if (start instanceof Builder) {\n return new Builder({ ...start.rules });\n }\n // @ts-expect-error TS2344\n return new Builder(listToRuleDefMap(start));\n }\n\n private rules: RuleDefs;\n\n private constructor(startRules: RuleDefs) {\n this.rules = startRules;\n }\n\n public patchRule<U extends Names, RET, ARGS extends unknown[]>(patch: RuleDef<U, RET, ARGS>):\n // @ts-expect-error TS2344\n Builder<Names, {[Key in Names]: Key extends U ? RuleDef<Key, RET, ARGS> : RuleDefs[Key] }> {\n // @ts-expect-error TS2322\n this.rules[patch.name] = patch;\n // @ts-expect-error TS2344\n return <Builder<Names, Omit<RuleDefs, U> & Record<U, RuleDef<U, RET, ARGS>>>> this;\n }\n\n public addRuleRedundant<U extends string, RET, ARGS extends undefined[]>(rule: RuleDef<U, RET, ARGS>):\n // @ts-expect-error TS2344\n Builder<Names | U, {[K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : RuleDefs[K] }> {\n const rules = <Record<string, RuleDef>> this.rules;\n if (rules[rule.name] !== undefined && rules[rule.name] !== rule) {\n throw new Error(`Rule ${rule.name} already exists in the builder`);\n }\n // @ts-expect-error TS2536\n this.rules[rule.name] = rule;\n // @ts-expect-error TS2536\n return <Builder<Names | U, RuleDefs | Record<U, RuleDef<U, RET, ARGS>>>> <unknown> this;\n }\n\n public addRule<U extends string, RET, ARGS extends unknown[]>(\n rule: CheckOverlap<U, Names, RuleDef<U, RET, ARGS>>,\n // @ts-expect-error TS2536\n ): Builder<Names | U, {[K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : RuleDefs[K] }> {\n return this.addRuleRedundant(rule);\n }\n\n public addMany<U extends RuleDef[]>(\n ...rules: CheckOverlap<RuleNamesFromList<U>, Names, U>\n // @ts-expect-error TS2536\n ): Builder<Names | RuleNamesFromList<U>, RuleDefs & RuleListToObject<U>> {\n this.rules = { ...this.rules, ...listToRuleDefMap(rules) };\n // @ts-expect-error TS2536\n return <Builder<Names | RuleNamesFromList<U>, RuleDefs & RuleListToObject<U>>> <unknown> this;\n }\n\n public deleteRule<U extends Names>(ruleName: U):\n // @ts-expect-error TS2536\n Builder<Exclude<Names, U>, Omit<RuleDefs, U>> {\n delete this.rules[ruleName];\n // @ts-expect-error TS2536\n return <Builder<Exclude<Names, U>, Omit<RuleDefs, U>>> <unknown> this;\n }\n\n public merge<OtherNames extends string, OtherRules extends RuleDefMap<OtherNames>, OW extends readonly RuleDef[]>(\n builder: Builder<OtherNames, OtherRules>,\n overridingRules: OW,\n ):\n Builder<\n Names | OtherNames | RuleNamesFromList<OW>,\n // @ts-expect-error TS2344\n {[K in Names | OtherNames | RuleNamesFromList<OW>]: K extends Names | OtherNames ? (\n K extends Names ? RuleDefs[K] : (K extends OtherNames ? OtherRules[K] : never)\n ) : (K extends keyof RuleListToObject<OW> ? RuleListToObject<OW>[K] : never) }\n > {\n // Assume the other grammar is bigger than yours. So start from that one and add this one\n const otherRules: Record<string, RuleDef> = { ...builder.rules };\n const myRules: Record<string, RuleDef> = this.rules;\n\n for (const rule of Object.values(myRules)) {\n if (otherRules[rule.name] === undefined) {\n otherRules[rule.name] = rule;\n } else {\n const existingRule = otherRules[rule.name];\n // If same rule, no issue, move on. Else\n if (existingRule !== rule) {\n const override = overridingRules.find(x => x.name === rule.name);\n // If override specified, take override, else, inform user that there is a conflict\n if (override) {\n otherRules[rule.name] = override;\n } else {\n throw new Error(`Rule with name \"${rule.name}\" already exists in the builder, specify an override to resolve conflict`);\n }\n }\n }\n }\n\n // @ts-expect-error TS2322\n this.rules = otherRules;\n // @ts-expect-error TS2322\n return this;\n }\n\n public consumeToParser({ tokenVocabulary, parserConfig = {}, lexerConfig = {}}: {\n tokenVocabulary: TokenType[];\n parserConfig?: IParserConfig;\n lexerConfig?: ILexerConfig;\n }, context: Partial<ImplArgs['context']> = {}): ParserFromRules<Names, RuleDefs> {\n const lexer: Lexer = new Lexer(tokenVocabulary, {\n positionTracking: 'onlyStart',\n recoveryEnabled: false,\n // SafeMode: true,\n // SkipValidations: true,\n ensureOptimizations: true,\n ...lexerConfig,\n });\n const parser = this.consume({ tokenVocabulary, config: parserConfig }, context);\n const selfSufficientParser: Partial<ParserFromRules<Names, RuleDefs>> = {};\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n for (const rule of <RuleDef<Names>[]> Object.values(this.rules)) {\n // @ts-expect-error TS7053\n selfSufficientParser[rule.name] = (input: string, ...args: unknown[]) => {\n // Transform input in accordance to 19.2\n input = input.replaceAll(\n /\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{8})/gu,\n (_, unicode4: string, unicode8: string) => {\n if (unicode4) {\n const charCode = Number.parseInt(unicode4, 16);\n return String.fromCodePoint(charCode);\n }\n const charCode = Number.parseInt(unicode8, 16);\n if (charCode < 0xFFFF) {\n return String.fromCodePoint(charCode);\n }\n const substractedCharCode = charCode - 0x10000;\n return String.fromCodePoint(0xD800 + (substractedCharCode >> 10), 0xDC00 + (substractedCharCode & 0x3FF));\n },\n );\n // Test for invalid unicode surrogate pairs\n if (/[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/u.test(input)) {\n throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);\n }\n\n const lexResult = lexer.tokenize(input);\n // Console.log(lexResult.tokens);\n\n parser.reset();\n parser.input = lexResult.tokens;\n const result = parser[rule.name](...args);\n if (parser.errors.length > 0) {\n // Console.log(lexResult.tokens);\n throw new Error(`Parse error on line ${parser.errors.map(x => x.token.startLine).join(', ')}\n${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\\n')}`);\n }\n return result;\n };\n }\n return <ParserFromRules<Names, RuleDefs>> selfSufficientParser;\n }\n\n public consume({ tokenVocabulary, config = {}}: {\n tokenVocabulary: TokenVocabulary;\n config?: IParserConfig;\n }, context: Partial<ImplArgs['context']> = {}): EmbeddedActionsParser & ParseMethodsFromRules<Names, RuleDefs> {\n const rules = this.rules;\n class MyParser extends EmbeddedActionsParser {\n private readonly initialParseContext: ImplArgs['context'];\n private readonly runningContext: ImplArgs['context'];\n\n public constructor() {\n super(tokenVocabulary, {\n // RecoveryEnabled: true,\n maxLookahead: 2,\n // SkipValidations: true,\n ...config,\n });\n\n const selfRef = this.getSelfRef();\n // Remember to change the reset function accordingly!\n this.initialParseContext = {\n dataFactory: new DataFactory({ blankNodePrefix: 'g_' }),\n baseIRI: undefined,\n flushedBlankNodeLabels: new Set(),\n usedBlankNodeLabels: new Set(),\n parseMode: new Set(),\n skipValidation: false,\n ...context,\n prefixes: context.prefixes ? { ...context.prefixes } : {},\n };\n this.runningContext = {\n ...this.initialParseContext,\n prefixes: { ...this.initialParseContext.prefixes },\n parseMode: new Set(this.initialParseContext.parseMode),\n };\n\n const implArgs: ImplArgs = {\n ...selfRef,\n cache: new WeakMap(),\n context: this.runningContext,\n };\n\n for (const rule of Object.values(<Record<string, RuleDef>>rules)) {\n // @ts-expect-error TS7053\n this[rule.name] = this.RULE(rule.name, rule.impl(implArgs));\n }\n this.performSelfAnalysis();\n }\n\n public override reset(): void {\n super.reset();\n // We need to keep the original object reference.\n Object.assign(this.runningContext, {\n ...this.initialParseContext,\n });\n this.runningContext.prefixes = { ...this.initialParseContext.prefixes };\n this.runningContext.parseMode = new Set(this.initialParseContext.parseMode);\n this.runningContext.usedBlankNodeLabels.clear();\n this.runningContext.flushedBlankNodeLabels.clear();\n }\n\n private getSelfRef(): CstDef {\n return {\n CONSUME: (tokenType, option) => this.CONSUME(tokenType, option),\n CONSUME1: (tokenType, option) => this.CONSUME1(tokenType, option),\n CONSUME2: (tokenType, option) => this.CONSUME2(tokenType, option),\n CONSUME3: (tokenType, option) => this.CONSUME3(tokenType, option),\n CONSUME4: (tokenType, option) => this.CONSUME4(tokenType, option),\n CONSUME5: (tokenType, option) => this.CONSUME5(tokenType, option),\n CONSUME6: (tokenType, option) => this.CONSUME6(tokenType, option),\n CONSUME7: (tokenType, option) => this.CONSUME7(tokenType, option),\n CONSUME8: (tokenType, option) => this.CONSUME8(tokenType, option),\n CONSUME9: (tokenType, option) => this.CONSUME9(tokenType, option),\n OPTION: actionORMethodDef => this.OPTION(actionORMethodDef),\n OPTION1: actionORMethodDef => this.OPTION1(actionORMethodDef),\n OPTION2: actionORMethodDef => this.OPTION2(actionORMethodDef),\n OPTION3: actionORMethodDef => this.OPTION3(actionORMethodDef),\n OPTION4: actionORMethodDef => this.OPTION4(actionORMethodDef),\n OPTION5: actionORMethodDef => this.OPTION5(actionORMethodDef),\n OPTION6: actionORMethodDef => this.OPTION6(actionORMethodDef),\n OPTION7: actionORMethodDef => this.OPTION7(actionORMethodDef),\n OPTION8: actionORMethodDef => this.OPTION8(actionORMethodDef),\n OPTION9: actionORMethodDef => this.OPTION9(actionORMethodDef),\n OR: altsOrOpts => this.OR(altsOrOpts),\n OR1: altsOrOpts => this.OR1(altsOrOpts),\n OR2: altsOrOpts => this.OR2(altsOrOpts),\n OR3: altsOrOpts => this.OR3(altsOrOpts),\n OR4: altsOrOpts => this.OR4(altsOrOpts),\n OR5: altsOrOpts => this.OR5(altsOrOpts),\n OR6: altsOrOpts => this.OR6(altsOrOpts),\n OR7: altsOrOpts => this.OR7(altsOrOpts),\n OR8: altsOrOpts => this.OR8(altsOrOpts),\n OR9: altsOrOpts => this.OR9(altsOrOpts),\n MANY: actionORMethodDef => this.MANY(actionORMethodDef),\n MANY1: actionORMethodDef => this.MANY1(actionORMethodDef),\n MANY2: actionORMethodDef => this.MANY2(actionORMethodDef),\n MANY3: actionORMethodDef => this.MANY3(actionORMethodDef),\n MANY4: actionORMethodDef => this.MANY4(actionORMethodDef),\n MANY5: actionORMethodDef => this.MANY5(actionORMethodDef),\n MANY6: actionORMethodDef => this.MANY6(actionORMethodDef),\n MANY7: actionORMethodDef => this.MANY7(actionORMethodDef),\n MANY8: actionORMethodDef => this.MANY8(actionORMethodDef),\n MANY9: actionORMethodDef => this.MANY9(actionORMethodDef),\n MANY_SEP: options => this.MANY_SEP(options),\n MANY_SEP1: options => this.MANY_SEP1(options),\n MANY_SEP2: options => this.MANY_SEP2(options),\n MANY_SEP3: options => this.MANY_SEP3(options),\n MANY_SEP4: options => this.MANY_SEP4(options),\n MANY_SEP5: options => this.MANY_SEP5(options),\n MANY_SEP6: options => this.MANY_SEP6(options),\n MANY_SEP7: options => this.MANY_SEP7(options),\n MANY_SEP8: options => this.MANY_SEP8(options),\n MANY_SEP9: options => this.MANY_SEP9(options),\n AT_LEAST_ONE: actionORMethodDef => this.AT_LEAST_ONE(actionORMethodDef),\n AT_LEAST_ONE1: actionORMethodDef => this.AT_LEAST_ONE1(actionORMethodDef),\n AT_LEAST_ONE2: actionORMethodDef => this.AT_LEAST_ONE2(actionORMethodDef),\n AT_LEAST_ONE3: actionORMethodDef => this.AT_LEAST_ONE3(actionORMethodDef),\n AT_LEAST_ONE4: actionORMethodDef => this.AT_LEAST_ONE4(actionORMethodDef),\n AT_LEAST_ONE5: actionORMethodDef => this.AT_LEAST_ONE5(actionORMethodDef),\n AT_LEAST_ONE6: actionORMethodDef => this.AT_LEAST_ONE6(actionORMethodDef),\n AT_LEAST_ONE7: actionORMethodDef => this.AT_LEAST_ONE7(actionORMethodDef),\n AT_LEAST_ONE8: actionORMethodDef => this.AT_LEAST_ONE8(actionORMethodDef),\n AT_LEAST_ONE9: actionORMethodDef => this.AT_LEAST_ONE9(actionORMethodDef),\n AT_LEAST_ONE_SEP: options => this.AT_LEAST_ONE_SEP(options),\n AT_LEAST_ONE_SEP1: options => this.AT_LEAST_ONE_SEP1(options),\n AT_LEAST_ONE_SEP2: options => this.AT_LEAST_ONE_SEP2(options),\n AT_LEAST_ONE_SEP3: options => this.AT_LEAST_ONE_SEP3(options),\n AT_LEAST_ONE_SEP4: options => this.AT_LEAST_ONE_SEP4(options),\n AT_LEAST_ONE_SEP5: options => this.AT_LEAST_ONE_SEP5(options),\n AT_LEAST_ONE_SEP6: options => this.AT_LEAST_ONE_SEP6(options),\n AT_LEAST_ONE_SEP7: options => this.AT_LEAST_ONE_SEP7(options),\n AT_LEAST_ONE_SEP8: options => this.AT_LEAST_ONE_SEP8(options),\n AT_LEAST_ONE_SEP9: options => this.AT_LEAST_ONE_SEP9(options),\n ACTION: func => this.ACTION(func),\n BACKTRACK: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.BACKTRACK(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE1: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE1(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE2: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE2(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE3: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE3(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE4: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE4(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE5: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE5(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE6: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE6(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE7: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE7(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE8: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE8(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE9: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE9(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n };\n }\n }\n return <EmbeddedActionsParser & ParseMethodsFromRules<Names, RuleDefs>><unknown> new MyParser();\n }\n}\n"]}
@@ -0,0 +1,339 @@
1
+ import type { AtLeastOneSepMethodOpts, DSLMethodOpts, DSLMethodOptsWithErr, GrammarAction, IOrAlt, ManySepMethodOpts, OrMethodOpts } from '@chevrotain/types';
2
+ import type * as RDF from '@rdfjs/types';
3
+ import type { ConsumeMethodOpts, IToken, TokenType } from 'chevrotain';
4
+ import type { DataFactory } from 'rdf-data-factory';
5
+ export type RuleDef<NameType extends string = string, ReturnType = unknown, ParamType extends unknown[] = unknown[]> = {
6
+ name: NameType;
7
+ impl: (def: ImplArgs) => (...args: ArrayElementsUndefinable<ParamType>) => ReturnType;
8
+ };
9
+ export type RuleDefReturn<T> = T extends RuleDef<any, infer Ret, any> ? Ret : never;
10
+ type ArrayElementsUndefinable<ArrayType extends any[]> = ArrayType extends [infer First, ...infer Rest] ? [First | undefined, ...ArrayElementsUndefinable<Rest>] : [];
11
+ export interface ImplArgs extends CstDef {
12
+ cache: WeakMap<RuleDef, unknown>;
13
+ context: {
14
+ dataFactory: DataFactory<RDF.BaseQuad>;
15
+ /**
16
+ * Current scoped prefixes. Used for resolving prefixed names.
17
+ */
18
+ prefixes: Record<string, string>;
19
+ /**
20
+ * The base IRI for the query. Used for resolving relative IRIs.
21
+ */
22
+ baseIRI: string | undefined;
23
+ /**
24
+ * Set of blank node labels that have been flushed. Used for note 10.
25
+ */
26
+ flushedBlankNodeLabels: Set<string>;
27
+ /**
28
+ * Set of blank node labels that have been used. Used for note 10.
29
+ */
30
+ usedBlankNodeLabels: Set<string>;
31
+ /**
32
+ * Can be used to disable the validation that used variables in a select clause are in scope.
33
+ */
34
+ skipValidation: boolean;
35
+ /**
36
+ * Set of queryModes. Primarily used for note 8, 14.
37
+ */
38
+ parseMode: Set<symbol>;
39
+ };
40
+ }
41
+ type SubRuleFunc = <T extends string, U = unknown, ARGS extends any[] = []>(cstDef: RuleDef<T, U, ARGS>, ...argument: ARGS) => U;
42
+ type BacktrackFunc = <T extends string, U = unknown, ARGS extends any[] = []>(cstDef: RuleDef<T, U, ARGS>, ...argument: ARGS) => () => boolean;
43
+ export interface CstDef {
44
+ /**
45
+ *
46
+ * A Parsing DSL method use to consume a single Token.
47
+ * In EBNF terms this is equivalent to a Terminal.
48
+ *
49
+ * A Token will be consumed, IFF the next token in the token vector matches `tokType`.
50
+ * otherwise the parser may attempt to perform error recovery (if enabled).
51
+ *
52
+ * The index in the method name indicates the unique occurrence of a terminal consumption
53
+ * inside a the top level rule. What this means is that if a terminal appears
54
+ * more than once in a single rule, each appearance must have a **different** index.
55
+ *
56
+ * For example:
57
+ * ```
58
+ * this.RULE("qualifiedName", () => {
59
+ * this.CONSUME1(Identifier);
60
+ * this.MANY(() => {
61
+ * this.CONSUME1(Dot);
62
+ * // here we use CONSUME2 because the terminal
63
+ * // 'Identifier' has already appeared previously in the
64
+ * // the rule 'parseQualifiedName'
65
+ * this.CONSUME2(Identifier);
66
+ * });
67
+ * })
68
+ * ```
69
+ *
70
+ * - See more details on the [unique suffixes requirement](http://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES).
71
+ *
72
+ * @param tokType - The Type of the token to be consumed.
73
+ * @param options - optional properties to modify the behavior of CONSUME.
74
+ */
75
+ CONSUME: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;
76
+ CONSUME1: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;
77
+ CONSUME2: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;
78
+ CONSUME3: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;
79
+ CONSUME4: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;
80
+ CONSUME5: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;
81
+ CONSUME6: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;
82
+ CONSUME7: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;
83
+ CONSUME8: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;
84
+ CONSUME9: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;
85
+ /**
86
+ * Parsing DSL Method that Indicates an Optional production.
87
+ * in EBNF notation this is equivalent to: "[...]".
88
+ *
89
+ * Note that there are two syntax forms:
90
+ * - Passing the grammar action directly:
91
+ * ```
92
+ * this.OPTION(() => {
93
+ * this.CONSUME(Digit)}
94
+ * );
95
+ * ```
96
+ *
97
+ * - using an "options" object:
98
+ * ```
99
+ * this.OPTION({
100
+ * GATE:predicateFunc,
101
+ * DEF: () => {
102
+ * this.CONSUME(Digit)
103
+ * }});
104
+ * ```
105
+ *
106
+ * The optional 'GATE' property in "options" object form can be used to add constraints
107
+ * to invoking the grammar action.
108
+ *
109
+ * As in CONSUME the index in the method name indicates the occurrence
110
+ * of the optional production in it's top rule.
111
+ *
112
+ * @param actionORMethodDef - The grammar action to optionally invoke once
113
+ * or an "OPTIONS" object describing the grammar action and optional properties.
114
+ *
115
+ * @returns The `GrammarAction` return value (OUT) if the optional syntax is encountered
116
+ * or `undefined` if not.
117
+ */
118
+ OPTION: <OUT>(actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>) => OUT | undefined;
119
+ OPTION1: <OUT>(actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>) => OUT | undefined;
120
+ OPTION2: <OUT>(actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>) => OUT | undefined;
121
+ OPTION3: <OUT>(actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>) => OUT | undefined;
122
+ OPTION4: <OUT>(actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>) => OUT | undefined;
123
+ OPTION5: <OUT>(actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>) => OUT | undefined;
124
+ OPTION6: <OUT>(actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>) => OUT | undefined;
125
+ OPTION7: <OUT>(actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>) => OUT | undefined;
126
+ OPTION8: <OUT>(actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>) => OUT | undefined;
127
+ OPTION9: <OUT>(actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>) => OUT | undefined;
128
+ /**
129
+ * Parsing DSL method that indicates a choice between a set of alternatives must be made.
130
+ * This is equivalent to an EBNF alternation (A | B | C | D ...), except
131
+ * that the alternatives are ordered like in a PEG grammar.
132
+ * This means that the **first** matching alternative is always chosen.
133
+ *
134
+ * There are several forms for the inner alternatives array:
135
+ *
136
+ * - Passing alternatives array directly:
137
+ * ```
138
+ * this.OR([
139
+ * { ALT:() => { this.CONSUME(One) }},
140
+ * { ALT:() => { this.CONSUME(Two) }},
141
+ * { ALT:() => { this.CONSUME(Three) }}
142
+ * ])
143
+ * ```
144
+ *
145
+ * - Passing alternative array directly with predicates (GATE):
146
+ * ```
147
+ * this.OR([
148
+ * { GATE: predicateFunc1, ALT:() => { this.CONSUME(One) }},
149
+ * { GATE: predicateFuncX, ALT:() => { this.CONSUME(Two) }},
150
+ * { GATE: predicateFuncX, ALT:() => { this.CONSUME(Three) }}
151
+ * ])
152
+ * ```
153
+ *
154
+ * - These syntax forms can also be mixed:
155
+ * ```
156
+ * this.OR([
157
+ * {
158
+ * GATE: predicateFunc1,
159
+ * ALT:() => { this.CONSUME(One) }
160
+ * },
161
+ * { ALT:() => { this.CONSUME(Two) }},
162
+ * { ALT:() => { this.CONSUME(Three) }}
163
+ * ])
164
+ * ```
165
+ *
166
+ * - Additionally an "options" object may be used:
167
+ * ```
168
+ * this.OR({
169
+ * DEF:[
170
+ * { ALT:() => { this.CONSUME(One) }},
171
+ * { ALT:() => { this.CONSUME(Two) }},
172
+ * { ALT:() => { this.CONSUME(Three) }}
173
+ * ],
174
+ * // OPTIONAL property
175
+ * ERR_MSG: "A Number"
176
+ * })
177
+ * ```
178
+ *
179
+ * The 'predicateFuncX' in the long form can be used to add constraints to choosing the alternative.
180
+ *
181
+ * As in CONSUME the index in the method name indicates the occurrence
182
+ * of the alternation production in it's top rule.
183
+ *
184
+ * @param altsOrOpts - A set of alternatives or an "OPTIONS" object describing the alternatives
185
+ * and optional properties.
186
+ *
187
+ * @returns The result of invoking the chosen alternative.
188
+ */
189
+ OR: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;
190
+ OR1: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;
191
+ OR2: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;
192
+ OR3: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;
193
+ OR4: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;
194
+ OR5: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;
195
+ OR6: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;
196
+ OR7: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;
197
+ OR8: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;
198
+ OR9: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;
199
+ /**
200
+ * Parsing DSL method, that indicates a repetition of zero or more.
201
+ * This is equivalent to EBNF repetition \{...\}.
202
+ *
203
+ * Note that there are two syntax forms:
204
+ * - Passing the grammar action directly:
205
+ * ```
206
+ * this.MANY(() => {
207
+ * this.CONSUME(Comma)
208
+ * this.CONSUME(Digit)
209
+ * })
210
+ * ```
211
+ *
212
+ * - using an "options" object:
213
+ * ```
214
+ * this.MANY({
215
+ * GATE: predicateFunc,
216
+ * DEF: () => {
217
+ * this.CONSUME(Comma)
218
+ * this.CONSUME(Digit)
219
+ * }
220
+ * });
221
+ * ```
222
+ *
223
+ * The optional 'GATE' property in "options" object form can be used to add constraints
224
+ * to invoking the grammar action.
225
+ *
226
+ * As in CONSUME the index in the method name indicates the occurrence
227
+ * of the repetition production in it's top rule.
228
+ *
229
+ * @param actionORMethodDef - The grammar action to optionally invoke multiple times
230
+ * or an "OPTIONS" object describing the grammar action and optional properties.
231
+ *
232
+ */
233
+ MANY: (actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>) => void;
234
+ MANY1: (actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>) => void;
235
+ MANY2: (actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>) => void;
236
+ MANY3: (actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>) => void;
237
+ MANY4: (actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>) => void;
238
+ MANY5: (actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>) => void;
239
+ MANY6: (actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>) => void;
240
+ MANY7: (actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>) => void;
241
+ MANY8: (actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>) => void;
242
+ MANY9: (actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>) => void;
243
+ /**
244
+ * Parsing DSL method, that indicates a repetition of zero or more with a separator
245
+ * Token between the repetitions.
246
+ *
247
+ * Example:
248
+ *
249
+ * ```
250
+ * this.MANY_SEP({
251
+ * SEP:Comma,
252
+ * DEF: () => {
253
+ * this.CONSUME(Number};
254
+ * // ...
255
+ * })
256
+ * ```
257
+ *
258
+ * Note that because this DSL method always requires more than one argument the options object is always required
259
+ * and it is not possible to use a shorter form like in the MANY DSL method.
260
+ *
261
+ * Note that for the purposes of deciding on whether or not another iteration exists
262
+ * Only a single Token is examined (The separator). Therefore if the grammar being implemented is
263
+ * so "crazy" to require multiple tokens to identify an item separator please use the more basic DSL methods
264
+ * to implement it.
265
+ *
266
+ * As in CONSUME the index in the method name indicates the occurrence
267
+ * of the repetition production in it's top rule.
268
+ *
269
+ * @param options - An object defining the grammar of each iteration and the separator between iterations
270
+ *
271
+ */
272
+ MANY_SEP: (options: ManySepMethodOpts<any>) => void;
273
+ MANY_SEP1: (options: ManySepMethodOpts<any>) => void;
274
+ MANY_SEP2: (options: ManySepMethodOpts<any>) => void;
275
+ MANY_SEP3: (options: ManySepMethodOpts<any>) => void;
276
+ MANY_SEP4: (options: ManySepMethodOpts<any>) => void;
277
+ MANY_SEP5: (options: ManySepMethodOpts<any>) => void;
278
+ MANY_SEP6: (options: ManySepMethodOpts<any>) => void;
279
+ MANY_SEP7: (options: ManySepMethodOpts<any>) => void;
280
+ MANY_SEP8: (options: ManySepMethodOpts<any>) => void;
281
+ MANY_SEP9: (options: ManySepMethodOpts<any>) => void;
282
+ /**
283
+ * Convenience method, same as MANY but the repetition is of one or more.
284
+ * failing to match at least one repetition will result in a parsing error and
285
+ * cause a parsing error.
286
+ *
287
+ * @see MANY
288
+ *
289
+ * @param actionORMethodDef - The grammar action to optionally invoke multiple times
290
+ * or an "OPTIONS" object describing the grammar action and optional properties.
291
+ *
292
+ */
293
+ AT_LEAST_ONE: (actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>) => void;
294
+ AT_LEAST_ONE1: (actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>) => void;
295
+ AT_LEAST_ONE2: (actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>) => void;
296
+ AT_LEAST_ONE3: (actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>) => void;
297
+ AT_LEAST_ONE4: (actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>) => void;
298
+ AT_LEAST_ONE5: (actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>) => void;
299
+ AT_LEAST_ONE6: (actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>) => void;
300
+ AT_LEAST_ONE7: (actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>) => void;
301
+ AT_LEAST_ONE8: (actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>) => void;
302
+ AT_LEAST_ONE9: (actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>) => void;
303
+ /**
304
+ * Convenience method, same as MANY_SEP but the repetition is of one or more.
305
+ * failing to match at least one repetition will result in a parsing error and
306
+ * cause the parser to attempt error recovery.
307
+ *
308
+ * Note that an additional optional property ERR_MSG can be used to provide custom error messages.
309
+ *
310
+ * @see MANY_SEP
311
+ *
312
+ * @param options - An object defining the grammar of each iteration and the separator between iterations
313
+ *
314
+ * @return {ISeparatedIterationResult<OUT>}
315
+ */
316
+ AT_LEAST_ONE_SEP: (options: AtLeastOneSepMethodOpts<any>) => void;
317
+ AT_LEAST_ONE_SEP1: (options: AtLeastOneSepMethodOpts<any>) => void;
318
+ AT_LEAST_ONE_SEP2: (options: AtLeastOneSepMethodOpts<any>) => void;
319
+ AT_LEAST_ONE_SEP3: (options: AtLeastOneSepMethodOpts<any>) => void;
320
+ AT_LEAST_ONE_SEP4: (options: AtLeastOneSepMethodOpts<any>) => void;
321
+ AT_LEAST_ONE_SEP5: (options: AtLeastOneSepMethodOpts<any>) => void;
322
+ AT_LEAST_ONE_SEP6: (options: AtLeastOneSepMethodOpts<any>) => void;
323
+ AT_LEAST_ONE_SEP7: (options: AtLeastOneSepMethodOpts<any>) => void;
324
+ AT_LEAST_ONE_SEP8: (options: AtLeastOneSepMethodOpts<any>) => void;
325
+ AT_LEAST_ONE_SEP9: (options: AtLeastOneSepMethodOpts<any>) => void;
326
+ ACTION: <T>(impl: () => T) => T;
327
+ BACKTRACK: BacktrackFunc;
328
+ SUBRULE: SubRuleFunc;
329
+ SUBRULE1: SubRuleFunc;
330
+ SUBRULE2: SubRuleFunc;
331
+ SUBRULE3: SubRuleFunc;
332
+ SUBRULE4: SubRuleFunc;
333
+ SUBRULE5: SubRuleFunc;
334
+ SUBRULE6: SubRuleFunc;
335
+ SUBRULE7: SubRuleFunc;
336
+ SUBRULE8: SubRuleFunc;
337
+ SUBRULE9: SubRuleFunc;
338
+ }
339
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ruleDefTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruleDefTypes.js","sourceRoot":"","sources":["ruleDefTypes.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n AtLeastOneSepMethodOpts,\n DSLMethodOpts,\n DSLMethodOptsWithErr,\n GrammarAction,\n IOrAlt,\n ManySepMethodOpts,\n OrMethodOpts,\n} from '@chevrotain/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { ConsumeMethodOpts, IToken, TokenType } from 'chevrotain';\nimport type { DataFactory } from 'rdf-data-factory';\n\nexport type RuleDef<\n NameType extends string = string,\n ReturnType = unknown,\n ParamType extends unknown[] = unknown[],\n> = {\n name: NameType;\n impl: (def: ImplArgs) => (...args: ArrayElementsUndefinable<ParamType>) => ReturnType;\n};\n\nexport type RuleDefReturn<T> = T extends RuleDef<any, infer Ret, any> ? Ret : never;\n\ntype ArrayElementsUndefinable<ArrayType extends any[]> =\n ArrayType extends [infer First, ...infer Rest] ? [First | undefined, ...ArrayElementsUndefinable<Rest>] : [];\n\nexport interface ImplArgs extends CstDef {\n cache: WeakMap<RuleDef, unknown>;\n context: {\n dataFactory: DataFactory<RDF.BaseQuad>;\n /**\n * Current scoped prefixes. Used for resolving prefixed names.\n */\n prefixes: Record<string, string>;\n /**\n * The base IRI for the query. Used for resolving relative IRIs.\n */\n baseIRI: string | undefined;\n /**\n * Set of blank node labels that have been flushed. Used for note 10.\n */\n flushedBlankNodeLabels: Set<string>;\n /**\n * Set of blank node labels that have been used. Used for note 10.\n */\n usedBlankNodeLabels: Set<string>;\n /**\n * Can be used to disable the validation that used variables in a select clause are in scope.\n */\n skipValidation: boolean;\n /**\n * Set of queryModes. Primarily used for note 8, 14.\n */\n parseMode: Set<symbol>;\n };\n}\n\ntype SubRuleFunc = <T extends string, U = unknown, ARGS extends any[] = []>(\n cstDef: RuleDef<T, U, ARGS>,\n ...argument: ARGS\n) => U;\ntype BacktrackFunc = <T extends string, U = unknown, ARGS extends any[] = []>(\n cstDef: RuleDef<T, U, ARGS>,\n ...argument: ARGS\n) => () => boolean;\n\nexport interface CstDef {\n /**\n *\n * A Parsing DSL method use to consume a single Token.\n * In EBNF terms this is equivalent to a Terminal.\n *\n * A Token will be consumed, IFF the next token in the token vector matches `tokType`.\n * otherwise the parser may attempt to perform error recovery (if enabled).\n *\n * The index in the method name indicates the unique occurrence of a terminal consumption\n * inside a the top level rule. What this means is that if a terminal appears\n * more than once in a single rule, each appearance must have a **different** index.\n *\n * For example:\n * ```\n * this.RULE(\"qualifiedName\", () => {\n * this.CONSUME1(Identifier);\n * this.MANY(() => {\n * this.CONSUME1(Dot);\n * // here we use CONSUME2 because the terminal\n * // 'Identifier' has already appeared previously in the\n * // the rule 'parseQualifiedName'\n * this.CONSUME2(Identifier);\n * });\n * })\n * ```\n *\n * - See more details on the [unique suffixes requirement](http://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES).\n *\n * @param tokType - The Type of the token to be consumed.\n * @param options - optional properties to modify the behavior of CONSUME.\n */\n CONSUME: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;\n CONSUME1: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;\n CONSUME2: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;\n CONSUME3: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;\n CONSUME4: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;\n CONSUME5: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;\n CONSUME6: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;\n CONSUME7: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;\n CONSUME8: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;\n CONSUME9: (tokType: TokenType, options?: ConsumeMethodOpts) => IToken;\n /**\n * Parsing DSL Method that Indicates an Optional production.\n * in EBNF notation this is equivalent to: \"[...]\".\n *\n * Note that there are two syntax forms:\n * - Passing the grammar action directly:\n * ```\n * this.OPTION(() => {\n * this.CONSUME(Digit)}\n * );\n * ```\n *\n * - using an \"options\" object:\n * ```\n * this.OPTION({\n * GATE:predicateFunc,\n * DEF: () => {\n * this.CONSUME(Digit)\n * }});\n * ```\n *\n * The optional 'GATE' property in \"options\" object form can be used to add constraints\n * to invoking the grammar action.\n *\n * As in CONSUME the index in the method name indicates the occurrence\n * of the optional production in it's top rule.\n *\n * @param actionORMethodDef - The grammar action to optionally invoke once\n * or an \"OPTIONS\" object describing the grammar action and optional properties.\n *\n * @returns The `GrammarAction` return value (OUT) if the optional syntax is encountered\n * or `undefined` if not.\n */\n OPTION: <OUT>(\n actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>,\n ) => OUT | undefined;\n OPTION1: <OUT>(\n actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>,\n ) => OUT | undefined;\n OPTION2: <OUT>(\n actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>,\n ) => OUT | undefined;\n OPTION3: <OUT>(\n actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>,\n ) => OUT | undefined;\n OPTION4: <OUT>(\n actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>,\n ) => OUT | undefined;\n OPTION5: <OUT>(\n actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>,\n ) => OUT | undefined;\n OPTION6: <OUT>(\n actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>,\n ) => OUT | undefined;\n OPTION7: <OUT>(\n actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>,\n ) => OUT | undefined;\n OPTION8: <OUT>(\n actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>,\n ) => OUT | undefined;\n OPTION9: <OUT>(\n actionORMethodDef: GrammarAction<OUT> | DSLMethodOpts<OUT>,\n ) => OUT | undefined;\n /**\n * Parsing DSL method that indicates a choice between a set of alternatives must be made.\n * This is equivalent to an EBNF alternation (A | B | C | D ...), except\n * that the alternatives are ordered like in a PEG grammar.\n * This means that the **first** matching alternative is always chosen.\n *\n * There are several forms for the inner alternatives array:\n *\n * - Passing alternatives array directly:\n * ```\n * this.OR([\n * { ALT:() => { this.CONSUME(One) }},\n * { ALT:() => { this.CONSUME(Two) }},\n * { ALT:() => { this.CONSUME(Three) }}\n * ])\n * ```\n *\n * - Passing alternative array directly with predicates (GATE):\n * ```\n * this.OR([\n * { GATE: predicateFunc1, ALT:() => { this.CONSUME(One) }},\n * { GATE: predicateFuncX, ALT:() => { this.CONSUME(Two) }},\n * { GATE: predicateFuncX, ALT:() => { this.CONSUME(Three) }}\n * ])\n * ```\n *\n * - These syntax forms can also be mixed:\n * ```\n * this.OR([\n * {\n * GATE: predicateFunc1,\n * ALT:() => { this.CONSUME(One) }\n * },\n * { ALT:() => { this.CONSUME(Two) }},\n * { ALT:() => { this.CONSUME(Three) }}\n * ])\n * ```\n *\n * - Additionally an \"options\" object may be used:\n * ```\n * this.OR({\n * DEF:[\n * { ALT:() => { this.CONSUME(One) }},\n * { ALT:() => { this.CONSUME(Two) }},\n * { ALT:() => { this.CONSUME(Three) }}\n * ],\n * // OPTIONAL property\n * ERR_MSG: \"A Number\"\n * })\n * ```\n *\n * The 'predicateFuncX' in the long form can be used to add constraints to choosing the alternative.\n *\n * As in CONSUME the index in the method name indicates the occurrence\n * of the alternation production in it's top rule.\n *\n * @param altsOrOpts - A set of alternatives or an \"OPTIONS\" object describing the alternatives\n * and optional properties.\n *\n * @returns The result of invoking the chosen alternative.\n */\n OR: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;\n OR1: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;\n OR2: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;\n OR3: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;\n OR4: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;\n OR5: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;\n OR6: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;\n OR7: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;\n OR8: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;\n OR9: <T>(altsOrOpts: IOrAlt<T>[] | OrMethodOpts<T>) => T;\n /**\n * Parsing DSL method, that indicates a repetition of zero or more.\n * This is equivalent to EBNF repetition \\{...\\}.\n *\n * Note that there are two syntax forms:\n * - Passing the grammar action directly:\n * ```\n * this.MANY(() => {\n * this.CONSUME(Comma)\n * this.CONSUME(Digit)\n * })\n * ```\n *\n * - using an \"options\" object:\n * ```\n * this.MANY({\n * GATE: predicateFunc,\n * DEF: () => {\n * this.CONSUME(Comma)\n * this.CONSUME(Digit)\n * }\n * });\n * ```\n *\n * The optional 'GATE' property in \"options\" object form can be used to add constraints\n * to invoking the grammar action.\n *\n * As in CONSUME the index in the method name indicates the occurrence\n * of the repetition production in it's top rule.\n *\n * @param actionORMethodDef - The grammar action to optionally invoke multiple times\n * or an \"OPTIONS\" object describing the grammar action and optional properties.\n *\n */\n MANY: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>,\n ) => void;\n MANY1: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>,\n ) => void;\n MANY2: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>,\n ) => void;\n MANY3: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>,\n ) => void;\n MANY4: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>,\n ) => void;\n MANY5: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>,\n ) => void;\n MANY6: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>,\n ) => void;\n MANY7: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>,\n ) => void;\n MANY8: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>,\n ) => void;\n MANY9: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOpts<any>,\n ) => void;\n /**\n * Parsing DSL method, that indicates a repetition of zero or more with a separator\n * Token between the repetitions.\n *\n * Example:\n *\n * ```\n * this.MANY_SEP({\n * SEP:Comma,\n * DEF: () => {\n * this.CONSUME(Number};\n * // ...\n * })\n * ```\n *\n * Note that because this DSL method always requires more than one argument the options object is always required\n * and it is not possible to use a shorter form like in the MANY DSL method.\n *\n * Note that for the purposes of deciding on whether or not another iteration exists\n * Only a single Token is examined (The separator). Therefore if the grammar being implemented is\n * so \"crazy\" to require multiple tokens to identify an item separator please use the more basic DSL methods\n * to implement it.\n *\n * As in CONSUME the index in the method name indicates the occurrence\n * of the repetition production in it's top rule.\n *\n * @param options - An object defining the grammar of each iteration and the separator between iterations\n *\n */\n MANY_SEP: (options: ManySepMethodOpts<any>) => void;\n MANY_SEP1: (options: ManySepMethodOpts<any>) => void;\n MANY_SEP2: (options: ManySepMethodOpts<any>) => void;\n MANY_SEP3: (options: ManySepMethodOpts<any>) => void;\n MANY_SEP4: (options: ManySepMethodOpts<any>) => void;\n MANY_SEP5: (options: ManySepMethodOpts<any>) => void;\n MANY_SEP6: (options: ManySepMethodOpts<any>) => void;\n MANY_SEP7: (options: ManySepMethodOpts<any>) => void;\n MANY_SEP8: (options: ManySepMethodOpts<any>) => void;\n MANY_SEP9: (options: ManySepMethodOpts<any>) => void;\n /**\n * Convenience method, same as MANY but the repetition is of one or more.\n * failing to match at least one repetition will result in a parsing error and\n * cause a parsing error.\n *\n * @see MANY\n *\n * @param actionORMethodDef - The grammar action to optionally invoke multiple times\n * or an \"OPTIONS\" object describing the grammar action and optional properties.\n *\n */\n AT_LEAST_ONE: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>,\n ) => void;\n AT_LEAST_ONE1: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>,\n ) => void;\n AT_LEAST_ONE2: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>,\n ) => void;\n AT_LEAST_ONE3: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>,\n ) => void;\n AT_LEAST_ONE4: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>,\n ) => void;\n AT_LEAST_ONE5: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>,\n ) => void;\n AT_LEAST_ONE6: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>,\n ) => void;\n AT_LEAST_ONE7: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>,\n ) => void;\n AT_LEAST_ONE8: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>,\n ) => void;\n AT_LEAST_ONE9: (\n actionORMethodDef: GrammarAction<any> | DSLMethodOptsWithErr<any>,\n ) => void;\n /**\n * Convenience method, same as MANY_SEP but the repetition is of one or more.\n * failing to match at least one repetition will result in a parsing error and\n * cause the parser to attempt error recovery.\n *\n * Note that an additional optional property ERR_MSG can be used to provide custom error messages.\n *\n * @see MANY_SEP\n *\n * @param options - An object defining the grammar of each iteration and the separator between iterations\n *\n * @return {ISeparatedIterationResult<OUT>}\n */\n AT_LEAST_ONE_SEP: (options: AtLeastOneSepMethodOpts<any>) => void;\n AT_LEAST_ONE_SEP1: (options: AtLeastOneSepMethodOpts<any>) => void;\n AT_LEAST_ONE_SEP2: (options: AtLeastOneSepMethodOpts<any>) => void;\n AT_LEAST_ONE_SEP3: (options: AtLeastOneSepMethodOpts<any>) => void;\n AT_LEAST_ONE_SEP4: (options: AtLeastOneSepMethodOpts<any>) => void;\n AT_LEAST_ONE_SEP5: (options: AtLeastOneSepMethodOpts<any>) => void;\n AT_LEAST_ONE_SEP6: (options: AtLeastOneSepMethodOpts<any>) => void;\n AT_LEAST_ONE_SEP7: (options: AtLeastOneSepMethodOpts<any>) => void;\n AT_LEAST_ONE_SEP8: (options: AtLeastOneSepMethodOpts<any>) => void;\n AT_LEAST_ONE_SEP9: (options: AtLeastOneSepMethodOpts<any>) => void;\n ACTION: <T>(impl: () => T) => T;\n BACKTRACK: BacktrackFunc;\n SUBRULE: SubRuleFunc;\n SUBRULE1: SubRuleFunc;\n SUBRULE2: SubRuleFunc;\n SUBRULE3: SubRuleFunc;\n SUBRULE4: SubRuleFunc;\n SUBRULE5: SubRuleFunc;\n SUBRULE6: SubRuleFunc;\n SUBRULE7: SubRuleFunc;\n SUBRULE8: SubRuleFunc;\n SUBRULE9: SubRuleFunc;\n}\n"]}
@@ -0,0 +1,16 @@
1
+ export declare enum CommonIRIs {
2
+ BOOLEAN = "http://www.w3.org/2001/XMLSchema#boolean",
3
+ INTEGER = "http://www.w3.org/2001/XMLSchema#integer",
4
+ DECIMAL = "http://www.w3.org/2001/XMLSchema#decimal",
5
+ DOUBLE = "http://www.w3.org/2001/XMLSchema#double",
6
+ FIRST = "http://www.w3.org/1999/02/22-rdf-syntax-ns#first",
7
+ REST = "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest",
8
+ NIL = "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil",
9
+ TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
10
+ REIFIES = "http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies"
11
+ }
12
+ export declare function unCapitalize<T extends string>(str: T): Uncapitalize<T>;
13
+ /**
14
+ * Resolves an IRI against a base path
15
+ */
16
+ export declare function resolveIRI(iri: string, base: string | undefined): string;
@@ -0,0 +1,47 @@
1
+ export var CommonIRIs;
2
+ (function (CommonIRIs) {
3
+ // XSD
4
+ CommonIRIs["BOOLEAN"] = "http://www.w3.org/2001/XMLSchema#boolean";
5
+ CommonIRIs["INTEGER"] = "http://www.w3.org/2001/XMLSchema#integer";
6
+ CommonIRIs["DECIMAL"] = "http://www.w3.org/2001/XMLSchema#decimal";
7
+ CommonIRIs["DOUBLE"] = "http://www.w3.org/2001/XMLSchema#double";
8
+ // RDF
9
+ CommonIRIs["FIRST"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#first";
10
+ CommonIRIs["REST"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest";
11
+ CommonIRIs["NIL"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil";
12
+ CommonIRIs["TYPE"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
13
+ CommonIRIs["REIFIES"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies";
14
+ })(CommonIRIs || (CommonIRIs = {}));
15
+ export function unCapitalize(str) {
16
+ return (str.charAt(0).toLowerCase() + str.slice(1));
17
+ }
18
+ /**
19
+ * Resolves an IRI against a base path
20
+ */
21
+ export function resolveIRI(iri, base) {
22
+ // Return absolute IRIs unmodified
23
+ if (/^[a-z][\d+.a-z-]*:/iu.test(iri)) {
24
+ return iri;
25
+ }
26
+ if (!base) {
27
+ throw new Error(`Cannot resolve relative IRI ${iri} because no base IRI was set.`);
28
+ }
29
+ switch (iri[0]) {
30
+ // An empty relative IRI indicates the base IRI
31
+ case undefined:
32
+ return base;
33
+ // Resolve relative fragment IRIs against the base IRI
34
+ case '#':
35
+ return base + iri;
36
+ // Resolve relative query string IRIs by replacing the query string
37
+ case '?':
38
+ return base.replace(/(?:\?.*)?$/u, iri);
39
+ // Resolve root relative IRIs at the root of the base IRI
40
+ case '/':
41
+ return base + iri;
42
+ // Resolve all other IRIs at the base IRI's path
43
+ default:
44
+ return base + iri;
45
+ }
46
+ }
47
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAYX;AAZD,WAAY,UAAU;IACpB,MAAM;IACN,kEAAoD,CAAA;IACpD,kEAAoD,CAAA;IACpD,kEAAoD,CAAA;IACpD,gEAAkD,CAAA;IAClD,MAAM;IACN,wEAA0D,CAAA;IAC1D,sEAAwD,CAAA;IACxD,oEAAsD,CAAA;IACtD,sEAAwD,CAAA;IACxD,4EAA8D,CAAA;AAChE,CAAC,EAZW,UAAU,KAAV,UAAU,QAYrB;AAED,MAAM,UAAU,YAAY,CAAmB,GAAM;IACnD,OAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,IAAwB;IAC9D,kCAAkC;IAClC,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,+BAA+B,CAAC,CAAC;IACrF,CAAC;IACD,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,+CAA+C;QAC/C,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC;QACd,sDAAsD;QACtD,KAAK,GAAG;YACN,OAAO,IAAI,GAAG,GAAG,CAAC;QACpB,mEAAmE;QACnE,KAAK,GAAG;YACN,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC1C,yDAAyD;QACzD,KAAK,GAAG;YACN,OAAO,IAAI,GAAG,GAAG,CAAC;QACpB,gDAAgD;QAChD;YACE,OAAO,IAAI,GAAG,GAAG,CAAC;IACtB,CAAC;AACH,CAAC","sourcesContent":["export enum CommonIRIs {\n // XSD\n BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n // RDF\n FIRST = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#first',\n REST = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#rest',\n NIL = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil',\n TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',\n REIFIES = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies',\n}\n\nexport function unCapitalize<T extends string>(str: T): Uncapitalize<T> {\n return <Uncapitalize<T>> (str.charAt(0).toLowerCase() + str.slice(1));\n}\n\n/**\n * Resolves an IRI against a base path\n */\nexport function resolveIRI(iri: string, base: string | undefined): string {\n // Return absolute IRIs unmodified\n if (/^[a-z][\\d+.a-z-]*:/iu.test(iri)) {\n return iri;\n }\n if (!base) {\n throw new Error(`Cannot resolve relative IRI ${iri} because no base IRI was set.`);\n }\n switch (iri[0]) {\n // An empty relative IRI indicates the base IRI\n case undefined:\n return base;\n // Resolve relative fragment IRIs against the base IRI\n case '#':\n return base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?':\n return base.replace(/(?:\\?.*)?$/u, iri);\n // Resolve root relative IRIs at the root of the base IRI\n case '/':\n return base + iri;\n // Resolve all other IRIs at the base IRI's path\n default:\n return base + iri;\n }\n}\n\n\n"]}