grammar-well 1.3.2 → 2.0.0
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/LICENSE +165 -0
- package/README.md +76 -560
- package/build/generator/artifacts/basic.d.ts +7 -0
- package/build/generator/artifacts/basic.js +24 -0
- package/build/generator/artifacts/basic.js.map +1 -0
- package/build/generator/artifacts/lexer.d.ts +13 -0
- package/build/generator/artifacts/lexer.js +204 -0
- package/build/generator/artifacts/lexer.js.map +1 -0
- package/build/{compiler/generator → generator}/artifacts/lr.d.ts +14 -14
- package/build/{compiler/generator → generator}/artifacts/lr.js +18 -22
- package/build/generator/artifacts/lr.js.map +1 -0
- package/build/generator/builtin/json.d.ts +183 -0
- package/build/generator/builtin/json.js +124 -0
- package/build/generator/builtin/json.js.map +1 -0
- package/build/generator/builtin/registry.json +1 -0
- package/build/generator/builtin/whitespace.d.ts +61 -0
- package/build/generator/builtin/whitespace.js +37 -0
- package/build/generator/builtin/whitespace.js.map +1 -0
- package/build/generator/generator.d.ts +38 -0
- package/build/generator/generator.js +368 -0
- package/build/generator/generator.js.map +1 -0
- package/build/generator/grammars/index.d.ts +2 -0
- package/build/generator/grammars/index.js +3 -0
- package/build/generator/grammars/index.js.map +1 -0
- package/build/generator/grammars/v1.d.ts +1190 -0
- package/build/generator/grammars/v1.js +614 -0
- package/build/generator/grammars/v1.js.map +1 -0
- package/build/generator/grammars/v2.d.ts +1367 -0
- package/build/generator/grammars/v2.js +695 -0
- package/build/generator/grammars/v2.js.map +1 -0
- package/build/generator/import-resolvers/auto.d.ts +2 -0
- package/build/generator/import-resolvers/auto.js +11 -0
- package/build/generator/import-resolvers/auto.js.map +1 -0
- package/build/generator/import-resolvers/browser.d.ts +7 -0
- package/build/generator/import-resolvers/browser.js +13 -0
- package/build/generator/import-resolvers/browser.js.map +1 -0
- package/build/generator/import-resolvers/default.d.ts +2 -0
- package/build/generator/import-resolvers/default.js +11 -0
- package/build/generator/import-resolvers/default.js.map +1 -0
- package/build/generator/import-resolvers/filesystem.d.ts +7 -0
- package/build/generator/import-resolvers/filesystem.js +15 -0
- package/build/generator/import-resolvers/filesystem.js.map +1 -0
- package/build/generator/index.d.ts +3 -0
- package/build/generator/index.js +4 -0
- package/build/generator/index.js.map +1 -0
- package/build/generator/state.d.ts +28 -0
- package/build/generator/state.js +73 -0
- package/build/generator/state.js.map +1 -0
- package/build/generator/stringify/common.d.ts +22 -0
- package/build/generator/stringify/common.js +83 -0
- package/build/generator/stringify/common.js.map +1 -0
- package/build/generator/stringify/exports/javascript.d.ts +3 -0
- package/build/generator/stringify/exports/javascript.js +26 -0
- package/build/generator/stringify/exports/javascript.js.map +1 -0
- package/build/generator/stringify/exports/json.d.ts +2 -0
- package/build/generator/stringify/exports/json.js +4 -0
- package/build/generator/stringify/exports/json.js.map +1 -0
- package/build/generator/stringify/exports/registry.d.ts +20 -0
- package/build/generator/stringify/exports/registry.js +17 -0
- package/build/generator/stringify/exports/registry.js.map +1 -0
- package/build/generator/stringify/exports/typescript.d.ts +2 -0
- package/build/generator/stringify/exports/typescript.js +16 -0
- package/build/generator/stringify/exports/typescript.js.map +1 -0
- package/build/generator/stringify/grammar/v2.d.ts +20 -0
- package/build/generator/stringify/grammar/v2.js +211 -0
- package/build/generator/stringify/grammar/v2.js.map +1 -0
- package/build/generator/stringify/javascript.d.ts +13 -0
- package/build/generator/stringify/javascript.js +83 -0
- package/build/generator/stringify/javascript.js.map +1 -0
- package/build/index.d.ts +7 -6
- package/build/index.js +7 -24
- package/build/index.js.map +1 -1
- package/build/lexers/character-lexer.d.ts +2 -2
- package/build/lexers/character-lexer.js +1 -5
- package/build/lexers/character-lexer.js.map +1 -1
- package/build/lexers/stateful-lexer.d.ts +12 -17
- package/build/lexers/stateful-lexer.js +38 -186
- package/build/lexers/stateful-lexer.js.map +1 -1
- package/build/lexers/token-buffer.d.ts +8 -8
- package/build/lexers/token-buffer.js +1 -5
- package/build/lexers/token-buffer.js.map +1 -1
- package/build/parser/algorithms/cyk.d.ts +6 -6
- package/build/parser/algorithms/cyk.js +10 -13
- package/build/parser/algorithms/cyk.js.map +1 -1
- package/build/parser/algorithms/earley.d.ts +7 -7
- package/build/parser/algorithms/earley.js +7 -11
- package/build/parser/algorithms/earley.js.map +1 -1
- package/build/parser/algorithms/lrk/algorithm.d.ts +3 -3
- package/build/parser/algorithms/lrk/algorithm.js +10 -13
- package/build/parser/algorithms/lrk/algorithm.js.map +1 -1
- package/build/parser/algorithms/lrk/bimap.js +1 -5
- package/build/parser/algorithms/lrk/bimap.js.map +1 -1
- package/build/parser/algorithms/lrk/canonical-collection.d.ts +7 -7
- package/build/parser/algorithms/lrk/canonical-collection.js +11 -15
- package/build/parser/algorithms/lrk/canonical-collection.js.map +1 -1
- package/build/parser/algorithms/lrk/closure.d.ts +3 -3
- package/build/parser/algorithms/lrk/closure.js +3 -7
- package/build/parser/algorithms/lrk/closure.js.map +1 -1
- package/build/parser/algorithms/lrk/stack.d.ts +6 -6
- package/build/parser/algorithms/lrk/stack.js +1 -5
- package/build/parser/algorithms/lrk/stack.js.map +1 -1
- package/build/parser/algorithms/lrk/state.d.ts +5 -5
- package/build/parser/algorithms/lrk/state.js +1 -2
- package/build/parser/parse.d.ts +10 -0
- package/build/parser/parse.js +34 -0
- package/build/parser/parse.js.map +1 -0
- package/build/parser/parser.d.ts +6 -17
- package/build/parser/parser.js +26 -42
- package/build/parser/parser.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -0
- package/build/typings/ast.d.ts +134 -0
- package/build/typings/ast.js +3 -0
- package/build/typings/ast.js.map +1 -0
- package/build/typings/common.d.ts +4 -0
- package/build/typings/common.js +2 -0
- package/build/typings/common.js.map +1 -0
- package/build/typings/generator.d.ts +58 -0
- package/build/typings/generator.js +3 -0
- package/build/typings/generator.js.map +1 -0
- package/build/typings/index.d.ts +43 -0
- package/build/typings/index.js +5 -0
- package/build/typings/index.js.map +1 -0
- package/build/typings/runtime.d.ts +70 -0
- package/build/typings/runtime.js +2 -0
- package/build/typings/runtime.js.map +1 -0
- package/build/utility/format.d.ts +1 -0
- package/build/utility/format.js +12 -0
- package/build/utility/format.js.map +1 -0
- package/build/utility/formatter.d.ts +1 -0
- package/build/utility/formatter.js +12 -0
- package/build/utility/formatter.js.map +1 -0
- package/build/utility/general.d.ts +1 -1
- package/build/utility/general.js +5 -13
- package/build/utility/general.js.map +1 -1
- package/build/utility/index.d.ts +4 -1
- package/build/utility/index.js +4 -17
- package/build/utility/index.js.map +1 -1
- package/build/utility/lint.d.ts +2 -2
- package/build/utility/lint.js +2 -6
- package/build/utility/lint.js.map +1 -1
- package/build/utility/migrate.d.ts +1 -0
- package/build/utility/migrate.js +10 -0
- package/build/utility/migrate.js.map +1 -0
- package/build/utility/monarch.d.ts +2 -2
- package/build/utility/monarch.js +33 -38
- package/build/utility/monarch.js.map +1 -1
- package/build/utility/parsing.d.ts +6 -0
- package/build/utility/parsing.js +26 -0
- package/build/utility/parsing.js.map +1 -0
- package/build/utility/text-format.d.ts +6 -6
- package/build/utility/text-format.js +2 -6
- package/build/utility/text-format.js.map +1 -1
- package/package.json +17 -24
- package/src/generator/artifacts/basic.ts +26 -0
- package/src/generator/artifacts/lexer.ts +228 -0
- package/src/{compiler/generator → generator}/artifacts/lr.ts +25 -24
- package/src/generator/builtin/character.well +7 -0
- package/src/generator/builtin/json.well +85 -0
- package/src/generator/builtin/number.well +21 -0
- package/src/generator/builtin/registry.json +1 -0
- package/src/generator/builtin/string.well +54 -0
- package/src/generator/builtin/whitespace.well +16 -0
- package/src/generator/generator.ts +401 -0
- package/src/generator/grammars/index.ts +2 -0
- package/src/generator/grammars/v1.ts +620 -0
- package/src/generator/grammars/v1.well +422 -0
- package/src/generator/grammars/v2.ts +701 -0
- package/src/generator/grammars/v2.well +413 -0
- package/src/generator/import-resolvers/auto.ts +12 -0
- package/src/generator/import-resolvers/browser.ts +13 -0
- package/src/generator/import-resolvers/filesystem.ts +18 -0
- package/src/generator/index.ts +3 -0
- package/src/generator/state.ts +89 -0
- package/src/generator/stringify/common.ts +90 -0
- package/src/generator/stringify/exports/javascript.ts +29 -0
- package/src/generator/stringify/exports/json.ts +5 -0
- package/src/generator/stringify/exports/registry.ts +20 -0
- package/src/generator/stringify/exports/typescript.ts +17 -0
- package/src/generator/stringify/grammar/v2.ts +223 -0
- package/src/generator/stringify/javascript.ts +94 -0
- package/src/index.ts +7 -6
- package/src/lexers/character-lexer.ts +2 -2
- package/src/lexers/stateful-lexer.ts +46 -203
- package/src/lexers/token-buffer.ts +3 -3
- package/src/parser/algorithms/cyk.ts +13 -12
- package/src/parser/algorithms/earley.ts +10 -10
- package/src/parser/algorithms/lrk/algorithm.ts +8 -7
- package/src/parser/algorithms/lrk/canonical-collection.ts +14 -14
- package/src/parser/algorithms/lrk/closure.ts +6 -6
- package/src/parser/algorithms/lrk/stack.ts +6 -6
- package/src/parser/algorithms/lrk/state.ts +5 -5
- package/src/parser/parse.ts +45 -0
- package/src/typings/ast.ts +148 -0
- package/src/typings/common.ts +2 -0
- package/src/typings/generator.ts +62 -0
- package/src/typings/index.ts +38 -0
- package/src/typings/runtime.ts +82 -0
- package/src/utility/format.ts +12 -0
- package/src/utility/general.ts +1 -2
- package/src/utility/index.ts +4 -1
- package/src/utility/lint.ts +5 -5
- package/src/utility/monarch.ts +34 -34
- package/src/utility/parsing.ts +30 -0
- package/src/utility/text-format.ts +7 -7
- package/.eslintrc.cjs +0 -14
- package/bootstrap.ts +0 -45
- package/build/compiler/builtin.json +0 -1
- package/build/compiler/compiler.d.ts +0 -50
- package/build/compiler/compiler.js +0 -249
- package/build/compiler/compiler.js.map +0 -1
- package/build/compiler/generator/artifacts/lr.js.map +0 -1
- package/build/compiler/generator/artifacts/standard.d.ts +0 -7
- package/build/compiler/generator/artifacts/standard.js +0 -28
- package/build/compiler/generator/artifacts/standard.js.map +0 -1
- package/build/compiler/generator/generator.d.ts +0 -24
- package/build/compiler/generator/generator.js +0 -217
- package/build/compiler/generator/generator.js.map +0 -1
- package/build/compiler/gwell.d.ts +0 -1112
- package/build/compiler/gwell.js +0 -576
- package/build/compiler/gwell.js.map +0 -1
- package/build/compiler/import-resolver.d.ts +0 -15
- package/build/compiler/import-resolver.js +0 -37
- package/build/compiler/import-resolver.js.map +0 -1
- package/build/compiler/index.d.ts +0 -2
- package/build/compiler/index.js +0 -19
- package/build/compiler/index.js.map +0 -1
- package/build/compiler/outputs/javascript.d.ts +0 -3
- package/build/compiler/outputs/javascript.js +0 -29
- package/build/compiler/outputs/javascript.js.map +0 -1
- package/build/compiler/outputs/json.d.ts +0 -2
- package/build/compiler/outputs/json.js +0 -8
- package/build/compiler/outputs/json.js.map +0 -1
- package/build/compiler/outputs/typescript.d.ts +0 -2
- package/build/compiler/outputs/typescript.js +0 -21
- package/build/compiler/outputs/typescript.js.map +0 -1
- package/build/parser/algorithms/lr.d.ts +0 -7
- package/build/parser/algorithms/lr.js +0 -108
- package/build/parser/algorithms/lr.js.map +0 -5
- package/build/parser/algorithms/lr0.d.ts +0 -7
- package/build/parser/algorithms/lr0.js +0 -156
- package/build/parser/algorithms/lr0.js.map +0 -1
- package/build/typings.d.ts +0 -226
- package/build/typings.js +0 -3
- package/build/typings.js.map +0 -1
- package/src/compiler/builtin/json.gwell +0 -74
- package/src/compiler/builtin/number.gwell +0 -20
- package/src/compiler/builtin/string.gwell +0 -48
- package/src/compiler/builtin/whitespace.gwell +0 -10
- package/src/compiler/builtin.json +0 -1
- package/src/compiler/compiler.ts +0 -265
- package/src/compiler/generator/artifacts/standard.ts +0 -26
- package/src/compiler/generator/generator.ts +0 -237
- package/src/compiler/gwell.gwell +0 -294
- package/src/compiler/gwell.js +0 -578
- package/src/compiler/import-resolver.ts +0 -36
- package/src/compiler/index.ts +0 -2
- package/src/compiler/outputs/javascript.ts +0 -27
- package/src/compiler/outputs/json.ts +0 -5
- package/src/compiler/outputs/typescript.ts +0 -18
- package/src/parser/parser.ts +0 -77
- package/src/typings.ts +0 -248
- package/testing.ts +0 -18
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/typings/common.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { GeneratorState } from "../generator/state.js";
|
|
2
|
+
import { ASTGrammarSymbolLiteral, ASTGrammarSymbolNonTerminal, ASTGrammarSymbolRegex, ASTGrammarSymbolToken, ASTJavaScriptBuiltin, ASTJavaScriptLiteral, ASTJavaScriptTemplate, ASTLexerStateImportRule, ASTLexerStateMatchRule, ASTLexerStateNonMatchRule } from "./ast.js";
|
|
3
|
+
import { Dictionary } from "./common.js";
|
|
4
|
+
import { ImportResolver, ImportResolverConstructor } from "./index.js";
|
|
5
|
+
export type GenerateOptions = GeneratorOptions & {
|
|
6
|
+
output?: GeneratorOutputOptions;
|
|
7
|
+
};
|
|
8
|
+
export interface GeneratorOptions {
|
|
9
|
+
version?: string;
|
|
10
|
+
basedir?: string;
|
|
11
|
+
resolver?: ImportResolverConstructor | ImportResolver;
|
|
12
|
+
overrides?: Dictionary<string>;
|
|
13
|
+
}
|
|
14
|
+
export interface GeneratorOutputOptions {
|
|
15
|
+
artifacts?: {
|
|
16
|
+
lexer?: boolean;
|
|
17
|
+
grammar?: boolean;
|
|
18
|
+
[key: string]: boolean;
|
|
19
|
+
};
|
|
20
|
+
parser?: boolean;
|
|
21
|
+
format?: GeneratorExportFormat;
|
|
22
|
+
noscript?: boolean;
|
|
23
|
+
name?: string;
|
|
24
|
+
}
|
|
25
|
+
export type GeneratorExportFormat = 'object' | 'json' | 'cjs' | 'commonjs' | 'js' | 'javascript' | 'module' | 'esmodule' | 'esm' | 'ts' | 'typescript';
|
|
26
|
+
export interface GeneratorContext {
|
|
27
|
+
imported: Set<string>;
|
|
28
|
+
resolver: ImportResolver;
|
|
29
|
+
state: GeneratorState;
|
|
30
|
+
}
|
|
31
|
+
export interface GeneratorStateGrammar {
|
|
32
|
+
start: string;
|
|
33
|
+
config: {
|
|
34
|
+
algorithm?: 'earley' | 'lr0' | 'cyk';
|
|
35
|
+
postprocessorDefault?: ASTJavaScriptLiteral | ASTJavaScriptBuiltin;
|
|
36
|
+
postprocessorOverride?: ASTJavaScriptLiteral | ASTJavaScriptBuiltin;
|
|
37
|
+
};
|
|
38
|
+
rules: Dictionary<GeneratorGrammarProductionRule[]>;
|
|
39
|
+
uuids: {
|
|
40
|
+
[key: string]: number;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export interface GeneratorLexerConfig {
|
|
44
|
+
start?: string;
|
|
45
|
+
states: Dictionary<GeneratorLexerState>;
|
|
46
|
+
}
|
|
47
|
+
export interface GeneratorLexerState {
|
|
48
|
+
unmatched?: ASTLexerStateNonMatchRule;
|
|
49
|
+
rules: (ASTLexerStateImportRule | ASTLexerStateMatchRule)[];
|
|
50
|
+
}
|
|
51
|
+
export interface GeneratorGrammarProductionRule {
|
|
52
|
+
name: string;
|
|
53
|
+
symbols: GeneratorGrammarSymbol[];
|
|
54
|
+
postprocess?: ASTJavaScriptTemplate | ASTJavaScriptLiteral | ASTJavaScriptBuiltin;
|
|
55
|
+
}
|
|
56
|
+
export type GeneratorGrammarSymbol = {
|
|
57
|
+
alias?: string;
|
|
58
|
+
} & (ASTGrammarSymbolNonTerminal | ASTGrammarSymbolRegex | ASTGrammarSymbolLiteral | ASTGrammarSymbolToken);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/typings/generator.ts"],"names":[],"mappings":"AA2CC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { TokenBuffer } from "../lexers/token-buffer.js";
|
|
2
|
+
import { ParserUtility } from "../utility/parsing.js";
|
|
3
|
+
import { ASTLexerStateNonMatchRule } from "./ast.js";
|
|
4
|
+
import { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeParserClass, RuntimeLexerStateMatchRule } from "./runtime.js";
|
|
5
|
+
export * from './ast.js';
|
|
6
|
+
export * from './common.js';
|
|
7
|
+
export * from './generator.js';
|
|
8
|
+
export * from './runtime.js';
|
|
9
|
+
export interface ImportResolver {
|
|
10
|
+
path(path: string): string;
|
|
11
|
+
body(path: string): Promise<string>;
|
|
12
|
+
}
|
|
13
|
+
export interface ImportResolverConstructor {
|
|
14
|
+
new (basePath: string): ImportResolver;
|
|
15
|
+
}
|
|
16
|
+
export type ParserAlgorithm = ((language: RuntimeParserClass & {
|
|
17
|
+
tokens: TokenBuffer;
|
|
18
|
+
utility: ParserUtility;
|
|
19
|
+
}, options?: any) => {
|
|
20
|
+
results: any[];
|
|
21
|
+
info?: any;
|
|
22
|
+
});
|
|
23
|
+
export interface LRState {
|
|
24
|
+
actions: Next[];
|
|
25
|
+
goto: {
|
|
26
|
+
[key: string]: string;
|
|
27
|
+
};
|
|
28
|
+
reduce?: RuntimeGrammarProductionRule;
|
|
29
|
+
isFinal: boolean;
|
|
30
|
+
}
|
|
31
|
+
type Next = {
|
|
32
|
+
symbol: RuntimeGrammarRuleSymbol;
|
|
33
|
+
next: string;
|
|
34
|
+
};
|
|
35
|
+
export interface TQRestorePoint {
|
|
36
|
+
historyIndex: number;
|
|
37
|
+
offset: number;
|
|
38
|
+
}
|
|
39
|
+
export interface StatefulLexerStateDefinition {
|
|
40
|
+
regex: RegExp;
|
|
41
|
+
unmatched?: ASTLexerStateNonMatchRule;
|
|
42
|
+
rules: RuntimeLexerStateMatchRule[];
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/typings/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { LRState } from "./index.js";
|
|
2
|
+
import { ASTGrammarSymbolLiteral, ASTGrammarSymbolToken, ASTLexerStateNonMatchRule } from "./ast.js";
|
|
3
|
+
import { Dictionary } from "./common.js";
|
|
4
|
+
export interface RuntimeParserClass {
|
|
5
|
+
artifacts: {
|
|
6
|
+
lexer?: RuntimeLexer | RuntimeLexerConfig;
|
|
7
|
+
grammar: {
|
|
8
|
+
start: string;
|
|
9
|
+
rules: Dictionary<RuntimeGrammarProductionRule[]>;
|
|
10
|
+
};
|
|
11
|
+
lr?: {
|
|
12
|
+
k: number;
|
|
13
|
+
table: Dictionary<LRState>;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
new (): any;
|
|
17
|
+
}
|
|
18
|
+
export interface RuntimeGrammarProductionRule {
|
|
19
|
+
name: string;
|
|
20
|
+
symbols: RuntimeGrammarRuleSymbol[];
|
|
21
|
+
postprocess?: RuntimePostProcessor;
|
|
22
|
+
}
|
|
23
|
+
export type RuntimeGrammarRuleSymbol = string | RegExp | ASTGrammarSymbolLiteral | ASTGrammarSymbolToken | RuntimeGrammarRuleSymbolFunction;
|
|
24
|
+
type RuntimeGrammarRuleSymbolFunction = (data: RuntimeLexerToken) => boolean;
|
|
25
|
+
export type RuntimePostProcessor = (payload: RuntimePostProcessorPayload) => any;
|
|
26
|
+
interface RuntimePostProcessorPayload {
|
|
27
|
+
data: any[];
|
|
28
|
+
rule: RuntimeGrammarProductionRule;
|
|
29
|
+
meta: any;
|
|
30
|
+
}
|
|
31
|
+
export interface RuntimeLexerConfig {
|
|
32
|
+
start?: string;
|
|
33
|
+
states: Dictionary<RuntimeLexerState>;
|
|
34
|
+
}
|
|
35
|
+
export interface RuntimeLexerState {
|
|
36
|
+
unmatched?: ASTLexerStateNonMatchRule;
|
|
37
|
+
rules: RuntimeLexerStateMatchRule[];
|
|
38
|
+
regex: RegExp;
|
|
39
|
+
}
|
|
40
|
+
export interface RuntimeLexer {
|
|
41
|
+
next(): RuntimeLexerToken | undefined;
|
|
42
|
+
feed(chunk?: string, state?: ReturnType<RuntimeLexer['state']>): void;
|
|
43
|
+
state(): any;
|
|
44
|
+
flush?(): void;
|
|
45
|
+
}
|
|
46
|
+
export interface RuntimeLexerToken {
|
|
47
|
+
type?: string | undefined;
|
|
48
|
+
tag?: Set<string>;
|
|
49
|
+
value: string;
|
|
50
|
+
offset: number;
|
|
51
|
+
line: number;
|
|
52
|
+
column: number;
|
|
53
|
+
}
|
|
54
|
+
export interface RuntimeLexerStateMatchRule {
|
|
55
|
+
when: string | RegExp;
|
|
56
|
+
type?: string;
|
|
57
|
+
tag?: string[];
|
|
58
|
+
before?: boolean;
|
|
59
|
+
skip?: boolean;
|
|
60
|
+
highlight?: string;
|
|
61
|
+
open?: string;
|
|
62
|
+
close?: string;
|
|
63
|
+
embed?: string;
|
|
64
|
+
unembed?: boolean;
|
|
65
|
+
pop?: number | 'all';
|
|
66
|
+
inset?: number;
|
|
67
|
+
goto?: string;
|
|
68
|
+
set?: string;
|
|
69
|
+
}
|
|
70
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/typings/runtime.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function Format(source: string, sourceVersion?: '1' | '2'): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import V1Grammar from '../generator/grammars/v1.js';
|
|
2
|
+
import V2Grammar from '../generator/grammars/v2.js';
|
|
3
|
+
import { V2GrammarString } from "../generator/stringify/grammar/v2.js";
|
|
4
|
+
import { Parse } from '../parser/parse.js';
|
|
5
|
+
export function Format(source, sourceVersion = '2') {
|
|
6
|
+
const grammar = sourceVersion.toString() == '1' ? V1Grammar : V2Grammar;
|
|
7
|
+
const result = Parse(new grammar(), source);
|
|
8
|
+
const stringer = new V2GrammarString();
|
|
9
|
+
stringer.append(result);
|
|
10
|
+
return stringer.source;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utility/format.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,UAAU,MAAM,CAAC,MAAc,EAAE,gBAA2B,GAAG;IACjE,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,OAAO,EAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,QAAQ,CAAC,MAAM,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function Formatter(source: string, version?: '1' | '2'): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import V1Grammar from '../generator/grammars/v1';
|
|
2
|
+
import V2Grammar from '../generator/grammars/v2';
|
|
3
|
+
import { V2GrammarString } from "../generator/stringify/grammar/v2";
|
|
4
|
+
import { Parse } from "../parser/parser";
|
|
5
|
+
export function Formatter(source, version = '2') {
|
|
6
|
+
const grammar = version.toString() == '1' ? V1Grammar : V2Grammar;
|
|
7
|
+
const result = Parse(grammar(), source);
|
|
8
|
+
const stringer = new V2GrammarString();
|
|
9
|
+
stringer.append(result);
|
|
10
|
+
return stringer.source;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/utility/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,UAAqB,GAAG;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAS,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,QAAQ,CAAC,MAAM,CAAC;AAC3B,CAAC"}
|
package/build/utility/general.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Unflatten = exports.Flatten = exports.Matrix = exports.GeneratorSymbolCollection = exports.Collection = void 0;
|
|
4
|
-
class Collection {
|
|
1
|
+
export class Collection {
|
|
5
2
|
categorized = {};
|
|
6
3
|
uncategorized = new Map();
|
|
7
4
|
items = [];
|
|
@@ -44,8 +41,7 @@ class Collection {
|
|
|
44
41
|
return this.uncategorized.get(ref);
|
|
45
42
|
}
|
|
46
43
|
}
|
|
47
|
-
|
|
48
|
-
class GeneratorSymbolCollection extends Collection {
|
|
44
|
+
export class GeneratorSymbolCollection extends Collection {
|
|
49
45
|
categorized = {
|
|
50
46
|
nonTerminal: {},
|
|
51
47
|
literalI: {},
|
|
@@ -70,8 +66,7 @@ class GeneratorSymbolCollection extends Collection {
|
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
68
|
}
|
|
73
|
-
|
|
74
|
-
class Matrix {
|
|
69
|
+
export class Matrix {
|
|
75
70
|
initial;
|
|
76
71
|
$x = 0;
|
|
77
72
|
$y = 0;
|
|
@@ -113,8 +108,7 @@ class Matrix {
|
|
|
113
108
|
return Array.from({ length }, (typeof initial == 'function' ? initial : () => initial));
|
|
114
109
|
}
|
|
115
110
|
}
|
|
116
|
-
|
|
117
|
-
function Flatten(obj) {
|
|
111
|
+
export function Flatten(obj) {
|
|
118
112
|
const collection = new Collection();
|
|
119
113
|
const $null = Symbol();
|
|
120
114
|
function Traverse(src) {
|
|
@@ -144,8 +138,7 @@ function Flatten(obj) {
|
|
|
144
138
|
collection.redirect($null, null);
|
|
145
139
|
return collection.items;
|
|
146
140
|
}
|
|
147
|
-
|
|
148
|
-
function Unflatten(items) {
|
|
141
|
+
export function Unflatten(items) {
|
|
149
142
|
const visited = new Set();
|
|
150
143
|
function Traverse(id) {
|
|
151
144
|
if (visited.has(id)) {
|
|
@@ -168,5 +161,4 @@ function Unflatten(items) {
|
|
|
168
161
|
}
|
|
169
162
|
return Traverse(0);
|
|
170
163
|
}
|
|
171
|
-
exports.Unflatten = Unflatten;
|
|
172
164
|
//# sourceMappingURL=general.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../src/utility/general.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../src/utility/general.ts"],"names":[],"mappings":"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"}
|
package/build/utility/index.d.ts
CHANGED
package/build/utility/index.js
CHANGED
|
@@ -1,18 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./monarch"), exports);
|
|
1
|
+
export * from './monarch.js';
|
|
2
|
+
export * from './general.js';
|
|
3
|
+
export * from './format.js';
|
|
4
|
+
export * from './parsing.js';
|
|
18
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utility/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utility/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
package/build/utility/lint.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function LintGrammarSymbols(
|
|
1
|
+
import { RuntimeGrammarRuleSymbol, RuntimeParserClass } from "../typings/index.js";
|
|
2
|
+
export declare function LintGrammarSymbols(grammar: RuntimeParserClass['artifacts']['grammar']): RuntimeGrammarRuleSymbol[];
|
package/build/utility/lint.js
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LintGrammarSymbols = void 0;
|
|
4
|
-
function LintGrammarSymbols(language) {
|
|
1
|
+
export function LintGrammarSymbols(grammar) {
|
|
5
2
|
const unused = new Set();
|
|
6
|
-
const { rules, start } =
|
|
3
|
+
const { rules, start } = grammar;
|
|
7
4
|
for (const rule in rules) {
|
|
8
5
|
unused.add(rule);
|
|
9
6
|
}
|
|
10
7
|
TraverseRule(start, rules, unused);
|
|
11
8
|
return Array.from(unused);
|
|
12
9
|
}
|
|
13
|
-
exports.LintGrammarSymbols = LintGrammarSymbols;
|
|
14
10
|
function TraverseRule(name, rules, unvisited) {
|
|
15
11
|
if (!unvisited.has(name)) {
|
|
16
12
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/utility/lint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/utility/lint.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,OAAmD;IAClF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAiD,EAAE,SAAsB;IACzG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO;IACX,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC5B,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function MigrateV1toV2(content: string): string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import v1 from '../generator/grammars/v1';
|
|
2
|
+
import { V2GrammarString } from "../generator/stringify/grammar/v2";
|
|
3
|
+
import { Parser } from "../parser/parser";
|
|
4
|
+
export function MigrateV1toV2(content) {
|
|
5
|
+
const parser = new Parser(v1());
|
|
6
|
+
const stringer = new V2GrammarString();
|
|
7
|
+
stringer.append(parser.run(content).results[0]);
|
|
8
|
+
return stringer.source;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/utility/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,UAAU,aAAa,CAAC,OAAe;IACzC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,EAAS,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,MAAM,CAAC;AAE3B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function CreateMonarchTokenizer(lexer:
|
|
1
|
+
import { RuntimeLexerConfig } from "../typings/index.js";
|
|
2
|
+
export declare function CreateMonarchTokenizer(lexer: RuntimeLexerConfig): {
|
|
3
3
|
start: string;
|
|
4
4
|
tokenizer: any;
|
|
5
5
|
};
|
package/build/utility/monarch.js
CHANGED
|
@@ -1,50 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CreateMonarchTokenizer = void 0;
|
|
4
|
-
function CreateMonarchTokenizer(lexer) {
|
|
1
|
+
export function CreateMonarchTokenizer(lexer) {
|
|
5
2
|
const tokenizer = {};
|
|
6
3
|
const { start, states } = lexer;
|
|
7
|
-
for (const
|
|
8
|
-
const {
|
|
4
|
+
for (const name in states) {
|
|
5
|
+
const { rules, unmatched } = states[name];
|
|
9
6
|
tokenizer[name] = [];
|
|
10
7
|
for (const rule of rules) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
const action = { token: rule.highlight || 'source' };
|
|
18
|
-
if ('pop' in rule) {
|
|
19
|
-
action.next = '@pop';
|
|
20
|
-
}
|
|
21
|
-
else if ('goto' in rule) {
|
|
22
|
-
action.next = '@' + rule.goto;
|
|
23
|
-
}
|
|
24
|
-
else if ('set' in rule) {
|
|
25
|
-
action.switchTo = '@' + rule.set;
|
|
26
|
-
}
|
|
27
|
-
else if ('inset' in rule) {
|
|
28
|
-
action.next = '@push';
|
|
29
|
-
}
|
|
30
|
-
if ('embed' in rule) {
|
|
31
|
-
action.nextEmbedded = rule.embed;
|
|
32
|
-
}
|
|
33
|
-
else if ('unembed' in rule) {
|
|
34
|
-
action.nextEmbedded = '@pop';
|
|
35
|
-
}
|
|
36
|
-
if (rule.before) {
|
|
37
|
-
action.token = '@rematch';
|
|
38
|
-
}
|
|
39
|
-
tokenizer[name].push([TransformWhen(rule.when), action]);
|
|
40
|
-
}
|
|
8
|
+
tokenizer[name].push([TransformWhen(rule.when), CreateAction(rule)]);
|
|
9
|
+
}
|
|
10
|
+
if (unmatched) {
|
|
11
|
+
tokenizer[name].push([`.*?(?:(${tokenizer[name].map(v => `(${v.source})`).join('|')}))`, CreateAction(unmatched)]);
|
|
41
12
|
}
|
|
42
13
|
}
|
|
43
14
|
return { start, tokenizer };
|
|
44
15
|
}
|
|
45
|
-
|
|
16
|
+
function CreateAction(rule) {
|
|
17
|
+
const action = { token: rule.highlight || 'source' };
|
|
18
|
+
if ('pop' in rule) {
|
|
19
|
+
action.next = '@pop';
|
|
20
|
+
}
|
|
21
|
+
else if ('goto' in rule) {
|
|
22
|
+
action.next = '@' + rule.goto;
|
|
23
|
+
}
|
|
24
|
+
else if ('set' in rule) {
|
|
25
|
+
action.switchTo = '@' + rule.set;
|
|
26
|
+
}
|
|
27
|
+
else if ('inset' in rule) {
|
|
28
|
+
action.next = '@push';
|
|
29
|
+
}
|
|
30
|
+
if ('embed' in rule) {
|
|
31
|
+
action.nextEmbedded = rule.embed;
|
|
32
|
+
}
|
|
33
|
+
else if ('unembed' in rule) {
|
|
34
|
+
action.nextEmbedded = '@pop';
|
|
35
|
+
}
|
|
36
|
+
if (rule.before) {
|
|
37
|
+
action.token = '@rematch';
|
|
38
|
+
}
|
|
39
|
+
return action;
|
|
40
|
+
}
|
|
46
41
|
function TransformWhen(obj) {
|
|
47
|
-
return typeof obj == 'string' ? new RegExp(RegexEscape(obj)) :
|
|
42
|
+
return typeof obj == 'string' ? new RegExp(RegexEscape(obj)) : obj;
|
|
48
43
|
}
|
|
49
44
|
function RegexEscape(string) {
|
|
50
45
|
return string.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monarch.js","sourceRoot":"","sources":["../../src/utility/monarch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"monarch.js","sourceRoot":"","sources":["../../src/utility/monarch.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,KAAyB;IAC5D,MAAM,SAAS,GAAQ,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1C,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxE,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvH,CAAC;IACL,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,YAAY,CAAC,IAA4D;IAC9E,MAAM,MAAM,GAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;IAC1D,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;IACzB,CAAC;SAAM,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;IAClC,CAAC;SAAM,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrC,CAAC;SAAM,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;IACrC,CAAC;SAAM,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC;IACjC,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAAC,GAAuC;IAC1D,OAAO,OAAO,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACvE,CAAC;AAED,SAAS,WAAW,CAAC,MAAM;IACvB,OAAO,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAA;AAC1D,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeLexerToken } from "../typings/index.js";
|
|
2
|
+
export declare class ParserUtility {
|
|
3
|
+
static SymbolMatchesToken(symbol: RuntimeGrammarRuleSymbol, token: RuntimeLexerToken): boolean;
|
|
4
|
+
static SymbolIsTerminal(symbol: RuntimeGrammarRuleSymbol): symbol is RegExp | import("../index.js").ASTGrammarSymbolLiteral | import("../index.js").ASTGrammarSymbolToken | ((data: RuntimeLexerToken) => boolean);
|
|
5
|
+
static PostProcess(rule: RuntimeGrammarProductionRule, data: any, meta?: any): any;
|
|
6
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export class ParserUtility {
|
|
2
|
+
static SymbolMatchesToken(symbol, token) {
|
|
3
|
+
if (typeof symbol === 'string')
|
|
4
|
+
throw 'Attempted to match token against non-terminal';
|
|
5
|
+
if (typeof symbol == 'function')
|
|
6
|
+
return symbol(token);
|
|
7
|
+
if (!symbol)
|
|
8
|
+
return;
|
|
9
|
+
if ("test" in symbol)
|
|
10
|
+
return symbol.test(token.value);
|
|
11
|
+
if ("token" in symbol)
|
|
12
|
+
return symbol.token === token.type || token.tag?.has(symbol.token);
|
|
13
|
+
if ("literal" in symbol)
|
|
14
|
+
return symbol.literal === token.value;
|
|
15
|
+
}
|
|
16
|
+
static SymbolIsTerminal(symbol) {
|
|
17
|
+
return typeof symbol != 'string';
|
|
18
|
+
}
|
|
19
|
+
static PostProcess(rule, data, meta) {
|
|
20
|
+
if (rule.postprocess) {
|
|
21
|
+
return rule.postprocess({ rule, data, meta });
|
|
22
|
+
}
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=parsing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsing.js","sourceRoot":"","sources":["../../src/utility/parsing.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAEtB,MAAM,CAAC,kBAAkB,CAAC,MAAgC,EAAE,KAAwB;QAChF,IAAI,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,+CAA+C,CAAC;QAC1D,IAAI,OAAO,MAAM,IAAI,UAAU;YAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM;YACP,OAAM;QACV,IAAI,MAAM,IAAI,MAAM;YAChB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,OAAO,IAAI,MAAM;YACjB,OAAO,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,SAAS,IAAI,MAAM;YACnB,OAAO,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAgC;QACpD,OAAO,OAAO,MAAM,IAAI,QAAQ,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAkC,EAAE,IAAS,EAAE,IAAU;QACxE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { TokenBuffer } from "../lexers/token-buffer";
|
|
2
|
-
import {
|
|
1
|
+
import { TokenBuffer } from "../lexers/token-buffer.js";
|
|
2
|
+
import { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeLexerToken } from "../typings/index.js";
|
|
3
3
|
export declare class TextFormatter {
|
|
4
|
-
static UnexpectedToken(queue: TokenBuffer, expected: (
|
|
4
|
+
static UnexpectedToken(queue: TokenBuffer, expected: (RuntimeGrammarProductionRule & {
|
|
5
5
|
index?: number;
|
|
6
6
|
})[]): string;
|
|
7
|
-
static LexerTokenShort(token:
|
|
7
|
+
static LexerTokenShort(token: RuntimeLexerToken): string;
|
|
8
8
|
static LexerTokenError(lexer: TokenBuffer): string;
|
|
9
|
-
static GrammarRuleSymbol(symbol:
|
|
10
|
-
static GrammarRule(rule:
|
|
9
|
+
static GrammarRuleSymbol(symbol: RuntimeGrammarRuleSymbol, short?: boolean, error?: boolean): string;
|
|
10
|
+
static GrammarRule(rule: RuntimeGrammarProductionRule, withCursorAt?: number): string;
|
|
11
11
|
}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TextFormatter = void 0;
|
|
4
|
-
class TextFormatter {
|
|
1
|
+
export class TextFormatter {
|
|
5
2
|
static UnexpectedToken(queue, expected) {
|
|
6
3
|
const token = queue.active;
|
|
7
4
|
const tokenDisplay = TextFormatter.LexerTokenShort(token);
|
|
@@ -65,7 +62,7 @@ class TextFormatter {
|
|
|
65
62
|
return short ? symbol.toString() : `character matching ${symbol.toString()}`;
|
|
66
63
|
}
|
|
67
64
|
else if ("token" in symbol) {
|
|
68
|
-
return short ?
|
|
65
|
+
return short ? `<${symbol.token}>` : `${symbol.token} token`;
|
|
69
66
|
}
|
|
70
67
|
else if (error) {
|
|
71
68
|
return 'Unknown symbol type: ' + JSON.stringify(symbol);
|
|
@@ -80,5 +77,4 @@ class TextFormatter {
|
|
|
80
77
|
return rule.name + " → " + symbolSequence;
|
|
81
78
|
}
|
|
82
79
|
}
|
|
83
|
-
exports.TextFormatter = TextFormatter;
|
|
84
80
|
//# sourceMappingURL=text-format.js.map
|