@kky42/pievo-server 2.3.0 → 2.4.2
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/.output/nitro.json +1 -1
- package/.output/public/assets/MachinesModal-CSbnrUER.js +1 -0
- package/.output/public/assets/SignIn-0Tjqs-Ma.js +1 -0
- package/.output/public/assets/actionUi-DpwGIGpw.js +1 -0
- package/.output/public/assets/app-CaZpuwOS.css +2 -0
- package/.output/public/assets/index-CaS_SmDq.js +10 -0
- package/.output/public/assets/invite._token-Btg_0aLp.js +1 -0
- package/.output/public/assets/invite._token-KMD2JAgE.js +1 -0
- package/.output/public/assets/lifecycleUi-C7dwHtbw.js +1 -0
- package/.output/public/assets/loops._loopId-D5usF3DO.js +67 -0
- package/.output/public/assets/loops._loopId_.runs._runId-DRCgXaCq.js +3 -0
- package/.output/public/assets/preload-helper-DsxECZIS.js +5 -0
- package/.output/public/assets/routes-CtFgwdgW.js +1 -0
- package/.output/public/assets/routes-LDbnnQ3f.js +1 -0
- package/.output/public/assets/t._teamId-D41xcbsF.js +1 -0
- package/.output/public/assets/t._teamId-DUena1pV.js +1 -0
- package/.output/public/assets/ui-Do4gqMyP.js +1 -0
- package/.output/server/_libs/@base-ui/react+[...].mjs +4130 -4130
- package/.output/server/_libs/@tanstack/react-router+[...].mjs +1 -1
- package/.output/server/_libs/drizzle-orm+postgres.mjs +28 -1
- package/.output/server/_ssr/DashboardView-C2LdV6J0.mjs +914 -0
- package/.output/server/_ssr/{notifyFns-DuPR1zd7.mjs → MachinesModal-BjkcVjjx.mjs} +55 -35
- package/.output/server/_ssr/{SignIn-RmpWm9uy.mjs → SignIn-DEGrvJvb.mjs} +10 -24
- package/.output/server/_ssr/SocialLinks-Cm4H8pUJ.mjs +1044 -0
- package/.output/server/_ssr/{actionUi-BN55TNYE.mjs → actionUi-DJBWuNwr.mjs} +3 -3
- package/.output/server/_ssr/{artifactFiles-BCaIIrrT.mjs → artifactFiles-DtpRidFZ.mjs} +7 -8
- package/.output/server/_ssr/{artifactKind-BW0isV8L.mjs → artifactKind-FBYbgSuf.mjs} +27 -2
- package/.output/server/_ssr/artifacts-BR3jj0NC.mjs +2 -0
- package/.output/server/_ssr/{auth-30Z4lV1w.mjs → auth-C0zoZCGe.mjs} +16 -19
- package/.output/server/_ssr/boot-CdOO4xOo.mjs +2 -0
- package/.output/server/_ssr/{boot-3BNKujyp.mjs → boot-sNlIkoLe.mjs} +1331 -3927
- package/.output/server/_ssr/{bun-sqlite-dialect-BW9W1_Ps-_7tfuNRi.mjs → bun-sqlite-dialect-BW9W1_Ps-DmlZWqO7.mjs} +2 -2
- package/.output/server/_ssr/{d1-sqlite-dialect-BLC8LXE6-ucDUbeBk.mjs → d1-sqlite-dialect-BLC8LXE6-CCNzqZwZ.mjs} +2 -2
- package/.output/server/_ssr/db-CwLD-5w1.mjs +2 -0
- package/.output/server/_ssr/{dist-Cd6nlLlO.mjs → dist-B3SxDOpW.mjs} +2 -2
- package/.output/server/_ssr/{factory-CWWwV7XZ.mjs → factory-Dv3Zopis.mjs} +2 -2
- package/.output/server/_ssr/invite._token-CJ6-H-s3.mjs +20 -0
- package/.output/server/_ssr/{invite._token-SdWXemIc.mjs → invite._token-dLKDJKVs.mjs} +9 -17
- package/.output/server/_ssr/{invite._token-BKlz0R2f.mjs → invite._token-l1SjouDz.mjs} +6 -15
- package/.output/server/_ssr/{kysely-adapter-C8iS51DB.mjs → kysely-adapter-nL7WKSgw.mjs} +1 -1
- package/.output/server/_ssr/{lifecycleUi-DgBQAYzp.mjs → lifecycleUi-Dad3hvhm.mjs} +11 -11
- package/.output/server/_ssr/logger-B8m8F1Qu.mjs +2 -0
- package/.output/server/_ssr/loopApi-BKyFB4KM.mjs +342 -0
- package/.output/server/_ssr/{adapters-BoLkOf1T.mjs → loopProjection-B8a829ij.mjs} +25 -55
- package/.output/server/_ssr/loops._loopId-DS16Phmq.mjs +1271 -0
- package/.output/server/_ssr/{loops._loopId_.runs._runId-PUGBrD5q.mjs → loops._loopId_.runs._runId-BEJI6iK5.mjs} +23 -74
- package/.output/server/_ssr/{loops._loopId_.runs._runId-Ymy4lwee.mjs → loops._loopId_.runs._runId-CduETLqH.mjs} +4 -5
- package/.output/server/_ssr/{machineFns-BZ9puxDt.mjs → machineFns-ByMsgG12.mjs} +3 -5
- package/.output/server/_ssr/{node-sqlite-dialect-D_3JmkMo.mjs → node-sqlite-dialect-CjNineno.mjs} +2 -2
- package/.output/server/_ssr/router-CXyrnvx-.mjs +565 -0
- package/.output/server/_ssr/{routes-ClZEdsnB.mjs → routes-BulNEUEE.mjs} +6 -10
- package/.output/server/_ssr/{routes-ComqHvCL.mjs → routes-DD94baie.mjs} +3 -3
- package/.output/server/_ssr/{routes-D5jJJ-30.mjs → routes-Wjexi35W.mjs} +6 -6
- package/.output/server/_ssr/runDiff-Ba8Lg1vg.mjs +2 -0
- package/.output/server/_ssr/ssr.mjs +60 -100
- package/.output/server/_ssr/store-Cujtg2QE.mjs +2 -0
- package/.output/server/_ssr/{t._teamId-BgHV_KFP.mjs → t._teamId-1CreIlPV.mjs} +7 -11
- package/.output/server/_ssr/{t._teamId-DDERNgfn.mjs → t._teamId-Bd6-zZsy.mjs} +4 -4
- package/.output/server/_ssr/{t._teamId-DRJvKHZn.mjs → t._teamId-COuMKQ4r.mjs} +7 -7
- package/.output/server/_ssr/{teamFns-Bp81UO-x.mjs → teamFns-H438WnZC.mjs} +12 -30
- package/.output/server/_ssr/{teamFns-bm82twd5.mjs → teamFns-j2JKjorZ.mjs} +2 -2
- package/.output/server/_ssr/tokens-DgG_Syq3.mjs +2 -0
- package/.output/server/_ssr/{ui-Ww2tTM2u.mjs → ui-D5KWstlb.mjs} +26 -48
- package/.output/server/{_tanstack-start-manifest_v-DwKENYCN.mjs → _tanstack-start-manifest_v-3H7yBKLz.mjs} +25 -35
- package/{drizzle/0000_round_marauders.sql → .output/server/drizzle/0000_baseline.sql} +102 -44
- package/.output/server/drizzle/meta/_journal.json +3 -115
- package/.output/server/index.mjs +83 -132
- package/{.output/server/drizzle/0000_round_marauders.sql → drizzle/0000_baseline.sql} +102 -44
- package/drizzle/meta/_journal.json +3 -115
- package/package.json +2 -11
- package/scripts/pievo-server.mjs +3 -1
- package/scripts/server-cli-lib.mjs +23 -16
- package/.output/public/assets/CodeField-dOzyFQNH.js +0 -34
- package/.output/public/assets/LoopView-DjVHUyrR.js +0 -59
- package/.output/public/assets/Modal-CCRvx959.js +0 -1
- package/.output/public/assets/SignIn-Qxw5zDFq.js +0 -1
- package/.output/public/assets/actionUi-CXxhzYe2.js +0 -1
- package/.output/public/assets/app-D1cij_NJ.css +0 -2
- package/.output/public/assets/artifactView-Cd5wWPil.js +0 -66
- package/.output/public/assets/index-BRN_CQ8U.js +0 -12
- package/.output/public/assets/invite._token-BIxr8DlP.js +0 -1
- package/.output/public/assets/invite._token-j2BTCeG1.js +0 -1
- package/.output/public/assets/jsx-runtime-BseJUIpC.js +0 -1
- package/.output/public/assets/lifecycleUi-Qy_8beQK.js +0 -1
- package/.output/public/assets/loopApi-CT1mMhlb.js +0 -3
- package/.output/public/assets/loops._loopId-BRBQzioy.js +0 -4
- package/.output/public/assets/loops._loopId_.runs._runId-CMnOJkem.js +0 -3
- package/.output/public/assets/notifyFns-DYD4EKaG.js +0 -1
- package/.output/public/assets/preload-helper-DFkkpP6W.js +0 -3
- package/.output/public/assets/routes-3nuEJGdo.js +0 -1
- package/.output/public/assets/routes-DORLim-C.js +0 -1
- package/.output/public/assets/t._teamId-F5f4K8kd.js +0 -1
- package/.output/public/assets/t._teamId-XfE_S1Fo.js +0 -1
- package/.output/public/assets/ui-Dhsx6SW0.js +0 -1
- package/.output/public/assets/useRouter-DsjH8G0p.js +0 -1
- package/.output/server/_libs/@codemirror/autocomplete+[...].mjs +0 -19713
- package/.output/server/_libs/@codemirror/lang-css+[...].mjs +0 -2636
- package/.output/server/_libs/@codemirror/lang-html+[...].mjs +0 -2247
- package/.output/server/_libs/@codemirror/lang-json+[...].mjs +0 -79
- package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +0 -1736
- package/.output/server/_libs/@uiw/codemirror-extensions-basic-setup+[...].mjs +0 -76
- package/.output/server/_libs/babel__runtime.mjs +0 -30
- package/.output/server/_libs/clsx.mjs +0 -16
- package/.output/server/_libs/codemirror__commands.mjs +0 -1725
- package/.output/server/_libs/codemirror__lint.mjs +0 -565
- package/.output/server/_libs/codemirror__search.mjs +0 -1138
- package/.output/server/_libs/codemirror__theme-one-dark.mjs +0 -161
- package/.output/server/_libs/d3-array.mjs +0 -231
- package/.output/server/_libs/d3-color.mjs +0 -330
- package/.output/server/_libs/d3-format.mjs +0 -252
- package/.output/server/_libs/d3-interpolate.mjs +0 -163
- package/.output/server/_libs/d3-path.mjs +0 -77
- package/.output/server/_libs/d3-scale+[...].mjs +0 -1907
- package/.output/server/_libs/d3-shape.mjs +0 -818
- package/.output/server/_libs/decimal.js-light.mjs +0 -884
- package/.output/server/_libs/dom-serializer+[...].mjs +0 -708
- package/.output/server/_libs/domhandler.mjs +0 -461
- package/.output/server/_libs/domutils.mjs +0 -868
- package/.output/server/_libs/es-toolkit.mjs +0 -1737
- package/.output/server/_libs/eventemitter3.mjs +0 -236
- package/.output/server/_libs/html-dom-parser+htmlparser2.mjs +0 -1560
- package/.output/server/_libs/html-react-parser+[...].mjs +0 -1360
- package/.output/server/_libs/react-is.mjs +0 -48
- package/.output/server/_libs/react-redux+[...].mjs +0 -205
- package/.output/server/_libs/recharts+victory-vendor.mjs +0 -17303
- package/.output/server/_libs/uiw__codemirror-themes.mjs +0 -32
- package/.output/server/_libs/uiw__react-codemirror.mjs +0 -354
- package/.output/server/_ssr/CodeField-B7oOmmwH.mjs +0 -143
- package/.output/server/_ssr/DashboardView-BF7PciP7.mjs +0 -2736
- package/.output/server/_ssr/LoopPlaybook-DC7QVvPY.mjs +0 -2105
- package/.output/server/_ssr/LoopView-DwSrm9Ja.mjs +0 -1300
- package/.output/server/_ssr/Modal-MaCG52Pv.mjs +0 -49
- package/.output/server/_ssr/artifactView-iuPsp5aa.mjs +0 -304
- package/.output/server/_ssr/artifacts-jQ-bfdhI.mjs +0 -2
- package/.output/server/_ssr/boot-CsEFT53K.mjs +0 -2
- package/.output/server/_ssr/db-CXownd1H.mjs +0 -2
- package/.output/server/_ssr/invite._token-CWl6kipD.mjs +0 -28
- package/.output/server/_ssr/logger-Gy-47z3k.mjs +0 -2
- package/.output/server/_ssr/loopApi-8_KgBapr.mjs +0 -109
- package/.output/server/_ssr/loopApi-ABi9SgWS.mjs +0 -564
- package/.output/server/_ssr/loops._loopId-SON_t43g.mjs +0 -30
- package/.output/server/_ssr/loops._loopId-p1KWsvMM.mjs +0 -1477
- package/.output/server/_ssr/notifyFns-BUCePuF3.mjs +0 -118
- package/.output/server/_ssr/router-Czxvra6l.mjs +0 -685
- package/.output/server/_ssr/runDiff--qLtU4FI.mjs +0 -2
- package/.output/server/_ssr/store-40eVzW1S.mjs +0 -2
- package/.output/server/_ssr/tokens-CbfoRC_s.mjs +0 -2
- package/.output/server/drizzle/0001_naive_silver_fox.sql +0 -25
- package/.output/server/drizzle/0002_funny_sage.sql +0 -12
- package/.output/server/drizzle/0003_optimal_slapstick.sql +0 -102
- package/.output/server/drizzle/0004_remove_grok_agent.sql +0 -5
- package/.output/server/drizzle/0005_heavy_gauntlet.sql +0 -8
- package/.output/server/drizzle/0006_tranquil_sharon_carter.sql +0 -1
- package/.output/server/drizzle/0007_faulty_starbolt.sql +0 -30
- package/.output/server/drizzle/0008_durable_lifecycle_evidence.sql +0 -15
- package/.output/server/drizzle/0009_ordinary_electro.sql +0 -1
- package/.output/server/drizzle/0010_workable_rage.sql +0 -14
- package/.output/server/drizzle/0011_steep_marvel_zombies.sql +0 -3
- package/.output/server/drizzle/0012_blocked_run_status.sql +0 -12
- package/.output/server/drizzle/0013_drop_run_outcome.sql +0 -2
- package/.output/server/drizzle/0014_luxuriant_scrambler.sql +0 -5
- package/.output/server/drizzle/0015_run_history_foundation.sql +0 -43
- package/.output/server/drizzle/0016_plural_machine_runs.sql +0 -4
- package/.output/server/drizzle/meta/0000_snapshot.json +0 -1333
- package/.output/server/drizzle/meta/0001_snapshot.json +0 -1498
- package/.output/server/drizzle/meta/0002_snapshot.json +0 -1576
- package/.output/server/drizzle/meta/0003_snapshot.json +0 -1666
- package/.output/server/drizzle/meta/0005_snapshot.json +0 -1666
- package/.output/server/drizzle/meta/0006_snapshot.json +0 -1672
- package/.output/server/drizzle/meta/0007_snapshot.json +0 -1787
- package/.output/server/drizzle/meta/0009_snapshot.json +0 -1793
- package/.output/server/drizzle/meta/0010_snapshot.json +0 -1891
- package/.output/server/drizzle/meta/0011_snapshot.json +0 -1872
- package/drizzle/0001_naive_silver_fox.sql +0 -25
- package/drizzle/0002_funny_sage.sql +0 -12
- package/drizzle/0003_optimal_slapstick.sql +0 -102
- package/drizzle/0004_remove_grok_agent.sql +0 -5
- package/drizzle/0005_heavy_gauntlet.sql +0 -8
- package/drizzle/0006_tranquil_sharon_carter.sql +0 -1
- package/drizzle/0007_faulty_starbolt.sql +0 -30
- package/drizzle/0008_durable_lifecycle_evidence.sql +0 -15
- package/drizzle/0009_ordinary_electro.sql +0 -1
- package/drizzle/0010_workable_rage.sql +0 -14
- package/drizzle/0011_steep_marvel_zombies.sql +0 -3
- package/drizzle/0012_blocked_run_status.sql +0 -12
- package/drizzle/0013_drop_run_outcome.sql +0 -2
- package/drizzle/0014_luxuriant_scrambler.sql +0 -5
- package/drizzle/0015_run_history_foundation.sql +0 -43
- package/drizzle/0016_plural_machine_runs.sql +0 -4
- package/drizzle/meta/0000_snapshot.json +0 -1333
- package/drizzle/meta/0001_snapshot.json +0 -1498
- package/drizzle/meta/0002_snapshot.json +0 -1576
- package/drizzle/meta/0003_snapshot.json +0 -1666
- package/drizzle/meta/0005_snapshot.json +0 -1666
- package/drizzle/meta/0006_snapshot.json +0 -1672
- package/drizzle/meta/0007_snapshot.json +0 -1787
- package/drizzle/meta/0009_snapshot.json +0 -1793
- package/drizzle/meta/0010_snapshot.json +0 -1891
- package/drizzle/meta/0011_snapshot.json +0 -1872
|
@@ -1,2636 +0,0 @@
|
|
|
1
|
-
import { B as NodeWeakMap, F as DefaultBufferLength, H as Tree, I as IterMode, L as NodeProp, M as syntaxTree, N as styleTags, P as tags$1, R as NodeSet, S as foldNodeProp, T as indentNodeProp, V as Parser, b as foldInside, d as LanguageSupport, m as continuedIndent, u as LRLanguage, z as NodeType } from "./autocomplete+[...].mjs";
|
|
2
|
-
//#region ../../node_modules/.pnpm/@lezer+lr@1.4.10/node_modules/@lezer/lr/dist/index.js
|
|
3
|
-
/**
|
|
4
|
-
A parse stack. These are used internally by the parser to track
|
|
5
|
-
parsing progress. They also provide some properties and methods
|
|
6
|
-
that external code such as a tokenizer can use to get information
|
|
7
|
-
about the parse state.
|
|
8
|
-
*/
|
|
9
|
-
var Stack = class Stack {
|
|
10
|
-
/**
|
|
11
|
-
@internal
|
|
12
|
-
*/
|
|
13
|
-
constructor(p, stack, state, reducePos, pos, score, buffer, bufferBase, curContext, lookAhead = 0, parent) {
|
|
14
|
-
this.p = p;
|
|
15
|
-
this.stack = stack;
|
|
16
|
-
this.state = state;
|
|
17
|
-
this.reducePos = reducePos;
|
|
18
|
-
this.pos = pos;
|
|
19
|
-
this.score = score;
|
|
20
|
-
this.buffer = buffer;
|
|
21
|
-
this.bufferBase = bufferBase;
|
|
22
|
-
this.curContext = curContext;
|
|
23
|
-
this.lookAhead = lookAhead;
|
|
24
|
-
this.parent = parent;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
@internal
|
|
28
|
-
*/
|
|
29
|
-
toString() {
|
|
30
|
-
return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? "!" + this.score : ""}`;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
@internal
|
|
34
|
-
*/
|
|
35
|
-
static start(p, state, pos = 0) {
|
|
36
|
-
let cx = p.parser.context;
|
|
37
|
-
return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
The stack's current [context](#lr.ContextTracker) value, if
|
|
41
|
-
any. Its type will depend on the context tracker's type
|
|
42
|
-
parameter, or it will be `null` if there is no context
|
|
43
|
-
tracker.
|
|
44
|
-
*/
|
|
45
|
-
get context() {
|
|
46
|
-
return this.curContext ? this.curContext.context : null;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
@internal
|
|
50
|
-
*/
|
|
51
|
-
pushState(state, start) {
|
|
52
|
-
this.stack.push(this.state, start, this.bufferBase + this.buffer.length);
|
|
53
|
-
this.state = state;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
@internal
|
|
57
|
-
*/
|
|
58
|
-
reduce(action) {
|
|
59
|
-
var _a;
|
|
60
|
-
let depth = action >> 19, type = action & 65535;
|
|
61
|
-
let { parser } = this.p;
|
|
62
|
-
let lookaheadRecord = this.reducePos < this.pos - 25 && this.setLookAhead(this.pos);
|
|
63
|
-
let dPrec = parser.dynamicPrecedence(type);
|
|
64
|
-
if (dPrec) this.score += dPrec;
|
|
65
|
-
if (depth == 0) {
|
|
66
|
-
if (type < parser.minRepeatTerm && this.reducePos < this.pos) this.reducePos = this.pos;
|
|
67
|
-
this.pushState(parser.getGoto(this.state, type, true), this.reducePos);
|
|
68
|
-
if (type < parser.minRepeatTerm) this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);
|
|
69
|
-
this.reduceContext(type, this.reducePos);
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
let base = this.stack.length - (depth - 1) * 3 - (action & 262144 ? 6 : 0);
|
|
73
|
-
let start = base ? this.stack[base - 2] : this.p.ranges[0].from;
|
|
74
|
-
if (type < parser.minRepeatTerm && start == this.reducePos && this.reducePos < this.pos) this.reducePos = this.pos;
|
|
75
|
-
let size = this.reducePos - start;
|
|
76
|
-
if (size >= 2e3 && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {
|
|
77
|
-
if (start == this.p.lastBigReductionStart) {
|
|
78
|
-
this.p.bigReductionCount++;
|
|
79
|
-
this.p.lastBigReductionSize = size;
|
|
80
|
-
} else if (this.p.lastBigReductionSize < size) {
|
|
81
|
-
this.p.bigReductionCount = 1;
|
|
82
|
-
this.p.lastBigReductionStart = start;
|
|
83
|
-
this.p.lastBigReductionSize = size;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;
|
|
87
|
-
if (type < parser.minRepeatTerm || action & 131072) {
|
|
88
|
-
let pos = parser.stateFlag(this.state, 1) ? this.pos : this.reducePos;
|
|
89
|
-
this.storeNode(type, start, pos, count + 4, true);
|
|
90
|
-
}
|
|
91
|
-
if (action & 262144) this.state = this.stack[base];
|
|
92
|
-
else {
|
|
93
|
-
let baseStateID = this.stack[base - 3];
|
|
94
|
-
this.state = parser.getGoto(baseStateID, type, true);
|
|
95
|
-
}
|
|
96
|
-
while (this.stack.length > base) this.stack.pop();
|
|
97
|
-
this.reduceContext(type, start);
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
@internal
|
|
101
|
-
*/
|
|
102
|
-
storeNode(term, start, end, size = 4, mustSink = false) {
|
|
103
|
-
if (term == 0 && (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {
|
|
104
|
-
let top = this.buffer.length;
|
|
105
|
-
if (top > 0 && this.buffer[top - 4] == 0 && this.buffer[top - 1] > -1) {
|
|
106
|
-
if (start == end) return;
|
|
107
|
-
if (this.buffer[top - 2] >= start) {
|
|
108
|
-
this.buffer[top - 2] = end;
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
if (!mustSink || this.pos == end) this.buffer.push(term, start, end, size);
|
|
114
|
-
else {
|
|
115
|
-
let index = this.buffer.length;
|
|
116
|
-
if (index > 0 && (this.buffer[index - 4] != 0 || this.buffer[index - 1] < 0)) {
|
|
117
|
-
let mustMove = false;
|
|
118
|
-
for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) if (this.buffer[scan - 1] >= 0) {
|
|
119
|
-
mustMove = true;
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
if (mustMove) while (index > 0 && this.buffer[index - 2] > end) {
|
|
123
|
-
this.buffer[index] = this.buffer[index - 4];
|
|
124
|
-
this.buffer[index + 1] = this.buffer[index - 3];
|
|
125
|
-
this.buffer[index + 2] = this.buffer[index - 2];
|
|
126
|
-
this.buffer[index + 3] = this.buffer[index - 1];
|
|
127
|
-
index -= 4;
|
|
128
|
-
if (size > 4) size -= 4;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
this.buffer[index] = term;
|
|
132
|
-
this.buffer[index + 1] = start;
|
|
133
|
-
this.buffer[index + 2] = end;
|
|
134
|
-
this.buffer[index + 3] = size;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
@internal
|
|
139
|
-
*/
|
|
140
|
-
shift(action, type, start, end) {
|
|
141
|
-
if (action & 131072) this.pushState(action & 65535, this.pos);
|
|
142
|
-
else if ((action & 262144) == 0) {
|
|
143
|
-
let nextState = action, { parser } = this.p;
|
|
144
|
-
this.pos = end;
|
|
145
|
-
let skipped = parser.stateFlag(nextState, 1);
|
|
146
|
-
if (!skipped && (end > start || type <= parser.maxNode)) this.reducePos = end;
|
|
147
|
-
this.pushState(nextState, skipped ? start : Math.min(start, this.reducePos));
|
|
148
|
-
this.shiftContext(type, start);
|
|
149
|
-
if (type <= parser.maxNode) this.buffer.push(type, start, end, 4);
|
|
150
|
-
} else {
|
|
151
|
-
this.pos = end;
|
|
152
|
-
this.shiftContext(type, start);
|
|
153
|
-
if (type <= this.p.parser.maxNode) this.buffer.push(type, start, end, 4);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
@internal
|
|
158
|
-
*/
|
|
159
|
-
apply(action, next, nextStart, nextEnd) {
|
|
160
|
-
if (action & 65536) this.reduce(action);
|
|
161
|
-
else this.shift(action, next, nextStart, nextEnd);
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
@internal
|
|
165
|
-
*/
|
|
166
|
-
useNode(value, next) {
|
|
167
|
-
let index = this.p.reused.length - 1;
|
|
168
|
-
if (index < 0 || this.p.reused[index] != value) {
|
|
169
|
-
this.p.reused.push(value);
|
|
170
|
-
index++;
|
|
171
|
-
}
|
|
172
|
-
let start = this.pos;
|
|
173
|
-
this.reducePos = this.pos = start + value.length;
|
|
174
|
-
this.pushState(next, start);
|
|
175
|
-
this.buffer.push(index, start, this.reducePos, -1);
|
|
176
|
-
if (this.curContext) this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
@internal
|
|
180
|
-
*/
|
|
181
|
-
split() {
|
|
182
|
-
let parent = this;
|
|
183
|
-
let off = parent.buffer.length;
|
|
184
|
-
if (off && parent.buffer[off - 4] == 0) off -= 4;
|
|
185
|
-
while (off > 0 && parent.buffer[off - 2] > parent.reducePos) off -= 4;
|
|
186
|
-
let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;
|
|
187
|
-
while (parent && base == parent.bufferBase) parent = parent.parent;
|
|
188
|
-
return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
@internal
|
|
192
|
-
*/
|
|
193
|
-
recoverByDelete(next, nextEnd) {
|
|
194
|
-
let isNode = next <= this.p.parser.maxNode;
|
|
195
|
-
if (isNode) this.storeNode(next, this.pos, nextEnd, 4);
|
|
196
|
-
this.storeNode(0, this.pos, nextEnd, isNode ? 8 : 4);
|
|
197
|
-
this.pos = this.reducePos = nextEnd;
|
|
198
|
-
this.score -= 190;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
Check if the given term would be able to be shifted (optionally
|
|
202
|
-
after some reductions) on this stack. This can be useful for
|
|
203
|
-
external tokenizers that want to make sure they only provide a
|
|
204
|
-
given token when it applies.
|
|
205
|
-
*/
|
|
206
|
-
canShift(term) {
|
|
207
|
-
for (let sim = new SimulatedStack(this);;) {
|
|
208
|
-
let action = this.p.parser.stateSlot(sim.state, 4) || this.p.parser.hasAction(sim.state, term);
|
|
209
|
-
if (action == 0) return false;
|
|
210
|
-
if ((action & 65536) == 0) return true;
|
|
211
|
-
sim.reduce(action);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
@internal
|
|
216
|
-
*/
|
|
217
|
-
recoverByInsert(next) {
|
|
218
|
-
if (this.stack.length >= 300) return [];
|
|
219
|
-
let nextStates = this.p.parser.nextStates(this.state);
|
|
220
|
-
if (nextStates.length > 8 || this.stack.length >= 120) {
|
|
221
|
-
let best = [];
|
|
222
|
-
for (let i = 0, s; i < nextStates.length; i += 2) if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next)) best.push(nextStates[i], s);
|
|
223
|
-
if (this.stack.length < 120) for (let i = 0; best.length < 8 && i < nextStates.length; i += 2) {
|
|
224
|
-
let s = nextStates[i + 1];
|
|
225
|
-
if (!best.some((v, i) => i & 1 && v == s)) best.push(nextStates[i], s);
|
|
226
|
-
}
|
|
227
|
-
nextStates = best;
|
|
228
|
-
}
|
|
229
|
-
let result = [];
|
|
230
|
-
for (let i = 0; i < nextStates.length && result.length < 4; i += 2) {
|
|
231
|
-
let s = nextStates[i + 1];
|
|
232
|
-
if (s == this.state) continue;
|
|
233
|
-
let stack = this.split();
|
|
234
|
-
stack.pushState(s, this.pos);
|
|
235
|
-
stack.storeNode(0, stack.pos, stack.pos, 4, true);
|
|
236
|
-
stack.shiftContext(nextStates[i], this.pos);
|
|
237
|
-
stack.reducePos = this.pos;
|
|
238
|
-
stack.score -= 200;
|
|
239
|
-
result.push(stack);
|
|
240
|
-
}
|
|
241
|
-
return result;
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
@internal
|
|
245
|
-
*/
|
|
246
|
-
forceReduce() {
|
|
247
|
-
let { parser } = this.p;
|
|
248
|
-
let reduce = parser.stateSlot(this.state, 5);
|
|
249
|
-
if ((reduce & 65536) == 0) return false;
|
|
250
|
-
if (!parser.validAction(this.state, reduce)) {
|
|
251
|
-
let depth = reduce >> 19, term = reduce & 65535;
|
|
252
|
-
let target = this.stack.length - depth * 3;
|
|
253
|
-
if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {
|
|
254
|
-
let backup = this.findForcedReduction();
|
|
255
|
-
if (backup == null) return false;
|
|
256
|
-
reduce = backup;
|
|
257
|
-
}
|
|
258
|
-
this.storeNode(0, this.pos, this.pos, 4, true);
|
|
259
|
-
this.score -= 100;
|
|
260
|
-
}
|
|
261
|
-
this.reducePos = this.pos;
|
|
262
|
-
this.reduce(reduce);
|
|
263
|
-
return true;
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
Try to scan through the automaton to find some kind of reduction
|
|
267
|
-
that can be applied. Used when the regular ForcedReduce field
|
|
268
|
-
isn't a valid action. @internal
|
|
269
|
-
*/
|
|
270
|
-
findForcedReduction() {
|
|
271
|
-
let { parser } = this.p, seen = [];
|
|
272
|
-
let explore = (state, depth) => {
|
|
273
|
-
if (seen.includes(state)) return;
|
|
274
|
-
seen.push(state);
|
|
275
|
-
return parser.allActions(state, (action) => {
|
|
276
|
-
if (action & 393216);
|
|
277
|
-
else if (action & 65536) {
|
|
278
|
-
let rDepth = (action >> 19) - depth;
|
|
279
|
-
if (rDepth > 1) {
|
|
280
|
-
let term = action & 65535, target = this.stack.length - rDepth * 3;
|
|
281
|
-
if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0) return rDepth << 19 | 65536 | term;
|
|
282
|
-
}
|
|
283
|
-
} else {
|
|
284
|
-
let found = explore(action, depth + 1);
|
|
285
|
-
if (found != null) return found;
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
};
|
|
289
|
-
return explore(this.state, 0);
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
@internal
|
|
293
|
-
*/
|
|
294
|
-
forceAll() {
|
|
295
|
-
while (!this.p.parser.stateFlag(this.state, 2)) if (!this.forceReduce()) {
|
|
296
|
-
this.storeNode(0, this.pos, this.pos, 4, true);
|
|
297
|
-
break;
|
|
298
|
-
}
|
|
299
|
-
return this;
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
Check whether this state has no further actions (assumed to be a direct descendant of the
|
|
303
|
-
top state, since any other states must be able to continue
|
|
304
|
-
somehow). @internal
|
|
305
|
-
*/
|
|
306
|
-
get deadEnd() {
|
|
307
|
-
if (this.stack.length != 3) return false;
|
|
308
|
-
let { parser } = this.p;
|
|
309
|
-
return parser.data[parser.stateSlot(this.state, 1)] == 65535 && !parser.stateSlot(this.state, 4);
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
Restart the stack (put it back in its start state). Only safe
|
|
313
|
-
when this.stack.length == 3 (state is directly below the top
|
|
314
|
-
state). @internal
|
|
315
|
-
*/
|
|
316
|
-
restart() {
|
|
317
|
-
this.storeNode(0, this.pos, this.pos, 4, true);
|
|
318
|
-
this.state = this.stack[0];
|
|
319
|
-
this.stack.length = 0;
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
@internal
|
|
323
|
-
*/
|
|
324
|
-
sameState(other) {
|
|
325
|
-
if (this.state != other.state || this.stack.length != other.stack.length) return false;
|
|
326
|
-
for (let i = 0; i < this.stack.length; i += 3) if (this.stack[i] != other.stack[i]) return false;
|
|
327
|
-
return true;
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
Get the parser used by this stack.
|
|
331
|
-
*/
|
|
332
|
-
get parser() {
|
|
333
|
-
return this.p.parser;
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
Test whether a given dialect (by numeric ID, as exported from
|
|
337
|
-
the terms file) is enabled.
|
|
338
|
-
*/
|
|
339
|
-
dialectEnabled(dialectID) {
|
|
340
|
-
return this.p.parser.dialect.flags[dialectID];
|
|
341
|
-
}
|
|
342
|
-
shiftContext(term, start) {
|
|
343
|
-
if (this.curContext) this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));
|
|
344
|
-
}
|
|
345
|
-
reduceContext(term, start) {
|
|
346
|
-
if (this.curContext) this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
@internal
|
|
350
|
-
*/
|
|
351
|
-
emitContext() {
|
|
352
|
-
let last = this.buffer.length - 1;
|
|
353
|
-
if (last < 0 || this.buffer[last] != -3) this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
@internal
|
|
357
|
-
*/
|
|
358
|
-
emitLookAhead() {
|
|
359
|
-
let last = this.buffer.length - 1;
|
|
360
|
-
if (last < 0 || this.buffer[last] != -4) this.buffer.push(this.lookAhead, this.pos, this.pos, -4);
|
|
361
|
-
}
|
|
362
|
-
updateContext(context) {
|
|
363
|
-
if (context != this.curContext.context) {
|
|
364
|
-
let newCx = new StackContext(this.curContext.tracker, context);
|
|
365
|
-
if (newCx.hash != this.curContext.hash) this.emitContext();
|
|
366
|
-
this.curContext = newCx;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
@internal
|
|
371
|
-
*/
|
|
372
|
-
setLookAhead(lookAhead) {
|
|
373
|
-
if (lookAhead <= this.lookAhead) return false;
|
|
374
|
-
this.emitLookAhead();
|
|
375
|
-
this.lookAhead = lookAhead;
|
|
376
|
-
return true;
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
@internal
|
|
380
|
-
*/
|
|
381
|
-
close() {
|
|
382
|
-
if (this.curContext && this.curContext.tracker.strict) this.emitContext();
|
|
383
|
-
if (this.lookAhead > 0) this.emitLookAhead();
|
|
384
|
-
}
|
|
385
|
-
};
|
|
386
|
-
var StackContext = class {
|
|
387
|
-
constructor(tracker, context) {
|
|
388
|
-
this.tracker = tracker;
|
|
389
|
-
this.context = context;
|
|
390
|
-
this.hash = tracker.strict ? tracker.hash(context) : 0;
|
|
391
|
-
}
|
|
392
|
-
};
|
|
393
|
-
var SimulatedStack = class {
|
|
394
|
-
constructor(start) {
|
|
395
|
-
this.start = start;
|
|
396
|
-
this.state = start.state;
|
|
397
|
-
this.stack = start.stack;
|
|
398
|
-
this.base = this.stack.length;
|
|
399
|
-
}
|
|
400
|
-
reduce(action) {
|
|
401
|
-
let term = action & 65535, depth = action >> 19;
|
|
402
|
-
if (depth == 0) {
|
|
403
|
-
if (this.stack == this.start.stack) this.stack = this.stack.slice();
|
|
404
|
-
this.stack.push(this.state, 0, 0);
|
|
405
|
-
this.base += 3;
|
|
406
|
-
} else this.base -= (depth - 1) * 3;
|
|
407
|
-
let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);
|
|
408
|
-
this.state = goto;
|
|
409
|
-
}
|
|
410
|
-
};
|
|
411
|
-
var StackBufferCursor = class StackBufferCursor {
|
|
412
|
-
constructor(stack, pos, index) {
|
|
413
|
-
this.stack = stack;
|
|
414
|
-
this.pos = pos;
|
|
415
|
-
this.index = index;
|
|
416
|
-
this.buffer = stack.buffer;
|
|
417
|
-
if (this.index == 0) this.maybeNext();
|
|
418
|
-
}
|
|
419
|
-
static create(stack, pos = stack.bufferBase + stack.buffer.length) {
|
|
420
|
-
return new StackBufferCursor(stack, pos, pos - stack.bufferBase);
|
|
421
|
-
}
|
|
422
|
-
maybeNext() {
|
|
423
|
-
let next = this.stack.parent;
|
|
424
|
-
if (next != null) {
|
|
425
|
-
this.index = this.stack.bufferBase - next.bufferBase;
|
|
426
|
-
this.stack = next;
|
|
427
|
-
this.buffer = next.buffer;
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
get id() {
|
|
431
|
-
return this.buffer[this.index - 4];
|
|
432
|
-
}
|
|
433
|
-
get start() {
|
|
434
|
-
return this.buffer[this.index - 3];
|
|
435
|
-
}
|
|
436
|
-
get end() {
|
|
437
|
-
return this.buffer[this.index - 2];
|
|
438
|
-
}
|
|
439
|
-
get size() {
|
|
440
|
-
return this.buffer[this.index - 1];
|
|
441
|
-
}
|
|
442
|
-
next() {
|
|
443
|
-
this.index -= 4;
|
|
444
|
-
this.pos -= 4;
|
|
445
|
-
if (this.index == 0) this.maybeNext();
|
|
446
|
-
}
|
|
447
|
-
fork() {
|
|
448
|
-
return new StackBufferCursor(this.stack, this.pos, this.index);
|
|
449
|
-
}
|
|
450
|
-
};
|
|
451
|
-
function decodeArray(input, Type = Uint16Array) {
|
|
452
|
-
if (typeof input != "string") return input;
|
|
453
|
-
let array = null;
|
|
454
|
-
for (let pos = 0, out = 0; pos < input.length;) {
|
|
455
|
-
let value = 0;
|
|
456
|
-
for (;;) {
|
|
457
|
-
let next = input.charCodeAt(pos++), stop = false;
|
|
458
|
-
if (next == 126) {
|
|
459
|
-
value = 65535;
|
|
460
|
-
break;
|
|
461
|
-
}
|
|
462
|
-
if (next >= 92) next--;
|
|
463
|
-
if (next >= 34) next--;
|
|
464
|
-
let digit = next - 32;
|
|
465
|
-
if (digit >= 46) {
|
|
466
|
-
digit -= 46;
|
|
467
|
-
stop = true;
|
|
468
|
-
}
|
|
469
|
-
value += digit;
|
|
470
|
-
if (stop) break;
|
|
471
|
-
value *= 46;
|
|
472
|
-
}
|
|
473
|
-
if (array) array[out++] = value;
|
|
474
|
-
else array = new Type(value);
|
|
475
|
-
}
|
|
476
|
-
return array;
|
|
477
|
-
}
|
|
478
|
-
var CachedToken = class {
|
|
479
|
-
constructor() {
|
|
480
|
-
this.start = -1;
|
|
481
|
-
this.value = -1;
|
|
482
|
-
this.end = -1;
|
|
483
|
-
this.extended = -1;
|
|
484
|
-
this.lookAhead = 0;
|
|
485
|
-
this.mask = 0;
|
|
486
|
-
this.context = 0;
|
|
487
|
-
}
|
|
488
|
-
};
|
|
489
|
-
var nullToken = new CachedToken();
|
|
490
|
-
/**
|
|
491
|
-
[Tokenizers](#lr.ExternalTokenizer) interact with the input
|
|
492
|
-
through this interface. It presents the input as a stream of
|
|
493
|
-
characters, tracking lookahead and hiding the complexity of
|
|
494
|
-
[ranges](#common.Parser.parse^ranges) from tokenizer code.
|
|
495
|
-
*/
|
|
496
|
-
var InputStream = class {
|
|
497
|
-
/**
|
|
498
|
-
@internal
|
|
499
|
-
*/
|
|
500
|
-
constructor(input, ranges) {
|
|
501
|
-
this.input = input;
|
|
502
|
-
this.ranges = ranges;
|
|
503
|
-
/**
|
|
504
|
-
@internal
|
|
505
|
-
*/
|
|
506
|
-
this.chunk = "";
|
|
507
|
-
/**
|
|
508
|
-
@internal
|
|
509
|
-
*/
|
|
510
|
-
this.chunkOff = 0;
|
|
511
|
-
/**
|
|
512
|
-
Backup chunk
|
|
513
|
-
*/
|
|
514
|
-
this.chunk2 = "";
|
|
515
|
-
this.chunk2Pos = 0;
|
|
516
|
-
/**
|
|
517
|
-
The character code of the next code unit in the input, or -1
|
|
518
|
-
when the stream is at the end of the input.
|
|
519
|
-
*/
|
|
520
|
-
this.next = -1;
|
|
521
|
-
/**
|
|
522
|
-
@internal
|
|
523
|
-
*/
|
|
524
|
-
this.token = nullToken;
|
|
525
|
-
this.rangeIndex = 0;
|
|
526
|
-
this.pos = this.chunkPos = ranges[0].from;
|
|
527
|
-
this.range = ranges[0];
|
|
528
|
-
this.end = ranges[ranges.length - 1].to;
|
|
529
|
-
this.readNext();
|
|
530
|
-
}
|
|
531
|
-
/**
|
|
532
|
-
@internal
|
|
533
|
-
*/
|
|
534
|
-
resolveOffset(offset, assoc) {
|
|
535
|
-
let range = this.range, index = this.rangeIndex;
|
|
536
|
-
let pos = this.pos + offset;
|
|
537
|
-
while (pos < range.from) {
|
|
538
|
-
if (!index) return null;
|
|
539
|
-
let next = this.ranges[--index];
|
|
540
|
-
pos -= range.from - next.to;
|
|
541
|
-
range = next;
|
|
542
|
-
}
|
|
543
|
-
while (assoc < 0 ? pos > range.to : pos >= range.to) {
|
|
544
|
-
if (index == this.ranges.length - 1) return null;
|
|
545
|
-
let next = this.ranges[++index];
|
|
546
|
-
pos += next.from - range.to;
|
|
547
|
-
range = next;
|
|
548
|
-
}
|
|
549
|
-
return pos;
|
|
550
|
-
}
|
|
551
|
-
/**
|
|
552
|
-
@internal
|
|
553
|
-
*/
|
|
554
|
-
clipPos(pos) {
|
|
555
|
-
if (pos >= this.range.from && pos < this.range.to) return pos;
|
|
556
|
-
for (let range of this.ranges) if (range.to > pos) return Math.max(pos, range.from);
|
|
557
|
-
return this.end;
|
|
558
|
-
}
|
|
559
|
-
/**
|
|
560
|
-
Look at a code unit near the stream position. `.peek(0)` equals
|
|
561
|
-
`.next`, `.peek(-1)` gives you the previous character, and so
|
|
562
|
-
on.
|
|
563
|
-
|
|
564
|
-
Note that looking around during tokenizing creates dependencies
|
|
565
|
-
on potentially far-away content, which may reduce the
|
|
566
|
-
effectiveness incremental parsing—when looking forward—or even
|
|
567
|
-
cause invalid reparses when looking backward more than 25 code
|
|
568
|
-
units, since the library does not track lookbehind.
|
|
569
|
-
*/
|
|
570
|
-
peek(offset) {
|
|
571
|
-
let idx = this.chunkOff + offset, pos, result;
|
|
572
|
-
if (idx >= 0 && idx < this.chunk.length) {
|
|
573
|
-
pos = this.pos + offset;
|
|
574
|
-
result = this.chunk.charCodeAt(idx);
|
|
575
|
-
} else {
|
|
576
|
-
let resolved = this.resolveOffset(offset, 1);
|
|
577
|
-
if (resolved == null) return -1;
|
|
578
|
-
pos = resolved;
|
|
579
|
-
if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) result = this.chunk2.charCodeAt(pos - this.chunk2Pos);
|
|
580
|
-
else {
|
|
581
|
-
let i = this.rangeIndex, range = this.range;
|
|
582
|
-
while (range.to <= pos) range = this.ranges[++i];
|
|
583
|
-
this.chunk2 = this.input.chunk(this.chunk2Pos = pos);
|
|
584
|
-
if (pos + this.chunk2.length > range.to) this.chunk2 = this.chunk2.slice(0, range.to - pos);
|
|
585
|
-
result = this.chunk2.charCodeAt(0);
|
|
586
|
-
}
|
|
587
|
-
}
|
|
588
|
-
if (pos >= this.token.lookAhead) this.token.lookAhead = pos + 1;
|
|
589
|
-
return result;
|
|
590
|
-
}
|
|
591
|
-
/**
|
|
592
|
-
Accept a token. By default, the end of the token is set to the
|
|
593
|
-
current stream position, but you can pass an offset (relative to
|
|
594
|
-
the stream position) to change that.
|
|
595
|
-
*/
|
|
596
|
-
acceptToken(token, endOffset = 0) {
|
|
597
|
-
let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;
|
|
598
|
-
if (end == null || end < this.token.start) throw new RangeError("Token end out of bounds");
|
|
599
|
-
this.token.value = token;
|
|
600
|
-
this.token.end = end;
|
|
601
|
-
}
|
|
602
|
-
/**
|
|
603
|
-
Accept a token ending at a specific given position.
|
|
604
|
-
*/
|
|
605
|
-
acceptTokenTo(token, endPos) {
|
|
606
|
-
this.token.value = token;
|
|
607
|
-
this.token.end = endPos;
|
|
608
|
-
}
|
|
609
|
-
getChunk() {
|
|
610
|
-
if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {
|
|
611
|
-
let { chunk, chunkPos } = this;
|
|
612
|
-
this.chunk = this.chunk2;
|
|
613
|
-
this.chunkPos = this.chunk2Pos;
|
|
614
|
-
this.chunk2 = chunk;
|
|
615
|
-
this.chunk2Pos = chunkPos;
|
|
616
|
-
this.chunkOff = this.pos - this.chunkPos;
|
|
617
|
-
} else {
|
|
618
|
-
this.chunk2 = this.chunk;
|
|
619
|
-
this.chunk2Pos = this.chunkPos;
|
|
620
|
-
let nextChunk = this.input.chunk(this.pos);
|
|
621
|
-
let end = this.pos + nextChunk.length;
|
|
622
|
-
this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;
|
|
623
|
-
this.chunkPos = this.pos;
|
|
624
|
-
this.chunkOff = 0;
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
readNext() {
|
|
628
|
-
if (this.chunkOff >= this.chunk.length) {
|
|
629
|
-
this.getChunk();
|
|
630
|
-
if (this.chunkOff == this.chunk.length) return this.next = -1;
|
|
631
|
-
}
|
|
632
|
-
return this.next = this.chunk.charCodeAt(this.chunkOff);
|
|
633
|
-
}
|
|
634
|
-
/**
|
|
635
|
-
Move the stream forward N (defaults to 1) code units. Returns
|
|
636
|
-
the new value of [`next`](#lr.InputStream.next).
|
|
637
|
-
*/
|
|
638
|
-
advance(n = 1) {
|
|
639
|
-
this.chunkOff += n;
|
|
640
|
-
while (this.pos + n >= this.range.to) {
|
|
641
|
-
if (this.rangeIndex == this.ranges.length - 1) return this.setDone();
|
|
642
|
-
n -= this.range.to - this.pos;
|
|
643
|
-
this.range = this.ranges[++this.rangeIndex];
|
|
644
|
-
this.pos = this.range.from;
|
|
645
|
-
}
|
|
646
|
-
this.pos += n;
|
|
647
|
-
if (this.pos >= this.token.lookAhead) this.token.lookAhead = this.pos + 1;
|
|
648
|
-
return this.readNext();
|
|
649
|
-
}
|
|
650
|
-
setDone() {
|
|
651
|
-
this.pos = this.chunkPos = this.end;
|
|
652
|
-
this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];
|
|
653
|
-
this.chunk = "";
|
|
654
|
-
return this.next = -1;
|
|
655
|
-
}
|
|
656
|
-
/**
|
|
657
|
-
@internal
|
|
658
|
-
*/
|
|
659
|
-
reset(pos, token) {
|
|
660
|
-
if (token) {
|
|
661
|
-
this.token = token;
|
|
662
|
-
token.start = pos;
|
|
663
|
-
token.lookAhead = pos + 1;
|
|
664
|
-
token.value = token.extended = -1;
|
|
665
|
-
} else this.token = nullToken;
|
|
666
|
-
if (this.pos != pos) {
|
|
667
|
-
this.pos = pos;
|
|
668
|
-
if (pos == this.end) {
|
|
669
|
-
this.setDone();
|
|
670
|
-
return this;
|
|
671
|
-
}
|
|
672
|
-
while (pos < this.range.from) this.range = this.ranges[--this.rangeIndex];
|
|
673
|
-
while (pos >= this.range.to) this.range = this.ranges[++this.rangeIndex];
|
|
674
|
-
if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) this.chunkOff = pos - this.chunkPos;
|
|
675
|
-
else {
|
|
676
|
-
this.chunk = "";
|
|
677
|
-
this.chunkOff = 0;
|
|
678
|
-
}
|
|
679
|
-
this.readNext();
|
|
680
|
-
}
|
|
681
|
-
return this;
|
|
682
|
-
}
|
|
683
|
-
/**
|
|
684
|
-
@internal
|
|
685
|
-
*/
|
|
686
|
-
read(from, to) {
|
|
687
|
-
if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length) return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);
|
|
688
|
-
if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length) return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);
|
|
689
|
-
if (from >= this.range.from && to <= this.range.to) return this.input.read(from, to);
|
|
690
|
-
let result = "";
|
|
691
|
-
for (let r of this.ranges) {
|
|
692
|
-
if (r.from >= to) break;
|
|
693
|
-
if (r.to > from) result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));
|
|
694
|
-
}
|
|
695
|
-
return result;
|
|
696
|
-
}
|
|
697
|
-
};
|
|
698
|
-
/**
|
|
699
|
-
@internal
|
|
700
|
-
*/
|
|
701
|
-
var TokenGroup = class {
|
|
702
|
-
constructor(data, id) {
|
|
703
|
-
this.data = data;
|
|
704
|
-
this.id = id;
|
|
705
|
-
}
|
|
706
|
-
token(input, stack) {
|
|
707
|
-
let { parser } = stack.p;
|
|
708
|
-
readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);
|
|
709
|
-
}
|
|
710
|
-
};
|
|
711
|
-
TokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;
|
|
712
|
-
/**
|
|
713
|
-
@hide
|
|
714
|
-
*/
|
|
715
|
-
var LocalTokenGroup = class {
|
|
716
|
-
constructor(data, precTable, elseToken) {
|
|
717
|
-
this.precTable = precTable;
|
|
718
|
-
this.elseToken = elseToken;
|
|
719
|
-
this.data = typeof data == "string" ? decodeArray(data) : data;
|
|
720
|
-
}
|
|
721
|
-
token(input, stack) {
|
|
722
|
-
let start = input.pos, skipped = 0;
|
|
723
|
-
for (;;) {
|
|
724
|
-
let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);
|
|
725
|
-
readToken(this.data, input, stack, 0, this.data, this.precTable);
|
|
726
|
-
if (input.token.value > -1) break;
|
|
727
|
-
if (this.elseToken == null) return;
|
|
728
|
-
if (!atEof) skipped++;
|
|
729
|
-
if (nextPos == null) break;
|
|
730
|
-
input.reset(nextPos, input.token);
|
|
731
|
-
}
|
|
732
|
-
if (skipped) {
|
|
733
|
-
input.reset(start, input.token);
|
|
734
|
-
input.acceptToken(this.elseToken, skipped);
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
};
|
|
738
|
-
LocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;
|
|
739
|
-
/**
|
|
740
|
-
`@external tokens` declarations in the grammar should resolve to
|
|
741
|
-
an instance of this class.
|
|
742
|
-
*/
|
|
743
|
-
var ExternalTokenizer = class {
|
|
744
|
-
/**
|
|
745
|
-
Create a tokenizer. The first argument is the function that,
|
|
746
|
-
given an input stream, scans for the types of tokens it
|
|
747
|
-
recognizes at the stream's position, and calls
|
|
748
|
-
[`acceptToken`](#lr.InputStream.acceptToken) when it finds
|
|
749
|
-
one.
|
|
750
|
-
*/
|
|
751
|
-
constructor(token, options = {}) {
|
|
752
|
-
this.token = token;
|
|
753
|
-
this.contextual = !!options.contextual;
|
|
754
|
-
this.fallback = !!options.fallback;
|
|
755
|
-
this.extend = !!options.extend;
|
|
756
|
-
}
|
|
757
|
-
};
|
|
758
|
-
function readToken(data, input, stack, group, precTable, precOffset) {
|
|
759
|
-
let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;
|
|
760
|
-
scan: for (;;) {
|
|
761
|
-
if ((groupMask & data[state]) == 0) break;
|
|
762
|
-
let accEnd = data[state + 1];
|
|
763
|
-
for (let i = state + 3; i < accEnd; i += 2) if ((data[i + 1] & groupMask) > 0) {
|
|
764
|
-
let term = data[i];
|
|
765
|
-
if (dialect.allows(term) && (input.token.value == -1 || input.token.value == term || overrides(term, input.token.value, precTable, precOffset))) {
|
|
766
|
-
input.acceptToken(term);
|
|
767
|
-
break;
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
let next = input.next, low = 0, high = data[state + 2];
|
|
771
|
-
if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535) {
|
|
772
|
-
state = data[accEnd + high * 3 - 1];
|
|
773
|
-
continue scan;
|
|
774
|
-
}
|
|
775
|
-
for (; low < high;) {
|
|
776
|
-
let mid = low + high >> 1;
|
|
777
|
-
let index = accEnd + mid + (mid << 1);
|
|
778
|
-
let from = data[index], to = data[index + 1] || 65536;
|
|
779
|
-
if (next < from) high = mid;
|
|
780
|
-
else if (next >= to) low = mid + 1;
|
|
781
|
-
else {
|
|
782
|
-
state = data[index + 2];
|
|
783
|
-
input.advance();
|
|
784
|
-
continue scan;
|
|
785
|
-
}
|
|
786
|
-
}
|
|
787
|
-
break;
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
function findOffset(data, start, term) {
|
|
791
|
-
for (let i = start, next; (next = data[i]) != 65535; i++) if (next == term) return i - start;
|
|
792
|
-
return -1;
|
|
793
|
-
}
|
|
794
|
-
function overrides(token, prev, tableData, tableOffset) {
|
|
795
|
-
let iPrev = findOffset(tableData, tableOffset, prev);
|
|
796
|
-
return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;
|
|
797
|
-
}
|
|
798
|
-
var verbose = typeof process != "undefined" && process.env && /\bparse\b/.test(process.env.LOG);
|
|
799
|
-
var stackIDs = null;
|
|
800
|
-
function cutAt(tree, pos, side) {
|
|
801
|
-
let cursor = tree.cursor(IterMode.IncludeAnonymous);
|
|
802
|
-
cursor.moveTo(pos);
|
|
803
|
-
for (;;) if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos))) for (;;) {
|
|
804
|
-
if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError) return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25)) : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25));
|
|
805
|
-
if (side < 0 ? cursor.prevSibling() : cursor.nextSibling()) break;
|
|
806
|
-
if (!cursor.parent()) return side < 0 ? 0 : tree.length;
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
var FragmentCursor = class {
|
|
810
|
-
constructor(fragments, nodeSet) {
|
|
811
|
-
this.fragments = fragments;
|
|
812
|
-
this.nodeSet = nodeSet;
|
|
813
|
-
this.i = 0;
|
|
814
|
-
this.fragment = null;
|
|
815
|
-
this.safeFrom = -1;
|
|
816
|
-
this.safeTo = -1;
|
|
817
|
-
this.trees = [];
|
|
818
|
-
this.start = [];
|
|
819
|
-
this.index = [];
|
|
820
|
-
this.nextFragment();
|
|
821
|
-
}
|
|
822
|
-
nextFragment() {
|
|
823
|
-
let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];
|
|
824
|
-
if (fr) {
|
|
825
|
-
this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;
|
|
826
|
-
this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;
|
|
827
|
-
while (this.trees.length) {
|
|
828
|
-
this.trees.pop();
|
|
829
|
-
this.start.pop();
|
|
830
|
-
this.index.pop();
|
|
831
|
-
}
|
|
832
|
-
this.trees.push(fr.tree);
|
|
833
|
-
this.start.push(-fr.offset);
|
|
834
|
-
this.index.push(0);
|
|
835
|
-
this.nextStart = this.safeFrom;
|
|
836
|
-
} else this.nextStart = 1e9;
|
|
837
|
-
}
|
|
838
|
-
nodeAt(pos) {
|
|
839
|
-
if (pos < this.nextStart) return null;
|
|
840
|
-
while (this.fragment && this.safeTo <= pos) this.nextFragment();
|
|
841
|
-
if (!this.fragment) return null;
|
|
842
|
-
for (;;) {
|
|
843
|
-
let last = this.trees.length - 1;
|
|
844
|
-
if (last < 0) {
|
|
845
|
-
this.nextFragment();
|
|
846
|
-
return null;
|
|
847
|
-
}
|
|
848
|
-
let top = this.trees[last], index = this.index[last];
|
|
849
|
-
if (index == top.children.length) {
|
|
850
|
-
this.trees.pop();
|
|
851
|
-
this.start.pop();
|
|
852
|
-
this.index.pop();
|
|
853
|
-
continue;
|
|
854
|
-
}
|
|
855
|
-
let next = top.children[index];
|
|
856
|
-
let start = this.start[last] + top.positions[index];
|
|
857
|
-
if (start > pos) {
|
|
858
|
-
this.nextStart = start;
|
|
859
|
-
return null;
|
|
860
|
-
}
|
|
861
|
-
if (next instanceof Tree) {
|
|
862
|
-
if (start == pos) {
|
|
863
|
-
if (start < this.safeFrom) return null;
|
|
864
|
-
let end = start + next.length;
|
|
865
|
-
if (end <= this.safeTo) {
|
|
866
|
-
let lookAhead = next.prop(NodeProp.lookAhead);
|
|
867
|
-
if (!lookAhead || end + lookAhead < this.fragment.to) return next;
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
this.index[last]++;
|
|
871
|
-
if (start + next.length >= Math.max(this.safeFrom, pos)) {
|
|
872
|
-
this.trees.push(next);
|
|
873
|
-
this.start.push(start);
|
|
874
|
-
this.index.push(0);
|
|
875
|
-
}
|
|
876
|
-
} else {
|
|
877
|
-
this.index[last]++;
|
|
878
|
-
this.nextStart = start + next.length;
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
}
|
|
882
|
-
};
|
|
883
|
-
var TokenCache = class {
|
|
884
|
-
constructor(parser, stream) {
|
|
885
|
-
this.stream = stream;
|
|
886
|
-
this.tokens = [];
|
|
887
|
-
this.mainToken = null;
|
|
888
|
-
this.actions = [];
|
|
889
|
-
this.tokens = parser.tokenizers.map((_) => new CachedToken());
|
|
890
|
-
}
|
|
891
|
-
getActions(stack) {
|
|
892
|
-
let actionIndex = 0;
|
|
893
|
-
let main = null;
|
|
894
|
-
let { parser } = stack.p, { tokenizers } = parser;
|
|
895
|
-
let mask = parser.stateSlot(stack.state, 3);
|
|
896
|
-
let context = stack.curContext ? stack.curContext.hash : 0;
|
|
897
|
-
let lookAhead = 0;
|
|
898
|
-
for (let i = 0; i < tokenizers.length; i++) {
|
|
899
|
-
if ((1 << i & mask) == 0) continue;
|
|
900
|
-
let tokenizer = tokenizers[i], token = this.tokens[i];
|
|
901
|
-
if (main && !tokenizer.fallback) continue;
|
|
902
|
-
if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {
|
|
903
|
-
this.updateCachedToken(token, tokenizer, stack);
|
|
904
|
-
token.mask = mask;
|
|
905
|
-
token.context = context;
|
|
906
|
-
}
|
|
907
|
-
if (token.lookAhead > token.end + 25) lookAhead = Math.max(token.lookAhead, lookAhead);
|
|
908
|
-
if (token.value != 0) {
|
|
909
|
-
let startIndex = actionIndex;
|
|
910
|
-
if (token.extended > -1) actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);
|
|
911
|
-
actionIndex = this.addActions(stack, token.value, token.end, actionIndex);
|
|
912
|
-
if (!tokenizer.extend) {
|
|
913
|
-
main = token;
|
|
914
|
-
if (actionIndex > startIndex) break;
|
|
915
|
-
}
|
|
916
|
-
}
|
|
917
|
-
}
|
|
918
|
-
while (this.actions.length > actionIndex) this.actions.pop();
|
|
919
|
-
if (lookAhead) stack.setLookAhead(lookAhead);
|
|
920
|
-
if (!main && stack.pos == this.stream.end) {
|
|
921
|
-
main = new CachedToken();
|
|
922
|
-
main.value = stack.p.parser.eofTerm;
|
|
923
|
-
main.start = main.end = stack.pos;
|
|
924
|
-
actionIndex = this.addActions(stack, main.value, main.end, actionIndex);
|
|
925
|
-
}
|
|
926
|
-
this.mainToken = main;
|
|
927
|
-
return this.actions;
|
|
928
|
-
}
|
|
929
|
-
getMainToken(stack) {
|
|
930
|
-
if (this.mainToken) return this.mainToken;
|
|
931
|
-
let main = new CachedToken(), { pos, p } = stack;
|
|
932
|
-
main.start = pos;
|
|
933
|
-
main.end = Math.min(pos + 1, p.stream.end);
|
|
934
|
-
main.value = pos == p.stream.end ? p.parser.eofTerm : 0;
|
|
935
|
-
return main;
|
|
936
|
-
}
|
|
937
|
-
updateCachedToken(token, tokenizer, stack) {
|
|
938
|
-
let start = this.stream.clipPos(stack.pos);
|
|
939
|
-
tokenizer.token(this.stream.reset(start, token), stack);
|
|
940
|
-
if (token.value > -1) {
|
|
941
|
-
let { parser } = stack.p;
|
|
942
|
-
for (let i = 0; i < parser.specialized.length; i++) if (parser.specialized[i] == token.value) {
|
|
943
|
-
let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);
|
|
944
|
-
if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {
|
|
945
|
-
if ((result & 1) == 0) token.value = result >> 1;
|
|
946
|
-
else token.extended = result >> 1;
|
|
947
|
-
break;
|
|
948
|
-
}
|
|
949
|
-
}
|
|
950
|
-
} else {
|
|
951
|
-
token.value = 0;
|
|
952
|
-
token.end = this.stream.clipPos(start + 1);
|
|
953
|
-
}
|
|
954
|
-
}
|
|
955
|
-
putAction(action, token, end, index) {
|
|
956
|
-
for (let i = 0; i < index; i += 3) if (this.actions[i] == action) return index;
|
|
957
|
-
this.actions[index++] = action;
|
|
958
|
-
this.actions[index++] = token;
|
|
959
|
-
this.actions[index++] = end;
|
|
960
|
-
return index;
|
|
961
|
-
}
|
|
962
|
-
addActions(stack, token, end, index) {
|
|
963
|
-
let { state } = stack, { parser } = stack.p, { data } = parser;
|
|
964
|
-
for (let set = 0; set < 2; set++) for (let i = parser.stateSlot(state, set ? 2 : 1);; i += 3) {
|
|
965
|
-
if (data[i] == 65535) if (data[i + 1] == 1) i = pair(data, i + 2);
|
|
966
|
-
else {
|
|
967
|
-
if (index == 0 && data[i + 1] == 2) index = this.putAction(pair(data, i + 2), token, end, index);
|
|
968
|
-
break;
|
|
969
|
-
}
|
|
970
|
-
if (data[i] == token) index = this.putAction(pair(data, i + 1), token, end, index);
|
|
971
|
-
}
|
|
972
|
-
return index;
|
|
973
|
-
}
|
|
974
|
-
};
|
|
975
|
-
var Parse = class {
|
|
976
|
-
constructor(parser, input, fragments, ranges) {
|
|
977
|
-
this.parser = parser;
|
|
978
|
-
this.input = input;
|
|
979
|
-
this.ranges = ranges;
|
|
980
|
-
this.recovering = 0;
|
|
981
|
-
this.nextStackID = 9812;
|
|
982
|
-
this.minStackPos = 0;
|
|
983
|
-
this.reused = [];
|
|
984
|
-
this.stoppedAt = null;
|
|
985
|
-
this.lastBigReductionStart = -1;
|
|
986
|
-
this.lastBigReductionSize = 0;
|
|
987
|
-
this.bigReductionCount = 0;
|
|
988
|
-
this.stream = new InputStream(input, ranges);
|
|
989
|
-
this.tokens = new TokenCache(parser, this.stream);
|
|
990
|
-
this.topTerm = parser.top[1];
|
|
991
|
-
let { from } = ranges[0];
|
|
992
|
-
this.stacks = [Stack.start(this, parser.top[0], from)];
|
|
993
|
-
this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4 ? new FragmentCursor(fragments, parser.nodeSet) : null;
|
|
994
|
-
}
|
|
995
|
-
get parsedPos() {
|
|
996
|
-
return this.minStackPos;
|
|
997
|
-
}
|
|
998
|
-
advance() {
|
|
999
|
-
let stacks = this.stacks, pos = this.minStackPos;
|
|
1000
|
-
let newStacks = this.stacks = [];
|
|
1001
|
-
let stopped, stoppedTokens;
|
|
1002
|
-
if (this.bigReductionCount > 300 && stacks.length == 1) {
|
|
1003
|
-
let [s] = stacks;
|
|
1004
|
-
while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart);
|
|
1005
|
-
this.bigReductionCount = this.lastBigReductionSize = 0;
|
|
1006
|
-
}
|
|
1007
|
-
for (let i = 0; i < stacks.length; i++) {
|
|
1008
|
-
let stack = stacks[i];
|
|
1009
|
-
for (;;) {
|
|
1010
|
-
this.tokens.mainToken = null;
|
|
1011
|
-
if (stack.pos > pos) newStacks.push(stack);
|
|
1012
|
-
else if (this.advanceStack(stack, newStacks, stacks)) continue;
|
|
1013
|
-
else {
|
|
1014
|
-
if (!stopped) {
|
|
1015
|
-
stopped = [];
|
|
1016
|
-
stoppedTokens = [];
|
|
1017
|
-
}
|
|
1018
|
-
stopped.push(stack);
|
|
1019
|
-
let tok = this.tokens.getMainToken(stack);
|
|
1020
|
-
stoppedTokens.push(tok.value, tok.end);
|
|
1021
|
-
}
|
|
1022
|
-
break;
|
|
1023
|
-
}
|
|
1024
|
-
}
|
|
1025
|
-
if (!newStacks.length) {
|
|
1026
|
-
let finished = stopped && findFinished(stopped);
|
|
1027
|
-
if (finished) {
|
|
1028
|
-
if (verbose) console.log("Finish with " + this.stackID(finished));
|
|
1029
|
-
return this.stackToTree(finished);
|
|
1030
|
-
}
|
|
1031
|
-
if (this.parser.strict) {
|
|
1032
|
-
if (verbose && stopped) console.log("Stuck with token " + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : "none"));
|
|
1033
|
-
throw new SyntaxError("No parse at " + pos);
|
|
1034
|
-
}
|
|
1035
|
-
if (!this.recovering) this.recovering = 5;
|
|
1036
|
-
}
|
|
1037
|
-
if (this.recovering && stopped) {
|
|
1038
|
-
let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0] : this.runRecovery(stopped, stoppedTokens, newStacks);
|
|
1039
|
-
if (finished) {
|
|
1040
|
-
if (verbose) console.log("Force-finish " + this.stackID(finished));
|
|
1041
|
-
return this.stackToTree(finished.forceAll());
|
|
1042
|
-
}
|
|
1043
|
-
}
|
|
1044
|
-
if (this.recovering) {
|
|
1045
|
-
let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3;
|
|
1046
|
-
if (newStacks.length > maxRemaining) {
|
|
1047
|
-
newStacks.sort((a, b) => b.score - a.score);
|
|
1048
|
-
while (newStacks.length > maxRemaining) newStacks.pop();
|
|
1049
|
-
}
|
|
1050
|
-
if (newStacks.some((s) => s.reducePos > pos)) this.recovering--;
|
|
1051
|
-
} else if (newStacks.length > 1) {
|
|
1052
|
-
outer: for (let i = 0; i < newStacks.length - 1; i++) {
|
|
1053
|
-
let stack = newStacks[i];
|
|
1054
|
-
for (let j = i + 1; j < newStacks.length; j++) {
|
|
1055
|
-
let other = newStacks[j];
|
|
1056
|
-
if (stack.sameState(other) || stack.buffer.length > 500 && other.buffer.length > 500) if ((stack.score - other.score || stack.buffer.length - other.buffer.length) > 0) newStacks.splice(j--, 1);
|
|
1057
|
-
else {
|
|
1058
|
-
newStacks.splice(i--, 1);
|
|
1059
|
-
continue outer;
|
|
1060
|
-
}
|
|
1061
|
-
}
|
|
1062
|
-
}
|
|
1063
|
-
if (newStacks.length > 12) {
|
|
1064
|
-
newStacks.sort((a, b) => b.score - a.score);
|
|
1065
|
-
newStacks.splice(12, newStacks.length - 12);
|
|
1066
|
-
}
|
|
1067
|
-
}
|
|
1068
|
-
this.minStackPos = newStacks[0].pos;
|
|
1069
|
-
for (let i = 1; i < newStacks.length; i++) if (newStacks[i].pos < this.minStackPos) this.minStackPos = newStacks[i].pos;
|
|
1070
|
-
return null;
|
|
1071
|
-
}
|
|
1072
|
-
stopAt(pos) {
|
|
1073
|
-
if (this.stoppedAt != null && this.stoppedAt < pos) throw new RangeError("Can't move stoppedAt forward");
|
|
1074
|
-
this.stoppedAt = pos;
|
|
1075
|
-
}
|
|
1076
|
-
advanceStack(stack, stacks, split) {
|
|
1077
|
-
let start = stack.pos, { parser } = this;
|
|
1078
|
-
let base = verbose ? this.stackID(stack) + " -> " : "";
|
|
1079
|
-
if (this.stoppedAt != null && start > this.stoppedAt) return stack.forceReduce() ? stack : null;
|
|
1080
|
-
if (this.fragments) {
|
|
1081
|
-
let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;
|
|
1082
|
-
for (let cached = this.fragments.nodeAt(start); cached;) {
|
|
1083
|
-
let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;
|
|
1084
|
-
if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {
|
|
1085
|
-
stack.useNode(cached, match);
|
|
1086
|
-
if (verbose) console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);
|
|
1087
|
-
return true;
|
|
1088
|
-
}
|
|
1089
|
-
if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0) break;
|
|
1090
|
-
let inner = cached.children[0];
|
|
1091
|
-
if (inner instanceof Tree && cached.positions[0] == 0) cached = inner;
|
|
1092
|
-
else break;
|
|
1093
|
-
}
|
|
1094
|
-
}
|
|
1095
|
-
let defaultReduce = parser.stateSlot(stack.state, 4);
|
|
1096
|
-
if (defaultReduce > 0) {
|
|
1097
|
-
stack.reduce(defaultReduce);
|
|
1098
|
-
if (verbose) console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535)})`);
|
|
1099
|
-
return true;
|
|
1100
|
-
}
|
|
1101
|
-
if (stack.stack.length >= 8400) while (stack.stack.length > 6e3 && stack.forceReduce());
|
|
1102
|
-
let actions = this.tokens.getActions(stack);
|
|
1103
|
-
for (let i = 0; i < actions.length;) {
|
|
1104
|
-
let action = actions[i++], term = actions[i++], end = actions[i++];
|
|
1105
|
-
let last = i == actions.length || !split;
|
|
1106
|
-
let localStack = last ? stack : stack.split();
|
|
1107
|
-
let main = this.tokens.mainToken;
|
|
1108
|
-
localStack.apply(action, term, main ? main.start : localStack.pos, end);
|
|
1109
|
-
if (verbose) console.log(base + this.stackID(localStack) + ` (via ${(action & 65536) == 0 ? "shift" : `reduce of ${parser.getName(action & 65535)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? "" : ", split"})`);
|
|
1110
|
-
if (last) return true;
|
|
1111
|
-
else if (localStack.pos > start) stacks.push(localStack);
|
|
1112
|
-
else split.push(localStack);
|
|
1113
|
-
}
|
|
1114
|
-
return false;
|
|
1115
|
-
}
|
|
1116
|
-
advanceFully(stack, newStacks) {
|
|
1117
|
-
let pos = stack.pos;
|
|
1118
|
-
for (;;) {
|
|
1119
|
-
if (!this.advanceStack(stack, null, null)) return false;
|
|
1120
|
-
if (stack.pos > pos) {
|
|
1121
|
-
pushStackDedup(stack, newStacks);
|
|
1122
|
-
return true;
|
|
1123
|
-
}
|
|
1124
|
-
}
|
|
1125
|
-
}
|
|
1126
|
-
runRecovery(stacks, tokens, newStacks) {
|
|
1127
|
-
let finished = null, restarted = false;
|
|
1128
|
-
for (let i = 0; i < stacks.length; i++) {
|
|
1129
|
-
let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];
|
|
1130
|
-
let base = verbose ? this.stackID(stack) + " -> " : "";
|
|
1131
|
-
if (stack.deadEnd) {
|
|
1132
|
-
if (restarted) continue;
|
|
1133
|
-
restarted = true;
|
|
1134
|
-
stack.restart();
|
|
1135
|
-
if (verbose) console.log(base + this.stackID(stack) + " (restarted)");
|
|
1136
|
-
if (this.advanceFully(stack, newStacks)) continue;
|
|
1137
|
-
}
|
|
1138
|
-
let force = stack.split(), forceBase = base;
|
|
1139
|
-
for (let j = 0; j < 10 && force.forceReduce(); j++) {
|
|
1140
|
-
if (verbose) console.log(forceBase + this.stackID(force) + " (via force-reduce)");
|
|
1141
|
-
if (this.advanceFully(force, newStacks)) break;
|
|
1142
|
-
if (verbose) forceBase = this.stackID(force) + " -> ";
|
|
1143
|
-
}
|
|
1144
|
-
for (let insert of stack.recoverByInsert(token)) {
|
|
1145
|
-
if (verbose) console.log(base + this.stackID(insert) + " (via recover-insert)");
|
|
1146
|
-
this.advanceFully(insert, newStacks);
|
|
1147
|
-
}
|
|
1148
|
-
if (this.stream.end > stack.pos) {
|
|
1149
|
-
if (tokenEnd == stack.pos) {
|
|
1150
|
-
tokenEnd++;
|
|
1151
|
-
token = 0;
|
|
1152
|
-
}
|
|
1153
|
-
stack.recoverByDelete(token, tokenEnd);
|
|
1154
|
-
if (verbose) console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);
|
|
1155
|
-
pushStackDedup(stack, newStacks);
|
|
1156
|
-
} else if (!finished || finished.score < force.score) finished = force;
|
|
1157
|
-
}
|
|
1158
|
-
return finished;
|
|
1159
|
-
}
|
|
1160
|
-
stackToTree(stack) {
|
|
1161
|
-
stack.close();
|
|
1162
|
-
return Tree.build({
|
|
1163
|
-
buffer: StackBufferCursor.create(stack),
|
|
1164
|
-
nodeSet: this.parser.nodeSet,
|
|
1165
|
-
topID: this.topTerm,
|
|
1166
|
-
maxBufferLength: this.parser.bufferLength,
|
|
1167
|
-
reused: this.reused,
|
|
1168
|
-
start: this.ranges[0].from,
|
|
1169
|
-
length: stack.pos - this.ranges[0].from,
|
|
1170
|
-
minRepeatType: this.parser.minRepeatTerm
|
|
1171
|
-
});
|
|
1172
|
-
}
|
|
1173
|
-
stackID(stack) {
|
|
1174
|
-
let id = (stackIDs || (stackIDs = /* @__PURE__ */ new WeakMap())).get(stack);
|
|
1175
|
-
if (!id) stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));
|
|
1176
|
-
return id + stack;
|
|
1177
|
-
}
|
|
1178
|
-
};
|
|
1179
|
-
function pushStackDedup(stack, newStacks) {
|
|
1180
|
-
for (let i = 0; i < newStacks.length; i++) {
|
|
1181
|
-
let other = newStacks[i];
|
|
1182
|
-
if (other.pos == stack.pos && other.sameState(stack)) {
|
|
1183
|
-
if (newStacks[i].score < stack.score) newStacks[i] = stack;
|
|
1184
|
-
return;
|
|
1185
|
-
}
|
|
1186
|
-
}
|
|
1187
|
-
newStacks.push(stack);
|
|
1188
|
-
}
|
|
1189
|
-
var Dialect = class {
|
|
1190
|
-
constructor(source, flags, disabled) {
|
|
1191
|
-
this.source = source;
|
|
1192
|
-
this.flags = flags;
|
|
1193
|
-
this.disabled = disabled;
|
|
1194
|
-
}
|
|
1195
|
-
allows(term) {
|
|
1196
|
-
return !this.disabled || this.disabled[term] == 0;
|
|
1197
|
-
}
|
|
1198
|
-
};
|
|
1199
|
-
var id = (x) => x;
|
|
1200
|
-
/**
|
|
1201
|
-
Context trackers are used to track stateful context (such as
|
|
1202
|
-
indentation in the Python grammar, or parent elements in the XML
|
|
1203
|
-
grammar) needed by external tokenizers. You declare them in a
|
|
1204
|
-
grammar file as `@context exportName from "module"`.
|
|
1205
|
-
|
|
1206
|
-
Context values should be immutable, and can be updated (replaced)
|
|
1207
|
-
on shift or reduce actions.
|
|
1208
|
-
|
|
1209
|
-
The export used in a `@context` declaration should be of this
|
|
1210
|
-
type.
|
|
1211
|
-
*/
|
|
1212
|
-
var ContextTracker = class {
|
|
1213
|
-
/**
|
|
1214
|
-
Define a context tracker.
|
|
1215
|
-
*/
|
|
1216
|
-
constructor(spec) {
|
|
1217
|
-
this.start = spec.start;
|
|
1218
|
-
this.shift = spec.shift || id;
|
|
1219
|
-
this.reduce = spec.reduce || id;
|
|
1220
|
-
this.reuse = spec.reuse || id;
|
|
1221
|
-
this.hash = spec.hash || (() => 0);
|
|
1222
|
-
this.strict = spec.strict !== false;
|
|
1223
|
-
}
|
|
1224
|
-
};
|
|
1225
|
-
/**
|
|
1226
|
-
Holds the parse tables for a given grammar, as generated by
|
|
1227
|
-
`lezer-generator`, and provides [methods](#common.Parser) to parse
|
|
1228
|
-
content with.
|
|
1229
|
-
*/
|
|
1230
|
-
var LRParser = class LRParser extends Parser {
|
|
1231
|
-
/**
|
|
1232
|
-
@internal
|
|
1233
|
-
*/
|
|
1234
|
-
constructor(spec) {
|
|
1235
|
-
super();
|
|
1236
|
-
/**
|
|
1237
|
-
@internal
|
|
1238
|
-
*/
|
|
1239
|
-
this.wrappers = [];
|
|
1240
|
-
if (spec.version != 14) throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (14)`);
|
|
1241
|
-
let nodeNames = spec.nodeNames.split(" ");
|
|
1242
|
-
this.minRepeatTerm = nodeNames.length;
|
|
1243
|
-
for (let i = 0; i < spec.repeatNodeCount; i++) nodeNames.push("");
|
|
1244
|
-
let topTerms = Object.keys(spec.topRules).map((r) => spec.topRules[r][1]);
|
|
1245
|
-
let nodeProps = [];
|
|
1246
|
-
for (let i = 0; i < nodeNames.length; i++) nodeProps.push([]);
|
|
1247
|
-
function setProp(nodeID, prop, value) {
|
|
1248
|
-
nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);
|
|
1249
|
-
}
|
|
1250
|
-
if (spec.nodeProps) for (let propSpec of spec.nodeProps) {
|
|
1251
|
-
let prop = propSpec[0];
|
|
1252
|
-
if (typeof prop == "string") prop = NodeProp[prop];
|
|
1253
|
-
for (let i = 1; i < propSpec.length;) {
|
|
1254
|
-
let next = propSpec[i++];
|
|
1255
|
-
if (next >= 0) setProp(next, prop, propSpec[i++]);
|
|
1256
|
-
else {
|
|
1257
|
-
let value = propSpec[i + -next];
|
|
1258
|
-
for (let j = -next; j > 0; j--) setProp(propSpec[i++], prop, value);
|
|
1259
|
-
i++;
|
|
1260
|
-
}
|
|
1261
|
-
}
|
|
1262
|
-
}
|
|
1263
|
-
this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({
|
|
1264
|
-
name: i >= this.minRepeatTerm ? void 0 : name,
|
|
1265
|
-
id: i,
|
|
1266
|
-
props: nodeProps[i],
|
|
1267
|
-
top: topTerms.indexOf(i) > -1,
|
|
1268
|
-
error: i == 0,
|
|
1269
|
-
skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1
|
|
1270
|
-
})));
|
|
1271
|
-
if (spec.propSources) this.nodeSet = this.nodeSet.extend(...spec.propSources);
|
|
1272
|
-
this.strict = false;
|
|
1273
|
-
this.bufferLength = DefaultBufferLength;
|
|
1274
|
-
let tokenArray = decodeArray(spec.tokenData);
|
|
1275
|
-
this.context = spec.context;
|
|
1276
|
-
this.specializerSpecs = spec.specialized || [];
|
|
1277
|
-
this.specialized = new Uint16Array(this.specializerSpecs.length);
|
|
1278
|
-
for (let i = 0; i < this.specializerSpecs.length; i++) this.specialized[i] = this.specializerSpecs[i].term;
|
|
1279
|
-
this.specializers = this.specializerSpecs.map(getSpecializer);
|
|
1280
|
-
this.states = decodeArray(spec.states, Uint32Array);
|
|
1281
|
-
this.data = decodeArray(spec.stateData);
|
|
1282
|
-
this.goto = decodeArray(spec.goto);
|
|
1283
|
-
this.maxTerm = spec.maxTerm;
|
|
1284
|
-
this.tokenizers = spec.tokenizers.map((value) => typeof value == "number" ? new TokenGroup(tokenArray, value) : value);
|
|
1285
|
-
this.topRules = spec.topRules;
|
|
1286
|
-
this.dialects = spec.dialects || {};
|
|
1287
|
-
this.dynamicPrecedences = spec.dynamicPrecedences || null;
|
|
1288
|
-
this.tokenPrecTable = spec.tokenPrec;
|
|
1289
|
-
this.termNames = spec.termNames || null;
|
|
1290
|
-
this.maxNode = this.nodeSet.types.length - 1;
|
|
1291
|
-
this.dialect = this.parseDialect();
|
|
1292
|
-
this.top = this.topRules[Object.keys(this.topRules)[0]];
|
|
1293
|
-
}
|
|
1294
|
-
createParse(input, fragments, ranges) {
|
|
1295
|
-
let parse = new Parse(this, input, fragments, ranges);
|
|
1296
|
-
for (let w of this.wrappers) parse = w(parse, input, fragments, ranges);
|
|
1297
|
-
return parse;
|
|
1298
|
-
}
|
|
1299
|
-
/**
|
|
1300
|
-
Get a goto table entry @internal
|
|
1301
|
-
*/
|
|
1302
|
-
getGoto(state, term, loose = false) {
|
|
1303
|
-
let table = this.goto;
|
|
1304
|
-
if (term >= table[0]) return -1;
|
|
1305
|
-
for (let pos = table[term + 1];;) {
|
|
1306
|
-
let groupTag = table[pos++], last = groupTag & 1;
|
|
1307
|
-
let target = table[pos++];
|
|
1308
|
-
if (last && loose) return target;
|
|
1309
|
-
for (let end = pos + (groupTag >> 1); pos < end; pos++) if (table[pos] == state) return target;
|
|
1310
|
-
if (last) return -1;
|
|
1311
|
-
}
|
|
1312
|
-
}
|
|
1313
|
-
/**
|
|
1314
|
-
Check if this state has an action for a given terminal @internal
|
|
1315
|
-
*/
|
|
1316
|
-
hasAction(state, terminal) {
|
|
1317
|
-
let data = this.data;
|
|
1318
|
-
for (let set = 0; set < 2; set++) for (let i = this.stateSlot(state, set ? 2 : 1), next;; i += 3) {
|
|
1319
|
-
if ((next = data[i]) == 65535) if (data[i + 1] == 1) next = data[i = pair(data, i + 2)];
|
|
1320
|
-
else if (data[i + 1] == 2) return pair(data, i + 2);
|
|
1321
|
-
else break;
|
|
1322
|
-
if (next == terminal || next == 0) return pair(data, i + 1);
|
|
1323
|
-
}
|
|
1324
|
-
return 0;
|
|
1325
|
-
}
|
|
1326
|
-
/**
|
|
1327
|
-
@internal
|
|
1328
|
-
*/
|
|
1329
|
-
stateSlot(state, slot) {
|
|
1330
|
-
return this.states[state * 6 + slot];
|
|
1331
|
-
}
|
|
1332
|
-
/**
|
|
1333
|
-
@internal
|
|
1334
|
-
*/
|
|
1335
|
-
stateFlag(state, flag) {
|
|
1336
|
-
return (this.stateSlot(state, 0) & flag) > 0;
|
|
1337
|
-
}
|
|
1338
|
-
/**
|
|
1339
|
-
@internal
|
|
1340
|
-
*/
|
|
1341
|
-
validAction(state, action) {
|
|
1342
|
-
return !!this.allActions(state, (a) => a == action ? true : null);
|
|
1343
|
-
}
|
|
1344
|
-
/**
|
|
1345
|
-
@internal
|
|
1346
|
-
*/
|
|
1347
|
-
allActions(state, action) {
|
|
1348
|
-
let deflt = this.stateSlot(state, 4);
|
|
1349
|
-
let result = deflt ? action(deflt) : void 0;
|
|
1350
|
-
for (let i = this.stateSlot(state, 1); result == null; i += 3) {
|
|
1351
|
-
if (this.data[i] == 65535) if (this.data[i + 1] == 1) i = pair(this.data, i + 2);
|
|
1352
|
-
else break;
|
|
1353
|
-
result = action(pair(this.data, i + 1));
|
|
1354
|
-
}
|
|
1355
|
-
return result;
|
|
1356
|
-
}
|
|
1357
|
-
/**
|
|
1358
|
-
Get the states that can follow this one through shift actions or
|
|
1359
|
-
goto jumps. @internal
|
|
1360
|
-
*/
|
|
1361
|
-
nextStates(state) {
|
|
1362
|
-
let result = [];
|
|
1363
|
-
for (let i = this.stateSlot(state, 1);; i += 3) {
|
|
1364
|
-
if (this.data[i] == 65535) if (this.data[i + 1] == 1) i = pair(this.data, i + 2);
|
|
1365
|
-
else break;
|
|
1366
|
-
if ((this.data[i + 2] & 1) == 0) {
|
|
1367
|
-
let value = this.data[i + 1];
|
|
1368
|
-
if (!result.some((v, i) => i & 1 && v == value)) result.push(this.data[i], value);
|
|
1369
|
-
}
|
|
1370
|
-
}
|
|
1371
|
-
return result;
|
|
1372
|
-
}
|
|
1373
|
-
/**
|
|
1374
|
-
Configure the parser. Returns a new parser instance that has the
|
|
1375
|
-
given settings modified. Settings not provided in `config` are
|
|
1376
|
-
kept from the original parser.
|
|
1377
|
-
*/
|
|
1378
|
-
configure(config) {
|
|
1379
|
-
let copy = Object.assign(Object.create(LRParser.prototype), this);
|
|
1380
|
-
if (config.props) copy.nodeSet = this.nodeSet.extend(...config.props);
|
|
1381
|
-
if (config.top) {
|
|
1382
|
-
let info = this.topRules[config.top];
|
|
1383
|
-
if (!info) throw new RangeError(`Invalid top rule name ${config.top}`);
|
|
1384
|
-
copy.top = info;
|
|
1385
|
-
}
|
|
1386
|
-
if (config.tokenizers) copy.tokenizers = this.tokenizers.map((t) => {
|
|
1387
|
-
let found = config.tokenizers.find((r) => r.from == t);
|
|
1388
|
-
return found ? found.to : t;
|
|
1389
|
-
});
|
|
1390
|
-
if (config.specializers) {
|
|
1391
|
-
copy.specializers = this.specializers.slice();
|
|
1392
|
-
copy.specializerSpecs = this.specializerSpecs.map((s, i) => {
|
|
1393
|
-
let found = config.specializers.find((r) => r.from == s.external);
|
|
1394
|
-
if (!found) return s;
|
|
1395
|
-
let spec = Object.assign(Object.assign({}, s), { external: found.to });
|
|
1396
|
-
copy.specializers[i] = getSpecializer(spec);
|
|
1397
|
-
return spec;
|
|
1398
|
-
});
|
|
1399
|
-
}
|
|
1400
|
-
if (config.contextTracker) copy.context = config.contextTracker;
|
|
1401
|
-
if (config.dialect) copy.dialect = this.parseDialect(config.dialect);
|
|
1402
|
-
if (config.strict != null) copy.strict = config.strict;
|
|
1403
|
-
if (config.wrap) copy.wrappers = copy.wrappers.concat(config.wrap);
|
|
1404
|
-
if (config.bufferLength != null) copy.bufferLength = config.bufferLength;
|
|
1405
|
-
return copy;
|
|
1406
|
-
}
|
|
1407
|
-
/**
|
|
1408
|
-
Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)
|
|
1409
|
-
are registered for this parser.
|
|
1410
|
-
*/
|
|
1411
|
-
hasWrappers() {
|
|
1412
|
-
return this.wrappers.length > 0;
|
|
1413
|
-
}
|
|
1414
|
-
/**
|
|
1415
|
-
Returns the name associated with a given term. This will only
|
|
1416
|
-
work for all terms when the parser was generated with the
|
|
1417
|
-
`--names` option. By default, only the names of tagged terms are
|
|
1418
|
-
stored.
|
|
1419
|
-
*/
|
|
1420
|
-
getName(term) {
|
|
1421
|
-
return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);
|
|
1422
|
-
}
|
|
1423
|
-
/**
|
|
1424
|
-
The eof term id is always allocated directly after the node
|
|
1425
|
-
types. @internal
|
|
1426
|
-
*/
|
|
1427
|
-
get eofTerm() {
|
|
1428
|
-
return this.maxNode + 1;
|
|
1429
|
-
}
|
|
1430
|
-
/**
|
|
1431
|
-
The type of top node produced by the parser.
|
|
1432
|
-
*/
|
|
1433
|
-
get topNode() {
|
|
1434
|
-
return this.nodeSet.types[this.top[1]];
|
|
1435
|
-
}
|
|
1436
|
-
/**
|
|
1437
|
-
@internal
|
|
1438
|
-
*/
|
|
1439
|
-
dynamicPrecedence(term) {
|
|
1440
|
-
let prec = this.dynamicPrecedences;
|
|
1441
|
-
return prec == null ? 0 : prec[term] || 0;
|
|
1442
|
-
}
|
|
1443
|
-
/**
|
|
1444
|
-
@internal
|
|
1445
|
-
*/
|
|
1446
|
-
parseDialect(dialect) {
|
|
1447
|
-
let values = Object.keys(this.dialects), flags = values.map(() => false);
|
|
1448
|
-
if (dialect) for (let part of dialect.split(" ")) {
|
|
1449
|
-
let id = values.indexOf(part);
|
|
1450
|
-
if (id >= 0) flags[id] = true;
|
|
1451
|
-
}
|
|
1452
|
-
let disabled = null;
|
|
1453
|
-
for (let i = 0; i < values.length; i++) if (!flags[i]) for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535;) (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;
|
|
1454
|
-
return new Dialect(dialect, flags, disabled);
|
|
1455
|
-
}
|
|
1456
|
-
/**
|
|
1457
|
-
Used by the output of the parser generator. Not available to
|
|
1458
|
-
user code. @hide
|
|
1459
|
-
*/
|
|
1460
|
-
static deserialize(spec) {
|
|
1461
|
-
return new LRParser(spec);
|
|
1462
|
-
}
|
|
1463
|
-
};
|
|
1464
|
-
function pair(data, off) {
|
|
1465
|
-
return data[off] | data[off + 1] << 16;
|
|
1466
|
-
}
|
|
1467
|
-
function findFinished(stacks) {
|
|
1468
|
-
let best = null;
|
|
1469
|
-
for (let stack of stacks) {
|
|
1470
|
-
let stopped = stack.p.stoppedAt;
|
|
1471
|
-
if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) && stack.p.parser.stateFlag(stack.state, 2) && (!best || best.score < stack.score)) best = stack;
|
|
1472
|
-
}
|
|
1473
|
-
return best;
|
|
1474
|
-
}
|
|
1475
|
-
function getSpecializer(spec) {
|
|
1476
|
-
if (spec.external) {
|
|
1477
|
-
let mask = spec.extend ? 1 : 0;
|
|
1478
|
-
return (value, stack) => spec.external(value, stack) << 1 | mask;
|
|
1479
|
-
}
|
|
1480
|
-
return spec.get;
|
|
1481
|
-
}
|
|
1482
|
-
//#endregion
|
|
1483
|
-
//#region ../../node_modules/.pnpm/@lezer+css@1.3.4/node_modules/@lezer/css/dist/index.js
|
|
1484
|
-
var descendantOp = 145, Unit = 1, identifier$1 = 146, callee = 147, VariableName = 2, queryIdentifier = 148, queryVariableName = 3, QueryCallee = 4;
|
|
1485
|
-
var space = [
|
|
1486
|
-
9,
|
|
1487
|
-
10,
|
|
1488
|
-
11,
|
|
1489
|
-
12,
|
|
1490
|
-
13,
|
|
1491
|
-
32,
|
|
1492
|
-
133,
|
|
1493
|
-
160,
|
|
1494
|
-
5760,
|
|
1495
|
-
8192,
|
|
1496
|
-
8193,
|
|
1497
|
-
8194,
|
|
1498
|
-
8195,
|
|
1499
|
-
8196,
|
|
1500
|
-
8197,
|
|
1501
|
-
8198,
|
|
1502
|
-
8199,
|
|
1503
|
-
8200,
|
|
1504
|
-
8201,
|
|
1505
|
-
8202,
|
|
1506
|
-
8232,
|
|
1507
|
-
8233,
|
|
1508
|
-
8239,
|
|
1509
|
-
8287,
|
|
1510
|
-
12288
|
|
1511
|
-
];
|
|
1512
|
-
var colon = 58, parenL = 40, underscore = 95, bracketL = 91, dash = 45, period = 46, hash = 35, percent = 37, ampersand = 38, backslash = 92, newline = 10, asterisk = 42;
|
|
1513
|
-
function isAlpha(ch) {
|
|
1514
|
-
return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 161;
|
|
1515
|
-
}
|
|
1516
|
-
function isDigit(ch) {
|
|
1517
|
-
return ch >= 48 && ch <= 57;
|
|
1518
|
-
}
|
|
1519
|
-
function isHex(ch) {
|
|
1520
|
-
return isDigit(ch) || ch >= 97 && ch <= 102 || ch >= 65 && ch <= 70;
|
|
1521
|
-
}
|
|
1522
|
-
var identifierTokens = (id, varName, callee) => (input, stack) => {
|
|
1523
|
-
for (let inside = false, dashes = 0, i = 0;; i++) {
|
|
1524
|
-
let { next } = input;
|
|
1525
|
-
if (isAlpha(next) || next == dash || next == underscore || inside && isDigit(next)) {
|
|
1526
|
-
if (!inside && (next != dash || i > 0)) inside = true;
|
|
1527
|
-
if (dashes === i && next == dash) dashes++;
|
|
1528
|
-
input.advance();
|
|
1529
|
-
} else if (next == backslash && input.peek(1) != newline) {
|
|
1530
|
-
input.advance();
|
|
1531
|
-
if (isHex(input.next)) {
|
|
1532
|
-
do
|
|
1533
|
-
input.advance();
|
|
1534
|
-
while (isHex(input.next));
|
|
1535
|
-
if (input.next == 32) input.advance();
|
|
1536
|
-
} else if (input.next > -1) input.advance();
|
|
1537
|
-
inside = true;
|
|
1538
|
-
} else {
|
|
1539
|
-
if (inside) input.acceptToken(dashes == 2 && stack.canShift(VariableName) ? varName : next == parenL ? callee : id);
|
|
1540
|
-
break;
|
|
1541
|
-
}
|
|
1542
|
-
}
|
|
1543
|
-
};
|
|
1544
|
-
var identifiers = new ExternalTokenizer(identifierTokens(identifier$1, VariableName, callee), { contextual: true });
|
|
1545
|
-
var queryIdentifiers = new ExternalTokenizer(identifierTokens(queryIdentifier, queryVariableName, QueryCallee), { contextual: true });
|
|
1546
|
-
var descendant = new ExternalTokenizer((input) => {
|
|
1547
|
-
if (space.includes(input.peek(-1))) {
|
|
1548
|
-
let { next } = input;
|
|
1549
|
-
if (isAlpha(next) || next == underscore || next == hash || next == period || next == asterisk || next == bracketL || next == colon && isAlpha(input.peek(1)) || next == dash || next == ampersand) input.acceptToken(descendantOp);
|
|
1550
|
-
}
|
|
1551
|
-
});
|
|
1552
|
-
var unitToken = new ExternalTokenizer((input) => {
|
|
1553
|
-
if (!space.includes(input.peek(-1))) {
|
|
1554
|
-
let { next } = input;
|
|
1555
|
-
if (next == percent) {
|
|
1556
|
-
input.advance();
|
|
1557
|
-
input.acceptToken(Unit);
|
|
1558
|
-
}
|
|
1559
|
-
if (isAlpha(next)) {
|
|
1560
|
-
do
|
|
1561
|
-
input.advance();
|
|
1562
|
-
while (isAlpha(input.next) || isDigit(input.next));
|
|
1563
|
-
input.acceptToken(Unit);
|
|
1564
|
-
}
|
|
1565
|
-
}
|
|
1566
|
-
});
|
|
1567
|
-
var cssHighlighting = styleTags({
|
|
1568
|
-
"AtKeyword import charset namespace keyframes media supports font-feature-values": tags$1.definitionKeyword,
|
|
1569
|
-
"from to selector scope MatchFlag": tags$1.keyword,
|
|
1570
|
-
NamespaceName: tags$1.namespace,
|
|
1571
|
-
KeyframeName: tags$1.labelName,
|
|
1572
|
-
KeyframeRangeName: tags$1.operatorKeyword,
|
|
1573
|
-
TagName: tags$1.tagName,
|
|
1574
|
-
ClassName: tags$1.className,
|
|
1575
|
-
PseudoClassName: tags$1.constant(tags$1.className),
|
|
1576
|
-
IdName: tags$1.labelName,
|
|
1577
|
-
"FeatureName PropertyName": tags$1.propertyName,
|
|
1578
|
-
AttributeName: tags$1.attributeName,
|
|
1579
|
-
NumberLiteral: tags$1.number,
|
|
1580
|
-
KeywordQuery: tags$1.keyword,
|
|
1581
|
-
UnaryQueryOp: tags$1.operatorKeyword,
|
|
1582
|
-
"CallTag ValueName FontName": tags$1.atom,
|
|
1583
|
-
VariableName: tags$1.variableName,
|
|
1584
|
-
Callee: tags$1.operatorKeyword,
|
|
1585
|
-
Unit: tags$1.unit,
|
|
1586
|
-
"UniversalSelector NestingSelector": tags$1.definitionOperator,
|
|
1587
|
-
"MatchOp CompareOp": tags$1.compareOperator,
|
|
1588
|
-
"ChildOp SiblingOp, LogicOp": tags$1.logicOperator,
|
|
1589
|
-
BinOp: tags$1.arithmeticOperator,
|
|
1590
|
-
Important: tags$1.modifier,
|
|
1591
|
-
Comment: tags$1.blockComment,
|
|
1592
|
-
ColorLiteral: tags$1.color,
|
|
1593
|
-
"ParenthesizedContent StringLiteral": tags$1.string,
|
|
1594
|
-
":": tags$1.punctuation,
|
|
1595
|
-
"PseudoOp #": tags$1.derefOperator,
|
|
1596
|
-
"; , |": tags$1.separator,
|
|
1597
|
-
"( )": tags$1.paren,
|
|
1598
|
-
"[ ]": tags$1.squareBracket,
|
|
1599
|
-
"{ }": tags$1.brace
|
|
1600
|
-
});
|
|
1601
|
-
var spec_callee = {
|
|
1602
|
-
__proto__: null,
|
|
1603
|
-
lang: 44,
|
|
1604
|
-
"nth-child": 44,
|
|
1605
|
-
"nth-last-child": 44,
|
|
1606
|
-
"nth-of-type": 44,
|
|
1607
|
-
"nth-last-of-type": 44,
|
|
1608
|
-
dir: 44,
|
|
1609
|
-
"host-context": 44,
|
|
1610
|
-
if: 90,
|
|
1611
|
-
url: 152,
|
|
1612
|
-
"url-prefix": 152,
|
|
1613
|
-
domain: 152,
|
|
1614
|
-
regexp: 152
|
|
1615
|
-
};
|
|
1616
|
-
var spec_queryIdentifier = {
|
|
1617
|
-
__proto__: null,
|
|
1618
|
-
or: 104,
|
|
1619
|
-
and: 104,
|
|
1620
|
-
not: 112,
|
|
1621
|
-
only: 112,
|
|
1622
|
-
layer: 206
|
|
1623
|
-
};
|
|
1624
|
-
var spec_QueryCallee = {
|
|
1625
|
-
__proto__: null,
|
|
1626
|
-
selector: 118,
|
|
1627
|
-
style: 124,
|
|
1628
|
-
layer: 202
|
|
1629
|
-
};
|
|
1630
|
-
var spec_AtKeyword = {
|
|
1631
|
-
__proto__: null,
|
|
1632
|
-
"@import": 198,
|
|
1633
|
-
"@media": 210,
|
|
1634
|
-
"@charset": 214,
|
|
1635
|
-
"@namespace": 218,
|
|
1636
|
-
"@keyframes": 224,
|
|
1637
|
-
"@supports": 236,
|
|
1638
|
-
"@scope": 240,
|
|
1639
|
-
"@font-feature-values": 246
|
|
1640
|
-
};
|
|
1641
|
-
var spec_identifier = {
|
|
1642
|
-
__proto__: null,
|
|
1643
|
-
to: 243
|
|
1644
|
-
};
|
|
1645
|
-
var parser = LRParser.deserialize({
|
|
1646
|
-
version: 14,
|
|
1647
|
-
states: "MlQYQdOOO#}QdOOP$UO`OOO%OQaO'#CfOOQP'#Ce'#CeO%VQdO'#CgO%[Q`O'#CgO%aQaO'#FnO&XQdO'#CkO&xQaO'#CcO'SQdO'#CnO'_QdO'#EOO'dQdO'#EQO'oQdO'#EXO'oQdO'#E[OOQP'#Fn'#FnO)RQhO'#E}OOQS'#Fm'#FmOOQS'#FQ'#FQQYQdOOO)YQdO'#EbO*iQhO'#EhO)YQdO'#EjO*pQdO'#ElO*{QdO'#EoO)}QhO'#EuO+TQdO'#EwO+`QdO'#EzO+eQaO'#CfO+lQ`O'#E_O+qQ`O'#F{O+|QdO'#F{QOQ`OOP,WO&jO'#CaPOOO)CA])CA]OOQP'#Ci'#CiOOQP,59R,59RO%VQdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&XQdO,59VO,cQdO,59YO'_QdO,5:jO'dQdO,5:lO'oQdO,5:sO'oQdO,5:uO'oQdO,5:vO'oQdO'#FXO,nQ`O,58}O,vQdO'#E^OOQS,58},58}OOQP'#Cq'#CqOOQO'#D|'#D|OOQP,59Y,59YO,}Q`O,59YO-SQ`O,59YOOQP'#EP'#EPOOQP,5:j,5:jO-XQpO'#ERO-dQdO'#ESO-iQ`O'#ESO-nQpO,5:lO.XQaO,5:sO.oQaO,5:vOOQW'#D^'#D^O/nQhO'#DgO0RQhO,5;iO)}QhO'#DeO0`Q`O'#DnO0eQhO'#DxOOQW'#Ft'#FtOOQS,5;i,5;iO0jQ`O'#DhO0oQ`O'#DkOOQS-E9O-E9OOOQ['#Cv'#CvO0tQdO'#CwO1[QdO'#C}O1rQdO'#DQO2YQ!pO'#DSO4fQ!jO,5:|OOQO'#DX'#DXO-SQ`O'#DWO4vQ!nO'#FqO6|Q`O'#DYO7RQ`O'#DyOOQ['#Fq'#FqO7WQhO'#GOO7fQ`O,5;SO7kQ!bO,5;UOOQS'#En'#EnO7sQ`O,5;WO7xQdO,5;WOOQO'#Eq'#EqO8QQ`O,5;ZO8VQhO,5;aO'oQdO'#DjOOQS,5;c,5;cO0jQ`O,5;cO8_QdO,5;cOOQS'#F`'#F`O8gQdO'#E|O7fQ`O,5;fO8oQdO,5:yO9PQdO'#FZO9^Q`O,5<gO9^Q`O,5<gPOOO'#FP'#FPP9iO&jO,58{POOO,58{,58{OOQP1G.m1G.mOOQP1G.q1G.qOOQP1G.t1G.tO,}Q`O1G.tO-SQ`O1G.tOOQP1G0U1G0UO9tQpO1G0WO9|QaO1G0_O:dQaO1G0aO:zQaO1G0bO;bQaO,5;sOOQO-E9V-E9VOOQS1G.i1G.iO;lQ`O,5:xO;qQdO'#D}O;xQdO'#CuOOQO'#EU'#EUOOQO,5:n,5:nO-dQdO,5:nOOQP1G0W1G0WO)YQdO1G0WO<PQ!jO'#D^O<_Q!bO,59yO<gQhO,5:ROOQO'#Fu'#FuO<bQ!bO,59}O<oQhO'#FaO)}QhO,59{O)}QhO'#FaO=gQhO1G1TOOQS1G1T1G1TO=qQhO,5:PO>lQhO'#DoOOQW,5:Y,5:YOOQW,5:d,5:dOOQW,5:S,5:SO>vQhO,5:VO?bQ!fO'#FrOOQS'#Fr'#FrOOQS'#FS'#FSO@rQdO,59cOOQ[,59c,59cOAYQdO,59iOOQ[,59i,59iOApQdO,59lOOQ[,59l,59lOOQ[,59n,59nO)YQdO,59pOBWQhO'#EdOOQW'#Ed'#EdOBuQ`O1G0hO4oQhO1G0hOOQ[,59r,59rO)}QhO'#D[OOQ[,59t,59tOBzQ#tO,5:eOCVQhO'#F]OCdQ`O,5<jOOQS1G0n1G0nOOQS1G0p1G0pOOQS1G0r1G0rOCoQ`O1G0rOCtQdO'#ErOOQS1G0u1G0uOOQS1G0{1G0{ODPQaO,5:UO7fQ`O1G0}OOQS1G0}1G0}O0jQ`O1G0}OOQS-E9^-E9^OOQS1G1Q1G1QODWQ!fO1G0eODnQ`O'#EaOOQO1G0e1G0eOOQO,5;u,5;uODsQdO,5;uOOQO-E9X-E9XOEQQ`O1G2RPOOO-E8}-E8}POOO1G.g1G.gOOQP7+$`7+$`OOQP7+%r7+%rO)YQdO7+%rOOQS1G0d1G0dOE]QaO'#FzOEgQ`O,5:iOElQ!fO'#FROFjQdO'#FpOFtQ`O,59aOOQO1G0Y1G0YOFyQ!bO7+%rO)YQdO1G/eOGUQhO1G/iOOQW1G/m1G/mOOQW1G/g1G/gOGgQhO,5;{OOQW-E9_-E9_OOQS7+&o7+&oOH_QhO'#D^OHmQhO'#FxOHxQ`O'#FxOH}Q`O,5:ZOISQ!bO'#D`O>vQhO'#DmOI_QhO'#DqOIgQhO'#DsOIlQhO'#FwOOQO'#Fw'#FwOItQ!bO'#DwOOQO'#Fy'#FyOOQO'#Fv'#FvOIyQ`O1G/qOOQS-E9Q-E9QOOQ[1G.}1G.}OOQ[1G/T1G/TOOQ[1G/W1G/WOOQ[1G/[1G/[OJOQdO,5;OOOQS7+&S7+&SOJTQ`O7+&SOJYQhO'#D]OJbQ`O,59vO)}QhO,59vOOQ[1G0P1G0POJjQ`O1G0POJoQhO,5;wOOQO-E9Z-E9ZOOQS7+&^7+&^OJ}QbO'#DSOOQO'#Et'#EtOK]Q`O'#EsOOQO'#Es'#EsOKhQ`O'#F^OKpQdO,5;^OOQS,5;^,5;^OOQ[1G/p1G/pOOQS7+&i7+&iO7fQ`O7+&iOK{Q!fO'#FYO)YQdO'#FYOMSQdO7+&POOQO7+&P7+&POOQO,5:{,5:{OOQO1G1a1G1aOMgQ!bO<<I^OMrQdO'#FWOM|Q`O,5<fOOQP1G0T1G0TOOQS-E9P-E9PONUQdO'#FVON`Q`O,5<[OOQ]1G.{1G.{OOQP<<I^<<I^ONhQ`O<<I^ONmQdO7+%POOQO'#D`'#D`ONtQ!bO7+%TON|QhO'#FUO! ZQ`O,5<dO)YQdO,5<dOOQW1G/u1G/uO)YQdO,5:bO! cQ`O,5:XO>vQhO'#DrOOQO,5:],5:]O! hQhO,5:_OGUQhO,5:cOOQW7+%]7+%]OOQO'#Ef'#EfO! pQ`O1G0jOOQS<<In<<InO)YQdO,59wO!!dQhO1G/bOOQ[1G/b1G/bO!!kQ`O1G/bOOQW-E9R-E9ROOQ[7+%k7+%kOOQO,5;_,5;_OCwQdO'#F_OKhQ`O,5;xOOQS,5;x,5;xOOQS-E9[-E9[OOQS1G0x1G0xOOQS<<JT<<JTO!!sQ!fO,5;tOOQS-E9W-E9WOOQO<<Ik<<IkOOQPAN>xAN>xO!#zQ`OAN>xO!$PQaO,5;rOOQO-E9U-E9UO!$ZQdO,5;qOOQO-E9T-E9TOOQW<<Hk<<HkOOQW<<Ho<<HoO!$eQhO<<HoO!$vQhO,5;pO!%RQ`O,5;pOOQO-E9S-E9SO!%WQdO1G2OO!%bQdO1G/|O!%iQhO1G/sO!%qQ`O,5:^O>vQhO'#DuOOQO1G/y1G/yO!%vQ!bO1G/}OJOQdO'#F[O!&OQ`O7+&UOOQW7+&U7+&UO!&WQ!bO1G/cOOQ[7+$|7+$|O!&cQhO7+$|P!&jQ`O'#FTOOQO,5;y,5;yOOQO-E9]-E9]OOQS1G1d1G1dOOQPG24dG24dO!&oQ`OAN>ZO)YQdO1G1[O!&tQ`O7+'jOOQO1G/x1G/xO!&|Q`O,5:aO!$eQhO7+%iOOQO,5;v,5;vOOQO-E9Y-E9YOOQW<<Ip<<IpOOQ[<<Hh<<HhPOQW,5;o,5;oOOQWG23uG23uO!'RQdO7+&vOOQO1G/{1G/{OOQO<<IT<<IT",
|
|
1648
|
-
stateData: "!'f~O$[OS$]QQ~OWVO^_O`WOcYOdYOl`OmZOp[O!|]O#P^O#VdO#]eO#_fO#agO#dhO#jiO#ljO#okO$WRO$cTO~OQmOWVO^_O`WOcYOdYOl`OmZOp[O!|]O#P^O#VdO#]eO#_fO#agO#dhO#jiO#ljO#okO$WlO$cTO~O$U$oP~P!jO$]qO~O`YXcYXdYXmYXpYXsYX!dYX!|YX#PYX$VYX$c[X~OgYX~P$ZO$WsO~O$cuO~O$cuO`$bXc$bXd$bXm$bXp$bXs$bX!d$bX!|$bX#P$bX$V$bXg$bX~O$WvO~O`xOcyOdyOmzOp{O!||O#P!OO$V}O~Os!RO!d!PO~P&^Of!XO$W!TO$X!UO~O$W!YO~OW!^O$W![O$c!]O~OWVO^_O`WOcYOdYOmZOp[O!|]O#P^O$WRO$cTO~OS!fOc!gOd!gOh!cOs!RO!Y!eO!]!jO!`!kO$Y!bO~On!iO~P(dOQ!uOh!nOp!oOs!pOu!xOw!xO}!vO!n!wO$W!mO$X!sO$g!qO~OS!fOc!gOd!gOh!cO!Y!eO!]!jO!`!kO$Y!bO~Os$rP~P)}Ow!}O!n!wO$W!|O~Ow#PO$W#PO~Oh#SOs!RO#m#UO~O$W#WO~Oc#SX~P$ZOc#ZO~On#[O$U$oXr$oX~O$U$oXr$oX~P!jO$^#_O$_#_O$`#aO~Of#fO$W!TO$X!UO~Os!RO!d!PO~Or$oP~P!jOh#pO~Oh#qO~Oo!uX!y!uX$c!wX~O$W#rO~O$c#tO~Oo#uO!y#vO~O`xOcyOdyOmzOp{O~Os!{a!d!{a!|!{a#P!{a$V!{ag!{a~P-vOs#Oa!d#Oa!|#Oa#P#Oa$V#Oag#Oa~P-vOS!fOc!gOd!gOh!cO!Y!eO!]!jO!`!kO~OR#zOu#zOw#zO$Y#wO$g!qO~P/VOn$QO!U#}O!d$OO~P(dOh$SO~O$Y$UO~Oh#SO~Oh$WO~O`$YOc$YOg$]Ol$YOm$YOn$YO~P)YO`$YOc$YOl$YOm$YOn$YOo$_O~P)YO`$YOc$YOl$YOm$YOn$YOr$aO~P)YOP$bOSvXcvXdvXhvXnvXyvX!YvX!]vX!`vX#XvX#ZvX$YvX!WvXQvX`vXgvXlvXmvXpvXsvXuvXwvX}vX!nvX$WvX$XvX$gvXovXrvX!dvX$UvX$qvX!zvX~Oy$cO#X$dO#Z$eOn$rP~P)}Oh#qOS$eXc$eXd$eXn$eXy$eX!Y$eX!]$eX!`$eX#X$eX#Z$eX$Y$eXQ$eX`$eXg$eXl$eXm$eXp$eXs$eXu$eXw$eX}$eX!n$eX$W$eX$X$eX$g$eXo$eXr$eX!d$eX$U$eX$q$eX!z$eX~Oh$iO~Oh$kO~O!U#}O!d$lOs$rXn$rX~Os!RO~On$oOy$cO~On$pO~Ow$qO!n!wO~Os$rO~Os!RO!U#}O~Os!RO#m$xO~O$W#WOs#pX~O$q$|On#Ra$U#Rar#Ra~P)YOn#}X$U#}Xr#}X~P!jOn#[O$U$oar$oa~O$^#_O$_#_O$`%TO~Oo%VO!y%WO~Os!{i!d!{i!|!{i#P!{i$V!{ig!{i~P-vOs!}i!d!}i!|!}i#P!}i$V!}ig!}i~P-vOs#Oi!d#Oi!|#Oi#P#Oi$V#Oig#Oi~P-vOs#{a!d#{a~P&^Or%XO~Og$nP~P'oOg$dP~P)YOc!SXg!QX!U!QX!W!SX~Oc%aO!W%bO~Og%cO!U#}O~O!U#}OS$TXc$TXd$TXh$TXn$TXs$TX!Y$TX!]$TX!`$TX!d$TX$Y$TX~On%gO!d$OO~P(dO!U#}OS!Xac!Xad!Xah!Xan!Xas!Xa!Y!Xa!]!Xa!`!Xa!d!Xa$Y!Xag!Xa~O$Y%hOg$lP~P/VOR#zOS!fOh%mOu#zOw#zO!Y%nO$Y%lO$g!qO~Oy$cOQ$fX`$fXc$fXg$fXh$fXl$fXm$fXn$fXp$fXs$fXu$fXw$fX}$fX!n$fX$W$fX$X$fX$g$fXo$fXr$fX~O`$YOc$YOg%wOl$YOm$YOn$YO~P)YO`$YOc$YOl$YOm$YOn$YOo%xO~P)YO`$YOc$YOl$YOm$YOn$YOr%yO~P)YOh%{OS#WXc#WXd#WXn#WX!Y#WX!]#WX!`#WX$Y#WX~On%|O~Og&ROw&SO!o&SO~Os$PX!d$PXn$PX~P)}O!d$lOs$ran$ra~On&VO~Or&^O$W&XO$g&WO~Og&_O~P&^Oy$cO!d&cO$q$|On#Ri$U#Rir#Ri~P)YO$p&fO~On#}a$U#}ar#}a~P!jOn#[O$U$oir$oi~O!d&iOg$nX~P&^Og&kO~Oy$cOQ#uXg#uXh#uXp#uXs#uXu#uXw#uX}#uX!d#uX!n#uX$W#uX$X#uX$g#uX~O!d&mOg$dX~P)YOg&oO~Oo&pOy$cO!z&qO~OR#zOu#zOw#zO$Y&sO$g!qO~O!U#}OS$Tac$Tad$Tah$Tan$Tas$Ta!Y$Ta!]$Ta!`$Ta!d$Ta$Y$Ta~Oc!SXg!QX!U!QX!d!QX~O!U#}O!d&uOg$lX~Oc&wO~Og&xO~Oc&yOg!jX!W!SX~OS!fOh&{O~O!U&}O~O!U&}Og$kX~O!W'OO~Og'PO~O$W'QO~On'SO~Oc'TO!U#}O~Og'VOn'UO~Og'YO~O!U#}Os$Pa!d$Pan$Pa~OP$bOsvX!dvXgvX~O$g&WOs#gX!d#gX~Os!RO!d'[O~Or'`O$W&XO$g&WO~Oy$cOQ#|Xh#|Xn#|Xp#|Xs#|Xu#|Xw#|X}#|X!d#|X!n#|X$U#|X$W#|X$X#|X$g#|X$q#|Xr#|X~O!d&cO$q$|On#Rq$U#Rqr#Rq~P)YOo'eOy$cO!z'fO~Og#zX!d#zX~P'oO!d&iOg$na~Og#yX!d#yX~P)YO!d&mOg$da~Oo'eO~Og'kO~P)YOg'lO!W'mO~O$Y%hOg#xX!d#xX~P/VO!d&uOg$la~Og'sO~OS!fOh'uO~O`'xOg'zO~OS#wac#wad#wah#wa!Y#wa!]#wa!`#wa$Y#wa~Og'|O~P! xOg'|On'}O~Oy$cOQ#|ah#|an#|ap#|as#|au#|aw#|a}#|a!d#|a!n#|a$U#|a$W#|a$X#|a$g#|a$q#|ar#|a~Oo(SO~Og#za!d#za~P&^Og#ya!d#ya~P)YOR#zOu#zOw#zO$Y&sO$g&WO~O!U#}Og#xa!d#xa~Oc(UO~O!d&uOg$li~P)YOg!ji~P)YOg!ai!U!hi~Og(WO~O!W(YOg!ki~O`'xOg(]O~Oy$cOg!Pin!Pi~Og(^O~P! xOn(_O~Og(`O~O!d&uOg$lq~Og(bO~Og#xq!d#xq~P)YO$[!o$]$g`$gy#P~",
|
|
1649
|
-
goto: "7[$sPPPPP$tP$wP%Q%d%Q%v&YP%QP&`%QPP&fPPP&l&v&vPPPPP&vPP&vP'fP&vP&v(i&vP)X)[)b)b)t)bP)bP)bP)b)bP*a)bP*m*s+cP*m+f*m+i+`+o+o)b+uPP,k,q%Q,w%Q,},}-T-XPP%QP%Q%QP-_.Z.h.o$wP.xP.{P$wP$wP$wP/R$wP/U/X/[/c$wP$wPP$wP/h$wP/k/q0Q0l0z1Q1[1b1h1n1t2O2U2[2b2h2nPPPPPPPPPPP2t2}P3s3v4zP5S5|6c6o6u6o6x6{PP7RRrQ_aOPco!R#[%Pq_OP]^co|}!O!P!R#S#[#p%P&iqSOP]^co|}!O!P!R#S#[#p%P&iqUOP]^co|}!O!P!R#S#[#p%P&iQtTR#buQwWR#cxQ!VYR#dyQ#d!XS$h!t!uR%U#f!Z!xdf!n!o!p#Z#q#v$[$^$`$c${%W%]%a&c&d&m&r&w&y'T'i'q'r(U(a!Y!xdf!n!o!p#Z#q#v$[$^$`$c${%W%]%a&c&d&m&r&w&y'T'i'q'r(U(ab#z!c$W%b%m&{'O'm'u(YU&Z$r&]'[R'Z&Y!Z!tdf!n!o!p#Z#q#v$[$^$`$c${%W%]%a&c&d&m&r&w&y'T'i'q'r(U(aR$j!vQ&P$iR'W&Qq!h`ei!c!d!e!r#}$O$P$S$g$i$l&Q&uQ#x!cQ%j$SW%r$W%m&{'uQ&t%bQ'o&uQ'w'OQ(T'mR(c(YQ#VjQ$V!jQ$v#UR&a$xX%q$W%m&{'up!h`ei!c!d!e!r#}$O$P$S$g$i$l&Q&uW%p$W%m&{'uQ&|%nR'v&}R$T!fR&|%nX%o$W%m&{'uX%s$W%m&{'u!Y!xdf!n!o!p#Z#q#v$[$^$`$c${%W%]%a&c&d&m&r&w&y'T'i'q'r(U(aQ!}gR$q#OQ!WYR#eyQ#d!WR%U#eQ!ZZR#gzQ!_[R#h{T!^[{Q#s!]R%_#tQ!SXQ!i`Q#TjQ#n!QQ$Q!dQ$n!zQ$t#RQ$w#VQ$z#YQ%g$PQ&`$vQ'^&[Q'a&aR(R']SnP!RQ#^oQ%O#[R&g%PZmPo!R#[%PQ$}#ZQ&e${R'd&dR$g!rQ'R%{R(Z'xR#OgR#QhR$s#QS&[$r&]R(P'[V&Y$r&]'[R#YkQ#`qR%S#`QcOSoP!RU!lco%PR%P#[Q%]#q[&l%]&r'i'q'r(aQ&r%aQ'i&mQ'q&wQ'r&yR(a(UQ$[!nQ$^!oQ$`!pV%v$[$^$`Q&Q$iR'X&QQ&v%iS'p&v(VR(V'qQ&n%]R'j&nQ&j%YR'h&jQ!QXR#m!QQ&d${R'c&dQ#]nS%Q#]%RR%R#^Q'y'RR(['yQ$m!yR&U$mQ&]$rR'_&]Q']&[R(Q']Q#XkR$y#XQ$P!dR%f$P_bOPco!R#[%P^XOPco!R#[%PQ!`]Q!a^Q#i|Q#j}Q#k!OQ#l!PQ$u#SQ%Y#pR'g&iR%^#qQ!rdQ!{f[$X!n!o!p$[$^$`Q${#Zh%[#q%]%a&m&r&w&y'i'q'r(U(aQ%`#vQ%z$cS&b${&dQ&h%WQ'b&cR'{'T]$Z!n!o!p$[$^$`Q!d`U!ye!r$gQ#RiQ#y!cS#|!d$PQ$R!eQ%d#}Q%e$OQ%i$SS&O$i&QQ&T$lR'n&uQ#{!cW%r$W%m&{'uQ&t%bQ'w'OQ(T'mR(c(YQ%u$WQ&z%mQ't&{R(X'uX%t$W%m&{'uR%k$SR%Z#pQpPR#o!RQ!zeQ$f!rR%}$g",
|
|
1650
|
-
nodeNames: "⚠ Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NamespacedTagSelector NamespaceName TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector StyleQuery style ParenthesedQuery CallQuery ArgList , UnaryQuery ParenthesedQuery BinaryQuery ParenthesedQuery ParenthesedQuery StyleFeature StyleRange PseudoQuery CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName NamespacedAttribute NamespaceName AttributeName MatchOp MatchFlag ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to FontFeatureStatement font-feature-values FontName AtRule Styles",
|
|
1651
|
-
maxTerm: 172,
|
|
1652
|
-
nodeProps: [
|
|
1653
|
-
[
|
|
1654
|
-
"isolate",
|
|
1655
|
-
-2,
|
|
1656
|
-
5,
|
|
1657
|
-
39,
|
|
1658
|
-
""
|
|
1659
|
-
],
|
|
1660
|
-
[
|
|
1661
|
-
"openedBy",
|
|
1662
|
-
23,
|
|
1663
|
-
"(",
|
|
1664
|
-
31,
|
|
1665
|
-
"[",
|
|
1666
|
-
34,
|
|
1667
|
-
"{"
|
|
1668
|
-
],
|
|
1669
|
-
[
|
|
1670
|
-
"closedBy",
|
|
1671
|
-
24,
|
|
1672
|
-
")",
|
|
1673
|
-
32,
|
|
1674
|
-
"]",
|
|
1675
|
-
35,
|
|
1676
|
-
"}"
|
|
1677
|
-
]
|
|
1678
|
-
],
|
|
1679
|
-
propSources: [cssHighlighting],
|
|
1680
|
-
skippedNodes: [
|
|
1681
|
-
0,
|
|
1682
|
-
5,
|
|
1683
|
-
127
|
|
1684
|
-
],
|
|
1685
|
-
repeatNodeCount: 17,
|
|
1686
|
-
tokenData: "K`~R!bOX%ZX^&R^p%Zpq&Rqr)ers)vst+jtu2Xuv%Zvw3Rwx3dxy5Ryz5dz{5i{|6S|}:u}!O;W!O!P;u!P!Q<^!Q![=V![!]>Q!]!^>|!^!_?_!_!`@Z!`!a@n!a!b%Z!b!cAo!c!k%Z!k!lC|!l!u%Z!u!vC|!v!}%Z!}#OD_#O#P%Z#P#QDp#Q#R2X#R#]%Z#]#^ER#^#g%Z#g#hC|#h#o%Z#o#pIf#p#qIw#q#rJ`#r#sJq#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`KY<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!o`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$[~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$[~!o`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$qYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOw~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+oYmYOy%jz!Q%j!Q![,_![!c%j!c!i,_!i#T%j#T#Z,_#Z;'S%j;'S;=`%{<%lO%jj,dY!o`Oy%jz!Q%j!Q![-S![!c%j!c!i-S!i#T%j#T#Z-S#Z;'S%j;'S;=`%{<%lO%jj-XY!o`Oy%jz!Q%j!Q![-w![!c%j!c!i-w!i#T%j#T#Z-w#Z;'S%j;'S;=`%{<%lO%jj.OYuY!o`Oy%jz!Q%j!Q![.n![!c%j!c!i.n!i#T%j#T#Z.n#Z;'S%j;'S;=`%{<%lO%jj.uYuY!o`Oy%jz!Q%j!Q![/e![!c%j!c!i/e!i#T%j#T#Z/e#Z;'S%j;'S;=`%{<%lO%jj/jY!o`Oy%jz!Q%j!Q![0Y![!c%j!c!i0Y!i#T%j#T#Z0Y#Z;'S%j;'S;=`%{<%lO%jj0aYuY!o`Oy%jz!Q%j!Q![1P![!c%j!c!i1P!i#T%j#T#Z1P#Z;'S%j;'S;=`%{<%lO%jj1UY!o`Oy%jz!Q%j!Q![1t![!c%j!c!i1t!i#T%j#T#Z1t#Z;'S%j;'S;=`%{<%lO%jj1{SuY!o`Oy%jz;'S%j;'S;=`%{<%lO%jd2[UOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jd2uS!yS!o`Oy%jz;'S%j;'S;=`%{<%lO%jb3WS^QOy%jz;'S%j;'S;=`%{<%lO%j~3gWOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{<%lO3d~4SRO;'S3d;'S;=`4];=`O3d~4`XOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{;=`<%l3d<%lO3d~5OP;=`<%l3dj5WShYOy%jz;'S%j;'S;=`%{<%lO%j~5iOg~n5pUWQyWOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jj6ZWyW#PQOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj6xU!o`Oy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%jj7cY!o`$gYOy%jz!Q%j!Q![7[![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj8WY!o`Oy%jz{%j{|8v|}%j}!O8v!O!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj8{U!o`Oy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj9fU!o`$gYOy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj:P[!o`$gYOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj:zS!dYOy%jz;'S%j;'S;=`%{<%lO%jj;]WyWOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj;zU`YOy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%j~<cTyWOy%jz{<r{;'S%j;'S;=`%{<%lO%j~<yS!o`$]~Oy%jz;'S%j;'S;=`%{<%lO%jj=[[$gYOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj>VUcYOy%jz![%j![!]>i!];'S%j;'S;=`%{<%lO%jj>pSdY!o`Oy%jz;'S%j;'S;=`%{<%lO%jj?RSnYOy%jz;'S%j;'S;=`%{<%lO%jh?dU!WWOy%jz!_%j!_!`?v!`;'S%j;'S;=`%{<%lO%jh?}S!WW!o`Oy%jz;'S%j;'S;=`%{<%lO%jl@bS!WW!ySOy%jz;'S%j;'S;=`%{<%lO%jj@uV!|Q!WWOy%jz!_%j!_!`?v!`!aA[!a;'S%j;'S;=`%{<%lO%jbAcS!|Q!o`Oy%jz;'S%j;'S;=`%{<%lO%jjArYOy%jz}%j}!OBb!O!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjBgW!o`Oy%jz!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjCW[lY!o`Oy%jz}%j}!OCP!O!Q%j!Q![CP![!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jhDRS!zWOy%jz;'S%j;'S;=`%{<%lO%jjDdSpYOy%jz;'S%j;'S;=`%{<%lO%jnDuSo^Oy%jz;'S%j;'S;=`%{<%lO%jjEWU!zWOy%jz#a%j#a#bEj#b;'S%j;'S;=`%{<%lO%jbEoU!o`Oy%jz#d%j#d#eFR#e;'S%j;'S;=`%{<%lO%jbFWU!o`Oy%jz#c%j#c#dFj#d;'S%j;'S;=`%{<%lO%jbFoU!o`Oy%jz#f%j#f#gGR#g;'S%j;'S;=`%{<%lO%jbGWU!o`Oy%jz#h%j#h#iGj#i;'S%j;'S;=`%{<%lO%jbGoU!o`Oy%jz#T%j#T#UHR#U;'S%j;'S;=`%{<%lO%jbHWU!o`Oy%jz#b%j#b#cHj#c;'S%j;'S;=`%{<%lO%jbHoU!o`Oy%jz#h%j#h#iIR#i;'S%j;'S;=`%{<%lO%jbIYS$pQ!o`Oy%jz;'S%j;'S;=`%{<%lO%jjIkSsYOy%jz;'S%j;'S;=`%{<%lO%jfI|U$cUOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jjJeSrYOy%jz;'S%j;'S;=`%{<%lO%jfJvU#PQOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%j`K]P;=`<%l%Z",
|
|
1687
|
-
tokenizers: [
|
|
1688
|
-
descendant,
|
|
1689
|
-
unitToken,
|
|
1690
|
-
identifiers,
|
|
1691
|
-
queryIdentifiers,
|
|
1692
|
-
1,
|
|
1693
|
-
2,
|
|
1694
|
-
3,
|
|
1695
|
-
4,
|
|
1696
|
-
new LocalTokenGroup("m~RRYZ[z{a~~g~aO$_~~dP!P!Qg~lO$`~~", 28, 152)
|
|
1697
|
-
],
|
|
1698
|
-
topRules: {
|
|
1699
|
-
"StyleSheet": [0, 6],
|
|
1700
|
-
"Styles": [1, 126]
|
|
1701
|
-
},
|
|
1702
|
-
dynamicPrecedences: { "94": 1 },
|
|
1703
|
-
specialized: [
|
|
1704
|
-
{
|
|
1705
|
-
term: 147,
|
|
1706
|
-
get: (value) => spec_callee[value] || -1
|
|
1707
|
-
},
|
|
1708
|
-
{
|
|
1709
|
-
term: 148,
|
|
1710
|
-
get: (value) => spec_queryIdentifier[value] || -1
|
|
1711
|
-
},
|
|
1712
|
-
{
|
|
1713
|
-
term: 4,
|
|
1714
|
-
get: (value) => spec_QueryCallee[value] || -1
|
|
1715
|
-
},
|
|
1716
|
-
{
|
|
1717
|
-
term: 28,
|
|
1718
|
-
get: (value) => spec_AtKeyword[value] || -1
|
|
1719
|
-
},
|
|
1720
|
-
{
|
|
1721
|
-
term: 146,
|
|
1722
|
-
get: (value) => spec_identifier[value] || -1
|
|
1723
|
-
}
|
|
1724
|
-
],
|
|
1725
|
-
tokenPrec: 2405
|
|
1726
|
-
});
|
|
1727
|
-
//#endregion
|
|
1728
|
-
//#region ../../node_modules/.pnpm/@codemirror+lang-css@6.3.1/node_modules/@codemirror/lang-css/dist/index.js
|
|
1729
|
-
var _properties = null;
|
|
1730
|
-
function properties() {
|
|
1731
|
-
if (!_properties && typeof document == "object" && document.body) {
|
|
1732
|
-
let { style } = document.body, names = [], seen = /* @__PURE__ */ new Set();
|
|
1733
|
-
for (let prop in style) if (prop != "cssText" && prop != "cssFloat") {
|
|
1734
|
-
if (typeof style[prop] == "string") {
|
|
1735
|
-
if (/[A-Z]/.test(prop)) prop = prop.replace(/[A-Z]/g, (ch) => "-" + ch.toLowerCase());
|
|
1736
|
-
if (!seen.has(prop)) {
|
|
1737
|
-
names.push(prop);
|
|
1738
|
-
seen.add(prop);
|
|
1739
|
-
}
|
|
1740
|
-
}
|
|
1741
|
-
}
|
|
1742
|
-
_properties = names.sort().map((name) => ({
|
|
1743
|
-
type: "property",
|
|
1744
|
-
label: name,
|
|
1745
|
-
apply: name + ": "
|
|
1746
|
-
}));
|
|
1747
|
-
}
|
|
1748
|
-
return _properties || [];
|
|
1749
|
-
}
|
|
1750
|
-
var pseudoClasses = /*@__PURE__*/ [
|
|
1751
|
-
"active",
|
|
1752
|
-
"after",
|
|
1753
|
-
"any-link",
|
|
1754
|
-
"autofill",
|
|
1755
|
-
"backdrop",
|
|
1756
|
-
"before",
|
|
1757
|
-
"checked",
|
|
1758
|
-
"cue",
|
|
1759
|
-
"default",
|
|
1760
|
-
"defined",
|
|
1761
|
-
"disabled",
|
|
1762
|
-
"empty",
|
|
1763
|
-
"enabled",
|
|
1764
|
-
"file-selector-button",
|
|
1765
|
-
"first",
|
|
1766
|
-
"first-child",
|
|
1767
|
-
"first-letter",
|
|
1768
|
-
"first-line",
|
|
1769
|
-
"first-of-type",
|
|
1770
|
-
"focus",
|
|
1771
|
-
"focus-visible",
|
|
1772
|
-
"focus-within",
|
|
1773
|
-
"fullscreen",
|
|
1774
|
-
"has",
|
|
1775
|
-
"host",
|
|
1776
|
-
"host-context",
|
|
1777
|
-
"hover",
|
|
1778
|
-
"in-range",
|
|
1779
|
-
"indeterminate",
|
|
1780
|
-
"invalid",
|
|
1781
|
-
"is",
|
|
1782
|
-
"lang",
|
|
1783
|
-
"last-child",
|
|
1784
|
-
"last-of-type",
|
|
1785
|
-
"left",
|
|
1786
|
-
"link",
|
|
1787
|
-
"marker",
|
|
1788
|
-
"modal",
|
|
1789
|
-
"not",
|
|
1790
|
-
"nth-child",
|
|
1791
|
-
"nth-last-child",
|
|
1792
|
-
"nth-last-of-type",
|
|
1793
|
-
"nth-of-type",
|
|
1794
|
-
"only-child",
|
|
1795
|
-
"only-of-type",
|
|
1796
|
-
"optional",
|
|
1797
|
-
"out-of-range",
|
|
1798
|
-
"part",
|
|
1799
|
-
"placeholder",
|
|
1800
|
-
"placeholder-shown",
|
|
1801
|
-
"read-only",
|
|
1802
|
-
"read-write",
|
|
1803
|
-
"required",
|
|
1804
|
-
"right",
|
|
1805
|
-
"root",
|
|
1806
|
-
"scope",
|
|
1807
|
-
"selection",
|
|
1808
|
-
"slotted",
|
|
1809
|
-
"target",
|
|
1810
|
-
"target-text",
|
|
1811
|
-
"valid",
|
|
1812
|
-
"visited",
|
|
1813
|
-
"where"
|
|
1814
|
-
].map((name) => ({
|
|
1815
|
-
type: "class",
|
|
1816
|
-
label: name
|
|
1817
|
-
}));
|
|
1818
|
-
var values = /*@__PURE__*/ [
|
|
1819
|
-
"above",
|
|
1820
|
-
"absolute",
|
|
1821
|
-
"activeborder",
|
|
1822
|
-
"additive",
|
|
1823
|
-
"activecaption",
|
|
1824
|
-
"after-white-space",
|
|
1825
|
-
"ahead",
|
|
1826
|
-
"alias",
|
|
1827
|
-
"all",
|
|
1828
|
-
"all-scroll",
|
|
1829
|
-
"alphabetic",
|
|
1830
|
-
"alternate",
|
|
1831
|
-
"always",
|
|
1832
|
-
"antialiased",
|
|
1833
|
-
"appworkspace",
|
|
1834
|
-
"asterisks",
|
|
1835
|
-
"attr",
|
|
1836
|
-
"auto",
|
|
1837
|
-
"auto-flow",
|
|
1838
|
-
"avoid",
|
|
1839
|
-
"avoid-column",
|
|
1840
|
-
"avoid-page",
|
|
1841
|
-
"avoid-region",
|
|
1842
|
-
"axis-pan",
|
|
1843
|
-
"background",
|
|
1844
|
-
"backwards",
|
|
1845
|
-
"baseline",
|
|
1846
|
-
"below",
|
|
1847
|
-
"bidi-override",
|
|
1848
|
-
"blink",
|
|
1849
|
-
"block",
|
|
1850
|
-
"block-axis",
|
|
1851
|
-
"bold",
|
|
1852
|
-
"bolder",
|
|
1853
|
-
"border",
|
|
1854
|
-
"border-box",
|
|
1855
|
-
"both",
|
|
1856
|
-
"bottom",
|
|
1857
|
-
"break",
|
|
1858
|
-
"break-all",
|
|
1859
|
-
"break-word",
|
|
1860
|
-
"bullets",
|
|
1861
|
-
"button",
|
|
1862
|
-
"button-bevel",
|
|
1863
|
-
"buttonface",
|
|
1864
|
-
"buttonhighlight",
|
|
1865
|
-
"buttonshadow",
|
|
1866
|
-
"buttontext",
|
|
1867
|
-
"calc",
|
|
1868
|
-
"capitalize",
|
|
1869
|
-
"caps-lock-indicator",
|
|
1870
|
-
"caption",
|
|
1871
|
-
"captiontext",
|
|
1872
|
-
"caret",
|
|
1873
|
-
"cell",
|
|
1874
|
-
"center",
|
|
1875
|
-
"checkbox",
|
|
1876
|
-
"circle",
|
|
1877
|
-
"cjk-decimal",
|
|
1878
|
-
"clear",
|
|
1879
|
-
"clip",
|
|
1880
|
-
"close-quote",
|
|
1881
|
-
"col-resize",
|
|
1882
|
-
"collapse",
|
|
1883
|
-
"color",
|
|
1884
|
-
"color-burn",
|
|
1885
|
-
"color-dodge",
|
|
1886
|
-
"column",
|
|
1887
|
-
"column-reverse",
|
|
1888
|
-
"compact",
|
|
1889
|
-
"condensed",
|
|
1890
|
-
"contain",
|
|
1891
|
-
"content",
|
|
1892
|
-
"contents",
|
|
1893
|
-
"content-box",
|
|
1894
|
-
"context-menu",
|
|
1895
|
-
"continuous",
|
|
1896
|
-
"copy",
|
|
1897
|
-
"counter",
|
|
1898
|
-
"counters",
|
|
1899
|
-
"cover",
|
|
1900
|
-
"crop",
|
|
1901
|
-
"cross",
|
|
1902
|
-
"crosshair",
|
|
1903
|
-
"currentcolor",
|
|
1904
|
-
"cursive",
|
|
1905
|
-
"cyclic",
|
|
1906
|
-
"darken",
|
|
1907
|
-
"dashed",
|
|
1908
|
-
"decimal",
|
|
1909
|
-
"decimal-leading-zero",
|
|
1910
|
-
"default",
|
|
1911
|
-
"default-button",
|
|
1912
|
-
"dense",
|
|
1913
|
-
"destination-atop",
|
|
1914
|
-
"destination-in",
|
|
1915
|
-
"destination-out",
|
|
1916
|
-
"destination-over",
|
|
1917
|
-
"difference",
|
|
1918
|
-
"disc",
|
|
1919
|
-
"discard",
|
|
1920
|
-
"disclosure-closed",
|
|
1921
|
-
"disclosure-open",
|
|
1922
|
-
"document",
|
|
1923
|
-
"dot-dash",
|
|
1924
|
-
"dot-dot-dash",
|
|
1925
|
-
"dotted",
|
|
1926
|
-
"double",
|
|
1927
|
-
"down",
|
|
1928
|
-
"e-resize",
|
|
1929
|
-
"ease",
|
|
1930
|
-
"ease-in",
|
|
1931
|
-
"ease-in-out",
|
|
1932
|
-
"ease-out",
|
|
1933
|
-
"element",
|
|
1934
|
-
"ellipse",
|
|
1935
|
-
"ellipsis",
|
|
1936
|
-
"embed",
|
|
1937
|
-
"end",
|
|
1938
|
-
"ethiopic-abegede-gez",
|
|
1939
|
-
"ethiopic-halehame-aa-er",
|
|
1940
|
-
"ethiopic-halehame-gez",
|
|
1941
|
-
"ew-resize",
|
|
1942
|
-
"exclusion",
|
|
1943
|
-
"expanded",
|
|
1944
|
-
"extends",
|
|
1945
|
-
"extra-condensed",
|
|
1946
|
-
"extra-expanded",
|
|
1947
|
-
"fantasy",
|
|
1948
|
-
"fast",
|
|
1949
|
-
"fill",
|
|
1950
|
-
"fill-box",
|
|
1951
|
-
"fixed",
|
|
1952
|
-
"flat",
|
|
1953
|
-
"flex",
|
|
1954
|
-
"flex-end",
|
|
1955
|
-
"flex-start",
|
|
1956
|
-
"footnotes",
|
|
1957
|
-
"forwards",
|
|
1958
|
-
"from",
|
|
1959
|
-
"geometricPrecision",
|
|
1960
|
-
"graytext",
|
|
1961
|
-
"grid",
|
|
1962
|
-
"groove",
|
|
1963
|
-
"hand",
|
|
1964
|
-
"hard-light",
|
|
1965
|
-
"help",
|
|
1966
|
-
"hidden",
|
|
1967
|
-
"hide",
|
|
1968
|
-
"higher",
|
|
1969
|
-
"highlight",
|
|
1970
|
-
"highlighttext",
|
|
1971
|
-
"horizontal",
|
|
1972
|
-
"hsl",
|
|
1973
|
-
"hsla",
|
|
1974
|
-
"hue",
|
|
1975
|
-
"icon",
|
|
1976
|
-
"ignore",
|
|
1977
|
-
"inactiveborder",
|
|
1978
|
-
"inactivecaption",
|
|
1979
|
-
"inactivecaptiontext",
|
|
1980
|
-
"infinite",
|
|
1981
|
-
"infobackground",
|
|
1982
|
-
"infotext",
|
|
1983
|
-
"inherit",
|
|
1984
|
-
"initial",
|
|
1985
|
-
"inline",
|
|
1986
|
-
"inline-axis",
|
|
1987
|
-
"inline-block",
|
|
1988
|
-
"inline-flex",
|
|
1989
|
-
"inline-grid",
|
|
1990
|
-
"inline-table",
|
|
1991
|
-
"inset",
|
|
1992
|
-
"inside",
|
|
1993
|
-
"intrinsic",
|
|
1994
|
-
"invert",
|
|
1995
|
-
"italic",
|
|
1996
|
-
"justify",
|
|
1997
|
-
"keep-all",
|
|
1998
|
-
"landscape",
|
|
1999
|
-
"large",
|
|
2000
|
-
"larger",
|
|
2001
|
-
"left",
|
|
2002
|
-
"level",
|
|
2003
|
-
"lighter",
|
|
2004
|
-
"lighten",
|
|
2005
|
-
"line-through",
|
|
2006
|
-
"linear",
|
|
2007
|
-
"linear-gradient",
|
|
2008
|
-
"lines",
|
|
2009
|
-
"list-item",
|
|
2010
|
-
"listbox",
|
|
2011
|
-
"listitem",
|
|
2012
|
-
"local",
|
|
2013
|
-
"logical",
|
|
2014
|
-
"loud",
|
|
2015
|
-
"lower",
|
|
2016
|
-
"lower-hexadecimal",
|
|
2017
|
-
"lower-latin",
|
|
2018
|
-
"lower-norwegian",
|
|
2019
|
-
"lowercase",
|
|
2020
|
-
"ltr",
|
|
2021
|
-
"luminosity",
|
|
2022
|
-
"manipulation",
|
|
2023
|
-
"match",
|
|
2024
|
-
"matrix",
|
|
2025
|
-
"matrix3d",
|
|
2026
|
-
"medium",
|
|
2027
|
-
"menu",
|
|
2028
|
-
"menutext",
|
|
2029
|
-
"message-box",
|
|
2030
|
-
"middle",
|
|
2031
|
-
"min-intrinsic",
|
|
2032
|
-
"mix",
|
|
2033
|
-
"monospace",
|
|
2034
|
-
"move",
|
|
2035
|
-
"multiple",
|
|
2036
|
-
"multiple_mask_images",
|
|
2037
|
-
"multiply",
|
|
2038
|
-
"n-resize",
|
|
2039
|
-
"narrower",
|
|
2040
|
-
"ne-resize",
|
|
2041
|
-
"nesw-resize",
|
|
2042
|
-
"no-close-quote",
|
|
2043
|
-
"no-drop",
|
|
2044
|
-
"no-open-quote",
|
|
2045
|
-
"no-repeat",
|
|
2046
|
-
"none",
|
|
2047
|
-
"normal",
|
|
2048
|
-
"not-allowed",
|
|
2049
|
-
"nowrap",
|
|
2050
|
-
"ns-resize",
|
|
2051
|
-
"numbers",
|
|
2052
|
-
"numeric",
|
|
2053
|
-
"nw-resize",
|
|
2054
|
-
"nwse-resize",
|
|
2055
|
-
"oblique",
|
|
2056
|
-
"opacity",
|
|
2057
|
-
"open-quote",
|
|
2058
|
-
"optimizeLegibility",
|
|
2059
|
-
"optimizeSpeed",
|
|
2060
|
-
"outset",
|
|
2061
|
-
"outside",
|
|
2062
|
-
"outside-shape",
|
|
2063
|
-
"overlay",
|
|
2064
|
-
"overline",
|
|
2065
|
-
"padding",
|
|
2066
|
-
"padding-box",
|
|
2067
|
-
"painted",
|
|
2068
|
-
"page",
|
|
2069
|
-
"paused",
|
|
2070
|
-
"perspective",
|
|
2071
|
-
"pinch-zoom",
|
|
2072
|
-
"plus-darker",
|
|
2073
|
-
"plus-lighter",
|
|
2074
|
-
"pointer",
|
|
2075
|
-
"polygon",
|
|
2076
|
-
"portrait",
|
|
2077
|
-
"pre",
|
|
2078
|
-
"pre-line",
|
|
2079
|
-
"pre-wrap",
|
|
2080
|
-
"preserve-3d",
|
|
2081
|
-
"progress",
|
|
2082
|
-
"push-button",
|
|
2083
|
-
"radial-gradient",
|
|
2084
|
-
"radio",
|
|
2085
|
-
"read-only",
|
|
2086
|
-
"read-write",
|
|
2087
|
-
"read-write-plaintext-only",
|
|
2088
|
-
"rectangle",
|
|
2089
|
-
"region",
|
|
2090
|
-
"relative",
|
|
2091
|
-
"repeat",
|
|
2092
|
-
"repeating-linear-gradient",
|
|
2093
|
-
"repeating-radial-gradient",
|
|
2094
|
-
"repeat-x",
|
|
2095
|
-
"repeat-y",
|
|
2096
|
-
"reset",
|
|
2097
|
-
"reverse",
|
|
2098
|
-
"rgb",
|
|
2099
|
-
"rgba",
|
|
2100
|
-
"ridge",
|
|
2101
|
-
"right",
|
|
2102
|
-
"rotate",
|
|
2103
|
-
"rotate3d",
|
|
2104
|
-
"rotateX",
|
|
2105
|
-
"rotateY",
|
|
2106
|
-
"rotateZ",
|
|
2107
|
-
"round",
|
|
2108
|
-
"row",
|
|
2109
|
-
"row-resize",
|
|
2110
|
-
"row-reverse",
|
|
2111
|
-
"rtl",
|
|
2112
|
-
"run-in",
|
|
2113
|
-
"running",
|
|
2114
|
-
"s-resize",
|
|
2115
|
-
"sans-serif",
|
|
2116
|
-
"saturation",
|
|
2117
|
-
"scale",
|
|
2118
|
-
"scale3d",
|
|
2119
|
-
"scaleX",
|
|
2120
|
-
"scaleY",
|
|
2121
|
-
"scaleZ",
|
|
2122
|
-
"screen",
|
|
2123
|
-
"scroll",
|
|
2124
|
-
"scrollbar",
|
|
2125
|
-
"scroll-position",
|
|
2126
|
-
"se-resize",
|
|
2127
|
-
"self-start",
|
|
2128
|
-
"self-end",
|
|
2129
|
-
"semi-condensed",
|
|
2130
|
-
"semi-expanded",
|
|
2131
|
-
"separate",
|
|
2132
|
-
"serif",
|
|
2133
|
-
"show",
|
|
2134
|
-
"single",
|
|
2135
|
-
"skew",
|
|
2136
|
-
"skewX",
|
|
2137
|
-
"skewY",
|
|
2138
|
-
"skip-white-space",
|
|
2139
|
-
"slide",
|
|
2140
|
-
"slider-horizontal",
|
|
2141
|
-
"slider-vertical",
|
|
2142
|
-
"sliderthumb-horizontal",
|
|
2143
|
-
"sliderthumb-vertical",
|
|
2144
|
-
"slow",
|
|
2145
|
-
"small",
|
|
2146
|
-
"small-caps",
|
|
2147
|
-
"small-caption",
|
|
2148
|
-
"smaller",
|
|
2149
|
-
"soft-light",
|
|
2150
|
-
"solid",
|
|
2151
|
-
"source-atop",
|
|
2152
|
-
"source-in",
|
|
2153
|
-
"source-out",
|
|
2154
|
-
"source-over",
|
|
2155
|
-
"space",
|
|
2156
|
-
"space-around",
|
|
2157
|
-
"space-between",
|
|
2158
|
-
"space-evenly",
|
|
2159
|
-
"spell-out",
|
|
2160
|
-
"square",
|
|
2161
|
-
"start",
|
|
2162
|
-
"static",
|
|
2163
|
-
"status-bar",
|
|
2164
|
-
"stretch",
|
|
2165
|
-
"stroke",
|
|
2166
|
-
"stroke-box",
|
|
2167
|
-
"sub",
|
|
2168
|
-
"subpixel-antialiased",
|
|
2169
|
-
"svg_masks",
|
|
2170
|
-
"super",
|
|
2171
|
-
"sw-resize",
|
|
2172
|
-
"symbolic",
|
|
2173
|
-
"symbols",
|
|
2174
|
-
"system-ui",
|
|
2175
|
-
"table",
|
|
2176
|
-
"table-caption",
|
|
2177
|
-
"table-cell",
|
|
2178
|
-
"table-column",
|
|
2179
|
-
"table-column-group",
|
|
2180
|
-
"table-footer-group",
|
|
2181
|
-
"table-header-group",
|
|
2182
|
-
"table-row",
|
|
2183
|
-
"table-row-group",
|
|
2184
|
-
"text",
|
|
2185
|
-
"text-bottom",
|
|
2186
|
-
"text-top",
|
|
2187
|
-
"textarea",
|
|
2188
|
-
"textfield",
|
|
2189
|
-
"thick",
|
|
2190
|
-
"thin",
|
|
2191
|
-
"threeddarkshadow",
|
|
2192
|
-
"threedface",
|
|
2193
|
-
"threedhighlight",
|
|
2194
|
-
"threedlightshadow",
|
|
2195
|
-
"threedshadow",
|
|
2196
|
-
"to",
|
|
2197
|
-
"top",
|
|
2198
|
-
"transform",
|
|
2199
|
-
"translate",
|
|
2200
|
-
"translate3d",
|
|
2201
|
-
"translateX",
|
|
2202
|
-
"translateY",
|
|
2203
|
-
"translateZ",
|
|
2204
|
-
"transparent",
|
|
2205
|
-
"ultra-condensed",
|
|
2206
|
-
"ultra-expanded",
|
|
2207
|
-
"underline",
|
|
2208
|
-
"unidirectional-pan",
|
|
2209
|
-
"unset",
|
|
2210
|
-
"up",
|
|
2211
|
-
"upper-latin",
|
|
2212
|
-
"uppercase",
|
|
2213
|
-
"url",
|
|
2214
|
-
"var",
|
|
2215
|
-
"vertical",
|
|
2216
|
-
"vertical-text",
|
|
2217
|
-
"view-box",
|
|
2218
|
-
"visible",
|
|
2219
|
-
"visibleFill",
|
|
2220
|
-
"visiblePainted",
|
|
2221
|
-
"visibleStroke",
|
|
2222
|
-
"visual",
|
|
2223
|
-
"w-resize",
|
|
2224
|
-
"wait",
|
|
2225
|
-
"wave",
|
|
2226
|
-
"wider",
|
|
2227
|
-
"window",
|
|
2228
|
-
"windowframe",
|
|
2229
|
-
"windowtext",
|
|
2230
|
-
"words",
|
|
2231
|
-
"wrap",
|
|
2232
|
-
"wrap-reverse",
|
|
2233
|
-
"x-large",
|
|
2234
|
-
"x-small",
|
|
2235
|
-
"xor",
|
|
2236
|
-
"xx-large",
|
|
2237
|
-
"xx-small"
|
|
2238
|
-
].map((name) => ({
|
|
2239
|
-
type: "keyword",
|
|
2240
|
-
label: name
|
|
2241
|
-
})).concat(/*@__PURE__*/ [
|
|
2242
|
-
"aliceblue",
|
|
2243
|
-
"antiquewhite",
|
|
2244
|
-
"aqua",
|
|
2245
|
-
"aquamarine",
|
|
2246
|
-
"azure",
|
|
2247
|
-
"beige",
|
|
2248
|
-
"bisque",
|
|
2249
|
-
"black",
|
|
2250
|
-
"blanchedalmond",
|
|
2251
|
-
"blue",
|
|
2252
|
-
"blueviolet",
|
|
2253
|
-
"brown",
|
|
2254
|
-
"burlywood",
|
|
2255
|
-
"cadetblue",
|
|
2256
|
-
"chartreuse",
|
|
2257
|
-
"chocolate",
|
|
2258
|
-
"coral",
|
|
2259
|
-
"cornflowerblue",
|
|
2260
|
-
"cornsilk",
|
|
2261
|
-
"crimson",
|
|
2262
|
-
"cyan",
|
|
2263
|
-
"darkblue",
|
|
2264
|
-
"darkcyan",
|
|
2265
|
-
"darkgoldenrod",
|
|
2266
|
-
"darkgray",
|
|
2267
|
-
"darkgreen",
|
|
2268
|
-
"darkkhaki",
|
|
2269
|
-
"darkmagenta",
|
|
2270
|
-
"darkolivegreen",
|
|
2271
|
-
"darkorange",
|
|
2272
|
-
"darkorchid",
|
|
2273
|
-
"darkred",
|
|
2274
|
-
"darksalmon",
|
|
2275
|
-
"darkseagreen",
|
|
2276
|
-
"darkslateblue",
|
|
2277
|
-
"darkslategray",
|
|
2278
|
-
"darkturquoise",
|
|
2279
|
-
"darkviolet",
|
|
2280
|
-
"deeppink",
|
|
2281
|
-
"deepskyblue",
|
|
2282
|
-
"dimgray",
|
|
2283
|
-
"dodgerblue",
|
|
2284
|
-
"firebrick",
|
|
2285
|
-
"floralwhite",
|
|
2286
|
-
"forestgreen",
|
|
2287
|
-
"fuchsia",
|
|
2288
|
-
"gainsboro",
|
|
2289
|
-
"ghostwhite",
|
|
2290
|
-
"gold",
|
|
2291
|
-
"goldenrod",
|
|
2292
|
-
"gray",
|
|
2293
|
-
"grey",
|
|
2294
|
-
"green",
|
|
2295
|
-
"greenyellow",
|
|
2296
|
-
"honeydew",
|
|
2297
|
-
"hotpink",
|
|
2298
|
-
"indianred",
|
|
2299
|
-
"indigo",
|
|
2300
|
-
"ivory",
|
|
2301
|
-
"khaki",
|
|
2302
|
-
"lavender",
|
|
2303
|
-
"lavenderblush",
|
|
2304
|
-
"lawngreen",
|
|
2305
|
-
"lemonchiffon",
|
|
2306
|
-
"lightblue",
|
|
2307
|
-
"lightcoral",
|
|
2308
|
-
"lightcyan",
|
|
2309
|
-
"lightgoldenrodyellow",
|
|
2310
|
-
"lightgray",
|
|
2311
|
-
"lightgreen",
|
|
2312
|
-
"lightpink",
|
|
2313
|
-
"lightsalmon",
|
|
2314
|
-
"lightseagreen",
|
|
2315
|
-
"lightskyblue",
|
|
2316
|
-
"lightslategray",
|
|
2317
|
-
"lightsteelblue",
|
|
2318
|
-
"lightyellow",
|
|
2319
|
-
"lime",
|
|
2320
|
-
"limegreen",
|
|
2321
|
-
"linen",
|
|
2322
|
-
"magenta",
|
|
2323
|
-
"maroon",
|
|
2324
|
-
"mediumaquamarine",
|
|
2325
|
-
"mediumblue",
|
|
2326
|
-
"mediumorchid",
|
|
2327
|
-
"mediumpurple",
|
|
2328
|
-
"mediumseagreen",
|
|
2329
|
-
"mediumslateblue",
|
|
2330
|
-
"mediumspringgreen",
|
|
2331
|
-
"mediumturquoise",
|
|
2332
|
-
"mediumvioletred",
|
|
2333
|
-
"midnightblue",
|
|
2334
|
-
"mintcream",
|
|
2335
|
-
"mistyrose",
|
|
2336
|
-
"moccasin",
|
|
2337
|
-
"navajowhite",
|
|
2338
|
-
"navy",
|
|
2339
|
-
"oldlace",
|
|
2340
|
-
"olive",
|
|
2341
|
-
"olivedrab",
|
|
2342
|
-
"orange",
|
|
2343
|
-
"orangered",
|
|
2344
|
-
"orchid",
|
|
2345
|
-
"palegoldenrod",
|
|
2346
|
-
"palegreen",
|
|
2347
|
-
"paleturquoise",
|
|
2348
|
-
"palevioletred",
|
|
2349
|
-
"papayawhip",
|
|
2350
|
-
"peachpuff",
|
|
2351
|
-
"peru",
|
|
2352
|
-
"pink",
|
|
2353
|
-
"plum",
|
|
2354
|
-
"powderblue",
|
|
2355
|
-
"purple",
|
|
2356
|
-
"rebeccapurple",
|
|
2357
|
-
"red",
|
|
2358
|
-
"rosybrown",
|
|
2359
|
-
"royalblue",
|
|
2360
|
-
"saddlebrown",
|
|
2361
|
-
"salmon",
|
|
2362
|
-
"sandybrown",
|
|
2363
|
-
"seagreen",
|
|
2364
|
-
"seashell",
|
|
2365
|
-
"sienna",
|
|
2366
|
-
"silver",
|
|
2367
|
-
"skyblue",
|
|
2368
|
-
"slateblue",
|
|
2369
|
-
"slategray",
|
|
2370
|
-
"snow",
|
|
2371
|
-
"springgreen",
|
|
2372
|
-
"steelblue",
|
|
2373
|
-
"tan",
|
|
2374
|
-
"teal",
|
|
2375
|
-
"thistle",
|
|
2376
|
-
"tomato",
|
|
2377
|
-
"turquoise",
|
|
2378
|
-
"violet",
|
|
2379
|
-
"wheat",
|
|
2380
|
-
"white",
|
|
2381
|
-
"whitesmoke",
|
|
2382
|
-
"yellow",
|
|
2383
|
-
"yellowgreen"
|
|
2384
|
-
].map((name) => ({
|
|
2385
|
-
type: "constant",
|
|
2386
|
-
label: name
|
|
2387
|
-
})));
|
|
2388
|
-
var tags = /*@__PURE__*/ [
|
|
2389
|
-
"a",
|
|
2390
|
-
"abbr",
|
|
2391
|
-
"address",
|
|
2392
|
-
"article",
|
|
2393
|
-
"aside",
|
|
2394
|
-
"b",
|
|
2395
|
-
"bdi",
|
|
2396
|
-
"bdo",
|
|
2397
|
-
"blockquote",
|
|
2398
|
-
"body",
|
|
2399
|
-
"br",
|
|
2400
|
-
"button",
|
|
2401
|
-
"canvas",
|
|
2402
|
-
"caption",
|
|
2403
|
-
"cite",
|
|
2404
|
-
"code",
|
|
2405
|
-
"col",
|
|
2406
|
-
"colgroup",
|
|
2407
|
-
"dd",
|
|
2408
|
-
"del",
|
|
2409
|
-
"details",
|
|
2410
|
-
"dfn",
|
|
2411
|
-
"dialog",
|
|
2412
|
-
"div",
|
|
2413
|
-
"dl",
|
|
2414
|
-
"dt",
|
|
2415
|
-
"em",
|
|
2416
|
-
"figcaption",
|
|
2417
|
-
"figure",
|
|
2418
|
-
"footer",
|
|
2419
|
-
"form",
|
|
2420
|
-
"header",
|
|
2421
|
-
"hgroup",
|
|
2422
|
-
"h1",
|
|
2423
|
-
"h2",
|
|
2424
|
-
"h3",
|
|
2425
|
-
"h4",
|
|
2426
|
-
"h5",
|
|
2427
|
-
"h6",
|
|
2428
|
-
"hr",
|
|
2429
|
-
"html",
|
|
2430
|
-
"i",
|
|
2431
|
-
"iframe",
|
|
2432
|
-
"img",
|
|
2433
|
-
"input",
|
|
2434
|
-
"ins",
|
|
2435
|
-
"kbd",
|
|
2436
|
-
"label",
|
|
2437
|
-
"legend",
|
|
2438
|
-
"li",
|
|
2439
|
-
"main",
|
|
2440
|
-
"meter",
|
|
2441
|
-
"nav",
|
|
2442
|
-
"ol",
|
|
2443
|
-
"output",
|
|
2444
|
-
"p",
|
|
2445
|
-
"pre",
|
|
2446
|
-
"ruby",
|
|
2447
|
-
"section",
|
|
2448
|
-
"select",
|
|
2449
|
-
"small",
|
|
2450
|
-
"source",
|
|
2451
|
-
"span",
|
|
2452
|
-
"strong",
|
|
2453
|
-
"sub",
|
|
2454
|
-
"summary",
|
|
2455
|
-
"sup",
|
|
2456
|
-
"table",
|
|
2457
|
-
"tbody",
|
|
2458
|
-
"td",
|
|
2459
|
-
"template",
|
|
2460
|
-
"textarea",
|
|
2461
|
-
"tfoot",
|
|
2462
|
-
"th",
|
|
2463
|
-
"thead",
|
|
2464
|
-
"tr",
|
|
2465
|
-
"u",
|
|
2466
|
-
"ul"
|
|
2467
|
-
].map((name) => ({
|
|
2468
|
-
type: "type",
|
|
2469
|
-
label: name
|
|
2470
|
-
}));
|
|
2471
|
-
var atRules = /*@__PURE__*/ [
|
|
2472
|
-
"@charset",
|
|
2473
|
-
"@color-profile",
|
|
2474
|
-
"@container",
|
|
2475
|
-
"@counter-style",
|
|
2476
|
-
"@font-face",
|
|
2477
|
-
"@font-feature-values",
|
|
2478
|
-
"@font-palette-values",
|
|
2479
|
-
"@import",
|
|
2480
|
-
"@keyframes",
|
|
2481
|
-
"@layer",
|
|
2482
|
-
"@media",
|
|
2483
|
-
"@namespace",
|
|
2484
|
-
"@page",
|
|
2485
|
-
"@position-try",
|
|
2486
|
-
"@property",
|
|
2487
|
-
"@scope",
|
|
2488
|
-
"@starting-style",
|
|
2489
|
-
"@supports",
|
|
2490
|
-
"@view-transition"
|
|
2491
|
-
].map((label) => ({
|
|
2492
|
-
type: "keyword",
|
|
2493
|
-
label
|
|
2494
|
-
}));
|
|
2495
|
-
var identifier = /^(\w[\w-]*|-\w[\w-]*|)$/, variable = /^-(-[\w-]*)?$/;
|
|
2496
|
-
function isVarArg(node, doc) {
|
|
2497
|
-
var _a;
|
|
2498
|
-
if (node.name == "(" || node.type.isError) node = node.parent || node;
|
|
2499
|
-
if (node.name != "ArgList") return false;
|
|
2500
|
-
let callee = (_a = node.parent) === null || _a === void 0 ? void 0 : _a.firstChild;
|
|
2501
|
-
if ((callee === null || callee === void 0 ? void 0 : callee.name) != "Callee") return false;
|
|
2502
|
-
return doc.sliceString(callee.from, callee.to) == "var";
|
|
2503
|
-
}
|
|
2504
|
-
var VariablesByNode = /*@__PURE__*/ new NodeWeakMap();
|
|
2505
|
-
var declSelector = ["Declaration"];
|
|
2506
|
-
function astTop(node) {
|
|
2507
|
-
for (let cur = node;;) {
|
|
2508
|
-
if (cur.type.isTop) return cur;
|
|
2509
|
-
if (!(cur = cur.parent)) return node;
|
|
2510
|
-
}
|
|
2511
|
-
}
|
|
2512
|
-
function variableNames(doc, node, isVariable) {
|
|
2513
|
-
if (node.to - node.from > 4096) {
|
|
2514
|
-
let known = VariablesByNode.get(node);
|
|
2515
|
-
if (known) return known;
|
|
2516
|
-
let result = [], seen = /* @__PURE__ */ new Set(), cursor = node.cursor(IterMode.IncludeAnonymous);
|
|
2517
|
-
if (cursor.firstChild()) do
|
|
2518
|
-
for (let option of variableNames(doc, cursor.node, isVariable)) if (!seen.has(option.label)) {
|
|
2519
|
-
seen.add(option.label);
|
|
2520
|
-
result.push(option);
|
|
2521
|
-
}
|
|
2522
|
-
while (cursor.nextSibling());
|
|
2523
|
-
VariablesByNode.set(node, result);
|
|
2524
|
-
return result;
|
|
2525
|
-
} else {
|
|
2526
|
-
let result = [], seen = /* @__PURE__ */ new Set();
|
|
2527
|
-
node.cursor().iterate((node) => {
|
|
2528
|
-
var _a;
|
|
2529
|
-
if (isVariable(node) && node.matchContext(declSelector) && ((_a = node.node.nextSibling) === null || _a === void 0 ? void 0 : _a.name) == ":") {
|
|
2530
|
-
let name = doc.sliceString(node.from, node.to);
|
|
2531
|
-
if (!seen.has(name)) {
|
|
2532
|
-
seen.add(name);
|
|
2533
|
-
result.push({
|
|
2534
|
-
label: name,
|
|
2535
|
-
type: "variable"
|
|
2536
|
-
});
|
|
2537
|
-
}
|
|
2538
|
-
}
|
|
2539
|
-
});
|
|
2540
|
-
return result;
|
|
2541
|
-
}
|
|
2542
|
-
}
|
|
2543
|
-
/**
|
|
2544
|
-
Create a completion source for a CSS dialect, providing a
|
|
2545
|
-
predicate for determining what kind of syntax node can act as a
|
|
2546
|
-
completable variable. This is used by language modes like Sass and
|
|
2547
|
-
Less to reuse this package's completion logic.
|
|
2548
|
-
*/
|
|
2549
|
-
var defineCSSCompletionSource = (isVariable) => (context) => {
|
|
2550
|
-
let { state, pos } = context, node = syntaxTree(state).resolveInner(pos, -1);
|
|
2551
|
-
let isDash = node.type.isError && node.from == node.to - 1 && state.doc.sliceString(node.from, node.to) == "-";
|
|
2552
|
-
if (node.name == "PropertyName" || (isDash || node.name == "TagName") && /^(Block|Styles)$/.test(node.resolve(node.to).name)) return {
|
|
2553
|
-
from: node.from,
|
|
2554
|
-
options: properties(),
|
|
2555
|
-
validFor: identifier
|
|
2556
|
-
};
|
|
2557
|
-
if (node.name == "ValueName") return {
|
|
2558
|
-
from: node.from,
|
|
2559
|
-
options: values,
|
|
2560
|
-
validFor: identifier
|
|
2561
|
-
};
|
|
2562
|
-
if (node.name == "PseudoClassName") return {
|
|
2563
|
-
from: node.from,
|
|
2564
|
-
options: pseudoClasses,
|
|
2565
|
-
validFor: identifier
|
|
2566
|
-
};
|
|
2567
|
-
if (isVariable(node) || (context.explicit || isDash) && isVarArg(node, state.doc)) return {
|
|
2568
|
-
from: isVariable(node) || isDash ? node.from : pos,
|
|
2569
|
-
options: variableNames(state.doc, astTop(node), isVariable),
|
|
2570
|
-
validFor: variable
|
|
2571
|
-
};
|
|
2572
|
-
if (node.name == "TagName") {
|
|
2573
|
-
for (let { parent } = node; parent; parent = parent.parent) if (parent.name == "Block") return {
|
|
2574
|
-
from: node.from,
|
|
2575
|
-
options: properties(),
|
|
2576
|
-
validFor: identifier
|
|
2577
|
-
};
|
|
2578
|
-
return {
|
|
2579
|
-
from: node.from,
|
|
2580
|
-
options: tags,
|
|
2581
|
-
validFor: identifier
|
|
2582
|
-
};
|
|
2583
|
-
}
|
|
2584
|
-
if (node.name == "AtKeyword") return {
|
|
2585
|
-
from: node.from,
|
|
2586
|
-
options: atRules,
|
|
2587
|
-
validFor: identifier
|
|
2588
|
-
};
|
|
2589
|
-
if (!context.explicit) return null;
|
|
2590
|
-
let above = node.resolve(pos), before = above.childBefore(pos);
|
|
2591
|
-
if (before && before.name == ":" && above.name == "PseudoClassSelector") return {
|
|
2592
|
-
from: pos,
|
|
2593
|
-
options: pseudoClasses,
|
|
2594
|
-
validFor: identifier
|
|
2595
|
-
};
|
|
2596
|
-
if (before && before.name == ":" && above.name == "Declaration" || above.name == "ArgList") return {
|
|
2597
|
-
from: pos,
|
|
2598
|
-
options: values,
|
|
2599
|
-
validFor: identifier
|
|
2600
|
-
};
|
|
2601
|
-
if (above.name == "Block" || above.name == "Styles") return {
|
|
2602
|
-
from: pos,
|
|
2603
|
-
options: properties(),
|
|
2604
|
-
validFor: identifier
|
|
2605
|
-
};
|
|
2606
|
-
return null;
|
|
2607
|
-
};
|
|
2608
|
-
/**
|
|
2609
|
-
CSS property, variable, and value keyword completion source.
|
|
2610
|
-
*/
|
|
2611
|
-
var cssCompletionSource = /*@__PURE__*/ defineCSSCompletionSource((n) => n.name == "VariableName");
|
|
2612
|
-
/**
|
|
2613
|
-
A language provider based on the [Lezer CSS
|
|
2614
|
-
parser](https://github.com/lezer-parser/css), extended with
|
|
2615
|
-
highlighting and indentation information.
|
|
2616
|
-
*/
|
|
2617
|
-
var cssLanguage = /*@__PURE__*/ LRLanguage.define({
|
|
2618
|
-
name: "css",
|
|
2619
|
-
parser: /*@__PURE__*/ parser.configure({ props: [/*@__PURE__*/ indentNodeProp.add({ Declaration: /*@__PURE__*/ continuedIndent() }), /*@__PURE__*/ foldNodeProp.add({ "Block KeyframeList": foldInside })] }),
|
|
2620
|
-
languageData: {
|
|
2621
|
-
commentTokens: { block: {
|
|
2622
|
-
open: "/*",
|
|
2623
|
-
close: "*/"
|
|
2624
|
-
} },
|
|
2625
|
-
indentOnInput: /^\s*\}$/,
|
|
2626
|
-
wordChars: "-"
|
|
2627
|
-
}
|
|
2628
|
-
});
|
|
2629
|
-
/**
|
|
2630
|
-
Language support for CSS.
|
|
2631
|
-
*/
|
|
2632
|
-
function css() {
|
|
2633
|
-
return new LanguageSupport(cssLanguage, cssLanguage.data.of({ autocomplete: cssCompletionSource }));
|
|
2634
|
-
}
|
|
2635
|
-
//#endregion
|
|
2636
|
-
export { LRParser as a, ExternalTokenizer as i, cssLanguage as n, LocalTokenGroup as o, ContextTracker as r, css as t };
|