grammar-well 1.2.3 → 1.2.4

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.
@@ -182,6 +182,8 @@ export interface LexerStateMatchRule {
182
182
  tag?: string[];
183
183
  pop?: number | 'all';
184
184
  highlight?: string;
185
+ embed?: string;
186
+ unembed?: boolean;
185
187
  inset?: number;
186
188
  goto?: string;
187
189
  set?: string;
@@ -13,20 +13,27 @@ function CreateMonarchTokenizer(lexer) {
13
13
  tokenizer[name].push({ include: i });
14
14
  }
15
15
  }
16
- else if ('pop' in rule) {
17
- tokenizer[name].push([TransformWhen(rule.when), { token: rule.highlight || 'source', next: '@pop' }]);
18
- }
19
- else if ('goto' in rule) {
20
- tokenizer[name].push([TransformWhen(rule.when), { token: rule.highlight || 'source', next: '@' + rule.goto }]);
21
- }
22
- else if ('set' in rule) {
23
- tokenizer[name].push([TransformWhen(rule.when), { token: rule.highlight || 'source', switchTo: '@' + rule.set }]);
24
- }
25
- else if ('inset' in rule) {
26
- tokenizer[name].push([TransformWhen(rule.when), { token: rule.highlight || 'source', next: '@push' }]);
27
- }
28
- else if ('when' in rule) {
29
- tokenizer[name].push([TransformWhen(rule.when), { token: rule.highlight || 'source' }]);
16
+ else {
17
+ const action = { token: rule.highlight || 'source' };
18
+ if ('pop' in rule) {
19
+ action.next = '@pop';
20
+ }
21
+ else if ('goto' in rule) {
22
+ action.next = '@' + rule.goto;
23
+ }
24
+ else if ('set' in rule) {
25
+ action.switchTo = '@' + rule.set;
26
+ }
27
+ else if ('inset' in rule) {
28
+ action.next = '@push';
29
+ }
30
+ if ('embed' in rule) {
31
+ action.nextEmbedded = rule.embed;
32
+ }
33
+ else if ('unembed' in rule) {
34
+ action.nextEmbedded = '@pop';
35
+ }
36
+ tokenizer[name].push([TransformWhen(rule.when), action]);
30
37
  }
31
38
  }
32
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"monarch.js","sourceRoot":"","sources":["../../src/utility/monarch.ts"],"names":[],"mappings":";;;AAEA,SAAgB,sBAAsB,CAAC,KAAkB;IACrD,MAAM,SAAS,GAAQ,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAChC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACtB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,IAAI,QAAQ,IAAI,IAAI,EAAE;gBAClB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;oBACzB,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;iBACvC;aACJ;iBAAM,IAAI,KAAK,IAAI,IAAI,EAAE;gBACtB,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;aACxG;iBAAM,IAAI,MAAM,IAAI,IAAI,EAAE;gBACvB,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;aACjH;iBAAM,IAAI,KAAK,IAAI,IAAI,EAAE;gBACtB,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;aACpH;iBAAM,IAAI,OAAO,IAAI,IAAI,EAAE;gBACxB,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;aACzG;iBAAM,IAAI,MAAM,IAAI,IAAI,EAAE;gBACvB,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAA;aAC1F;SACJ;KACJ;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAzBD,wDAyBC;AAED,SAAS,aAAa,CAAC,GAAG;IACtB,OAAO,OAAO,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,WAAW,CAAC,MAAM;IACvB,OAAO,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAA;AAC1D,CAAC"}
1
+ {"version":3,"file":"monarch.js","sourceRoot":"","sources":["../../src/utility/monarch.ts"],"names":[],"mappings":";;;AAEA,SAAgB,sBAAsB,CAAC,KAAkB;IACrD,MAAM,SAAS,GAAQ,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAChC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACtB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,IAAI,QAAQ,IAAI,IAAI,EAAE;gBAClB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;oBACzB,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;iBACvC;aACJ;iBAAM;gBACH,MAAM,MAAM,GAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;gBAC1D,IAAI,KAAK,IAAI,IAAI,EAAE;oBACf,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;iBACxB;qBAAM,IAAI,MAAM,IAAI,IAAI,EAAE;oBACvB,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;iBACjC;qBAAM,IAAI,KAAK,IAAI,IAAI,EAAE;oBACtB,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;iBACpC;qBAAM,IAAI,OAAO,IAAI,IAAI,EAAE;oBACxB,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;iBACzB;gBAED,IAAI,OAAO,IAAI,IAAI,EAAE;oBACjB,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;iBACpC;qBAAM,IAAI,SAAS,IAAI,IAAI,EAAE;oBAC1B,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC;iBAChC;gBAED,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;aAC3D;SACJ;KACJ;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAlCD,wDAkCC;AAED,SAAS,aAAa,CAAC,GAAG;IACtB,OAAO,OAAO,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,WAAW,CAAC,MAAM;IACvB,OAAO,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAA;AAC1D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grammar-well",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "description": "Cross-platform Parser written in TypeScript",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -165,6 +165,8 @@ grammar: {{
165
165
  | K_POP _ L_COLON _ T_INTEGER : {{ { pop: parseInt($4) } }}
166
166
  | K_POP _ L_COLON _ K_ALL : {{ { pop: "all" } }}
167
167
  | K_HIGHLIGHT _ L_COLON _ T_STRING : {{ { highlight: $4 } }}
168
+ | K_EMBED _ L_COLON _ T_STRING : {{ { embed: $4 } }}
169
+ | K_UNEMBED : {{ { unembed: true } }}
168
170
  | K_INSET : {{ { inset: 1 } }}
169
171
  | K_INSET _ L_COLON _ T_INTEGER : {{ { inset: parseInt($4) } }}
170
172
  | K_SET _ L_COLON _ T_WORD : {{ { set: $4 } }}
@@ -262,6 +264,8 @@ grammar: {{
262
264
  K_WHEN -> "when"
263
265
  K_POP -> "pop"
264
266
  K_HIGHLIGHT -> "highlight"
267
+ K_EMBED -> "embed"
268
+ K_UNEMBED -> "unembed"
265
269
  K_INSET -> "inset"
266
270
  K_SET -> "set"
267
271
  K_GOTO -> "goto"
package/src/typings.ts CHANGED
@@ -203,6 +203,8 @@ export interface LexerStateMatchRule {
203
203
  tag?: string[];
204
204
  pop?: number | 'all';
205
205
  highlight?: string;
206
+ embed?: string;
207
+ unembed?: boolean;
206
208
  inset?: number;
207
209
  goto?: string;
208
210
  set?: string;
@@ -11,16 +11,25 @@ export function CreateMonarchTokenizer(lexer: LexerConfig) {
11
11
  for (const i of rule.import) {
12
12
  tokenizer[name].push({ include: i })
13
13
  }
14
- } else if ('pop' in rule) {
15
- tokenizer[name].push([TransformWhen(rule.when), { token: rule.highlight || 'source', next: '@pop' }])
16
- } else if ('goto' in rule) {
17
- tokenizer[name].push([TransformWhen(rule.when), { token: rule.highlight || 'source', next: '@' + rule.goto }])
18
- } else if ('set' in rule) {
19
- tokenizer[name].push([TransformWhen(rule.when), { token: rule.highlight || 'source', switchTo: '@' + rule.set }])
20
- } else if ('inset' in rule) {
21
- tokenizer[name].push([TransformWhen(rule.when), { token: rule.highlight || 'source', next: '@push' }])
22
- } else if ('when' in rule) {
23
- tokenizer[name].push([TransformWhen(rule.when), { token: rule.highlight || 'source' }])
14
+ } else {
15
+ const action: any = { token: rule.highlight || 'source' };
16
+ if ('pop' in rule) {
17
+ action.next = '@pop';
18
+ } else if ('goto' in rule) {
19
+ action.next = '@' + rule.goto;
20
+ } else if ('set' in rule) {
21
+ action.switchTo = '@' + rule.set;
22
+ } else if ('inset' in rule) {
23
+ action.next = '@push';
24
+ }
25
+
26
+ if ('embed' in rule) {
27
+ action.nextEmbedded = rule.embed;
28
+ } else if ('unembed' in rule) {
29
+ action.nextEmbedded = '@pop';
30
+ }
31
+
32
+ tokenizer[name].push([TransformWhen(rule.when), action])
24
33
  }
25
34
  }
26
35
  }