parser-lr 0.3.1 → 0.4.1

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.
@@ -28,8 +28,8 @@ export declare class ParseContext {
28
28
  /**
29
29
  * Builds a parse context from serialized parse table JSON.
30
30
  *
31
- * @param json - Serialized parse table JSON.
32
- * @returns Parser and parse table ready for lexing or parsing.
31
+ * @param json - Serialized parse table JSON including `ast` and `transform` when present.
32
+ * @returns Parser and parse table ready for lexing and full AST parsing.
33
33
  */
34
34
  static fromTableJson(json: string): ParseContext;
35
35
  /**
@@ -81,17 +81,17 @@ export declare class ParseContext {
81
81
  */
82
82
  lexChunkStreamAsync(chunks: AsyncIterable<string>): Promise<readonly Token[]>;
83
83
  /**
84
- * Parses a token stream into a concrete syntax tree.
84
+ * Parses a token stream into an AST, applying transforms from the grammar or table when present.
85
85
  *
86
86
  * @param tokens - Token stream ending with `$eof`.
87
- * @returns Parse tree rooted at the grammar start symbol, or null on syntax error.
87
+ * @returns Transformed AST, CST when no transform rules exist, or null on syntax error.
88
88
  */
89
89
  parse(tokens: readonly Token[]): AstNode | null;
90
90
  /**
91
- * Lexes and parses source text into a concrete syntax tree.
91
+ * Lexes and parses source text into an AST, applying transforms when present.
92
92
  *
93
93
  * @param source - Input text to parse.
94
- * @returns Parse tree rooted at the grammar start symbol, or null on syntax error.
94
+ * @returns Transformed AST, CST when no transform rules exist, or null on syntax error.
95
95
  */
96
96
  parseSource(source: string): AstNode | null;
97
97
  }
@@ -35,8 +35,8 @@ export class ParseContext {
35
35
  /**
36
36
  * Builds a parse context from serialized parse table JSON.
37
37
  *
38
- * @param json - Serialized parse table JSON.
39
- * @returns Parser and parse table ready for lexing or parsing.
38
+ * @param json - Serialized parse table JSON including `ast` and `transform` when present.
39
+ * @returns Parser and parse table ready for lexing and full AST parsing.
40
40
  */
41
41
  static fromTableJson(json) {
42
42
  const table = ParseTable.fromJsonString(json);
@@ -112,19 +112,19 @@ export class ParseContext {
112
112
  return this.parser.lexChunkStreamAsync(chunks);
113
113
  }
114
114
  /**
115
- * Parses a token stream into a concrete syntax tree.
115
+ * Parses a token stream into an AST, applying transforms from the grammar or table when present.
116
116
  *
117
117
  * @param tokens - Token stream ending with `$eof`.
118
- * @returns Parse tree rooted at the grammar start symbol, or null on syntax error.
118
+ * @returns Transformed AST, CST when no transform rules exist, or null on syntax error.
119
119
  */
120
120
  parse(tokens) {
121
121
  return this.parser.parse(tokens);
122
122
  }
123
123
  /**
124
- * Lexes and parses source text into a concrete syntax tree.
124
+ * Lexes and parses source text into an AST, applying transforms when present.
125
125
  *
126
126
  * @param source - Input text to parse.
127
- * @returns Parse tree rooted at the grammar start symbol, or null on syntax error.
127
+ * @returns Transformed AST, CST when no transform rules exist, or null on syntax error.
128
128
  */
129
129
  parseSource(source) {
130
130
  return this.parser.parseSource(source);
@@ -1,3 +1,5 @@
1
+ import type { AstType } from '../grammar/ast-type.js';
2
+ import type { TransformRule } from '../grammar/transform-rule.js';
1
3
  import type { ParseTableJson } from './parse-table.js';
2
4
  /**
3
5
  * Serialized production metadata referenced by reduce actions.
@@ -36,6 +38,8 @@ export interface ParseTableJsonV2 extends ParseTableJson {
36
38
  readonly productions: readonly ParseTableProductionJson[];
37
39
  readonly actions: readonly ParseTableActionJson[];
38
40
  readonly gotos: readonly ParseTableGotoJson[];
41
+ readonly ast?: readonly AstType[];
42
+ readonly transform?: readonly TransformRule[];
39
43
  }
40
44
  /**
41
45
  * Returns whether a JSON object is a version 2 parse table payload.
@@ -1 +1 @@
1
- {"version":3,"file":"parse-table-json.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IAErC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAE/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IAEpD,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACjD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,IAAI,gBAAgB,CAGjF;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"parse-table-json.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IAErC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAE/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IAEpD,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACjD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,IAAI,gBAAgB,CAGjF;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-table-json.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-json.ts"],"names":[],"mappings":"AAgDA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IAEnD,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"parse-table-json.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-json.ts"],"names":[],"mappings":"AAqDA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IAEnD,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -1,5 +1,9 @@
1
+ import { AstSchema } from '../grammar/ast-schema.js';
2
+ import type { AstType } from '../grammar/ast-type.js';
1
3
  import { Grammar } from '../grammar/grammar.js';
2
4
  import type { TokenRule } from '../grammar/token-rule.js';
5
+ import type { TransformRule } from '../grammar/transform-rule.js';
6
+ import { TransformSchema } from '../grammar/transform-schema.js';
3
7
  import type { LrAlgorithm } from './lr-algorithm.js';
4
8
  import { type ParseTableActionJson, type ParseTableGotoJson, type ParseTableProductionJson } from './parse-table-json.js';
5
9
  import type { ParseAction, ParseConflict } from './table/parse-action.js';
@@ -23,6 +27,8 @@ export interface ParseTableJson {
23
27
  readonly productions?: readonly ParseTableProductionJson[];
24
28
  readonly actions?: readonly ParseTableActionJson[];
25
29
  readonly gotos?: readonly ParseTableGotoJson[];
30
+ readonly ast?: readonly AstType[];
31
+ readonly transform?: readonly TransformRule[];
26
32
  }
27
33
  /**
28
34
  * LR parse table metadata, including lexer inventory and parser table entries.
@@ -37,6 +43,8 @@ export declare class ParseTable {
37
43
  readonly algorithm: LrAlgorithm;
38
44
  readonly parserStateCount: number;
39
45
  readonly conflicts: readonly ParseConflict[];
46
+ readonly astSchema: AstSchema | null;
47
+ readonly transformSchema: TransformSchema | null;
40
48
  private readonly actionByState;
41
49
  private readonly gotoByState;
42
50
  private readonly productionById;
@@ -55,8 +63,10 @@ export declare class ParseTable {
55
63
  * @param actions - ACTION entries keyed by state and terminal symbol.
56
64
  * @param gotos - GOTO entries keyed by state and non-terminal name.
57
65
  * @param conflicts - Shift/reduce and reduce/reduce conflicts resolved during construction.
66
+ * @param astSchema - AST types from the `ast` section, or null when absent.
67
+ * @param transformSchema - CST-to-AST rules from the `transform` section, or null when absent.
58
68
  */
59
- constructor(grammarName: string, startSymbol: string, tokens: readonly string[], tokenRules: readonly TokenRule[], skipRules: readonly TokenRule[], states: readonly string[], algorithm: LrAlgorithm, parserStateCount?: number, productions?: readonly ParseTableProductionJson[], actions?: ReadonlyMap<number, ReadonlyMap<string, ParseAction>>, gotos?: ReadonlyMap<number, ReadonlyMap<string, number>>, conflicts?: readonly ParseConflict[]);
69
+ constructor(grammarName: string, startSymbol: string, tokens: readonly string[], tokenRules: readonly TokenRule[], skipRules: readonly TokenRule[], states: readonly string[], algorithm: LrAlgorithm, parserStateCount?: number, productions?: readonly ParseTableProductionJson[], actions?: ReadonlyMap<number, ReadonlyMap<string, ParseAction>>, gotos?: ReadonlyMap<number, ReadonlyMap<string, number>>, conflicts?: readonly ParseConflict[], astSchema?: AstSchema | null, transformSchema?: TransformSchema | null);
60
70
  /**
61
71
  * Whether the table includes parser ACTION/GOTO entries.
62
72
  */
@@ -104,9 +114,9 @@ export declare class ParseTable {
104
114
  */
105
115
  toJson(): ParseTableJson;
106
116
  /**
107
- * Builds a grammar containing lexer metadata from this table.
117
+ * Builds a grammar from this table, including AST and transform schemas when present.
108
118
  *
109
- * @returns A grammar suitable for lexing; productions are empty.
119
+ * @returns A grammar suitable for lexing and CST-to-AST transforms.
110
120
  */
111
121
  toGrammar(): Grammar;
112
122
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"parse-table.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAEH,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAChC,MAAM,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG1E,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAE3B,QAAQ,CAAC,OAAO,EAAE,OAAO,mBAAmB,GAAG,OAAO,wBAAwB,CAAC;IAC/E,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AAED;;GAEG;AACH,qBAAa,UAAU;aAuBC,WAAW,EAAE,MAAM;aACnB,WAAW,EAAE,MAAM;aACnB,MAAM,EAAE,SAAS,MAAM,EAAE;aACzB,UAAU,EAAE,SAAS,SAAS,EAAE;aAChC,SAAS,EAAE,SAAS,SAAS,EAAE;aAC/B,MAAM,EAAE,SAAS,MAAM,EAAE;aACzB,SAAS,EAAE,WAAW;aACtB,gBAAgB,EAAE,MAAM;aAIxB,SAAS,EAAE,SAAS,aAAa,EAAE;IAhCvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwD;IACtF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;IAE/E;;;;;;;;;;;;;;;OAeG;gBAEiB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,SAAS,EAAE,SAAS,SAAS,EAAE,EAC/B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,SAAS,EAAE,WAAW,EACtB,gBAAgB,GAAE,MAAU,EAC5C,WAAW,GAAE,SAAS,wBAAwB,EAAO,EACrD,OAAO,GAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAa,EAC1E,KAAK,GAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa,EACnD,SAAS,GAAE,SAAS,aAAa,EAAO;IAgB5D;;OAEG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;IAED;;OAEG;IACI,sBAAsB,IAAI,SAAS,MAAM,EAAE;IAKlD;;;;;;OAMG;WACW,WAAW,CACrB,OAAO,EAAE,OAAO,EAChB,SAAS,GAAE,WAAmB,GAC/B,UAAU;IAQb;;;;;OAKG;WACW,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU;IAsCxD;;;;;OAKG;WACW,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAkBtD;;;;OAIG;IACI,YAAY,IAAI,MAAM;IAK7B;;;;OAIG;IACI,MAAM,IAAI,cAAc;IAkC/B;;;;OAIG;IACI,SAAS,IAAI,OAAO;IAY3B;;;;;OAKG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAKhE;;;;;OAKG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK9D;;;;OAIG;IACI,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI;IAKxE;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IA0B/B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAoD5B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAyB1B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAwC9B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;CAe/B"}
1
+ {"version":3,"file":"parse-table.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import { AstSchema } from '../grammar/ast-schema.js';
1
2
  import { Grammar } from '../grammar/grammar.js';
3
+ import { TransformSchema } from '../grammar/transform-schema.js';
2
4
  import { desugarEbnf } from './bnf/desugar-ebnf.js';
3
5
  import { buildLrTable } from './build-lr-table.js';
4
6
  import { ParseTableError } from './parse-table-error.js';
@@ -22,6 +24,8 @@ export class ParseTable {
22
24
  algorithm;
23
25
  parserStateCount;
24
26
  conflicts;
27
+ astSchema;
28
+ transformSchema;
25
29
  actionByState;
26
30
  gotoByState;
27
31
  productionById;
@@ -40,8 +44,10 @@ export class ParseTable {
40
44
  * @param actions - ACTION entries keyed by state and terminal symbol.
41
45
  * @param gotos - GOTO entries keyed by state and non-terminal name.
42
46
  * @param conflicts - Shift/reduce and reduce/reduce conflicts resolved during construction.
47
+ * @param astSchema - AST types from the `ast` section, or null when absent.
48
+ * @param transformSchema - CST-to-AST rules from the `transform` section, or null when absent.
43
49
  */
44
- constructor(grammarName, startSymbol, tokens, tokenRules, skipRules, states, algorithm, parserStateCount = 0, productions = [], actions = new Map(), gotos = new Map(), conflicts = []) {
50
+ constructor(grammarName, startSymbol, tokens, tokenRules, skipRules, states, algorithm, parserStateCount = 0, productions = [], actions = new Map(), gotos = new Map(), conflicts = [], astSchema = null, transformSchema = null) {
45
51
  this.grammarName = grammarName;
46
52
  this.startSymbol = startSymbol;
47
53
  this.tokens = tokens;
@@ -51,6 +57,8 @@ export class ParseTable {
51
57
  this.algorithm = algorithm;
52
58
  this.parserStateCount = parserStateCount;
53
59
  this.conflicts = conflicts;
60
+ this.astSchema = astSchema;
61
+ this.transformSchema = transformSchema;
54
62
  this.actionByState = actions;
55
63
  this.gotoByState = gotos;
56
64
  const productionById = new Map();
@@ -103,7 +111,13 @@ export class ParseTable {
103
111
  if (!isParseTableJsonV2(json)) {
104
112
  return new ParseTable(json.grammarName, json.startSymbol, [...json.tokens], [...json.tokenRules], [...json.skipRules], [...json.states], json.algorithm);
105
113
  }
106
- return new ParseTable(json.grammarName, json.startSymbol, [...json.tokens], [...json.tokenRules], [...json.skipRules], [...json.states], json.algorithm, json.parserStateCount, [...json.productions], ParseTable.actionsFromJson(json.actions), ParseTable.gotosFromJson(json.gotos));
114
+ const astSchema = json.ast === undefined
115
+ ? null
116
+ : new AstSchema([...json.ast]);
117
+ const transformSchema = json.transform === undefined
118
+ ? null
119
+ : new TransformSchema([...json.transform]);
120
+ return new ParseTable(json.grammarName, json.startSymbol, [...json.tokens], [...json.tokenRules], [...json.skipRules], [...json.states], json.algorithm, json.parserStateCount, [...json.productions], ParseTable.actionsFromJson(json.actions), ParseTable.gotosFromJson(json.gotos), [], astSchema, transformSchema);
107
121
  }
108
122
  /**
109
123
  * Parses a parse table from a JSON string.
@@ -161,16 +175,18 @@ export class ParseTable {
161
175
  productions: [...this.productionById.values()].sort((left, right) => left.id - right.id),
162
176
  actions: ParseTable.actionsToJson(this.actionByState),
163
177
  gotos: ParseTable.gotosToJson(this.gotoByState),
178
+ ...(this.astSchema === null ? {} : { ast: [...this.astSchema.types] }),
179
+ ...(this.transformSchema === null ? {} : { transform: [...this.transformSchema.rules] }),
164
180
  };
165
181
  return json;
166
182
  }
167
183
  /**
168
- * Builds a grammar containing lexer metadata from this table.
184
+ * Builds a grammar from this table, including AST and transform schemas when present.
169
185
  *
170
- * @returns A grammar suitable for lexing; productions are empty.
186
+ * @returns A grammar suitable for lexing and CST-to-AST transforms.
171
187
  */
172
188
  toGrammar() {
173
- return new Grammar(this.grammarName, this.tokenRules, this.skipRules, this.states, this.startSymbol, []);
189
+ return new Grammar(this.grammarName, this.tokenRules, this.skipRules, this.states, this.startSymbol, [], this.astSchema, this.transformSchema);
174
190
  }
175
191
  /**
176
192
  * Returns the ACTION entry for a parser state and terminal symbol key.
@@ -212,7 +228,7 @@ export class ParseTable {
212
228
  variant: production.variant,
213
229
  origin: production.origin,
214
230
  }));
215
- return new ParseTable(grammar.name, grammar.startSymbol, tokenInventory(grammar), [...grammar.tokenRules], [...grammar.skipRules], [...grammar.states], lrTable.algorithm, lrTable.stateCount, productions, lrTable.actions, lrTable.gotos, [...lrTable.conflicts]);
231
+ return new ParseTable(grammar.name, grammar.startSymbol, tokenInventory(grammar), [...grammar.tokenRules], [...grammar.skipRules], [...grammar.states], lrTable.algorithm, lrTable.stateCount, productions, lrTable.actions, lrTable.gotos, [...lrTable.conflicts], grammar.astSchema, grammar.transformSchema);
216
232
  }
217
233
  /**
218
234
  * Converts ACTION maps into JSON rows.
@@ -1 +1 @@
1
- {"version":3,"file":"parse-table.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-table.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"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"}
@@ -20,8 +20,8 @@ export declare class ParserLr {
20
20
  /**
21
21
  * Creates a parser from a serialized parse table.
22
22
  *
23
- * @param table - Parse table containing lexer metadata and parser entries.
24
- * @returns A parser that can lex and parse using the table.
23
+ * @param table - Parse table containing lexer metadata, parser entries, and optional AST transforms.
24
+ * @returns A parser that lexes, parses, and applies transforms from the table JSON.
25
25
  */
26
26
  static fromParseTable(table: ParseTable): ParserLr;
27
27
  /**
@@ -21,8 +21,8 @@ export class ParserLr {
21
21
  /**
22
22
  * Creates a parser from a serialized parse table.
23
23
  *
24
- * @param table - Parse table containing lexer metadata and parser entries.
25
- * @returns A parser that can lex and parse using the table.
24
+ * @param table - Parse table containing lexer metadata, parser entries, and optional AST transforms.
25
+ * @returns A parser that lexes, parses, and applies transforms from the table JSON.
26
26
  */
27
27
  static fromParseTable(table) {
28
28
  return new ParserLr(table.toGrammar(), table);
package/docs/grammar.md CHANGED
@@ -162,9 +162,9 @@ See [`grammars/calc.grammar`](../grammars/calc.grammar) for a small working gram
162
162
  ## Building and using a grammar
163
163
 
164
164
  ```bash
165
- parser-lr table generate -g mylang.grammar -o mylang.table.json
165
+ parser-lr table generate -g mylang.grammar -o mylang.json
166
166
  parser-lr parse -i source.txt -g mylang.grammar
167
- parser-lr parse -i source.txt -t mylang.table.json
167
+ parser-lr parse -i source.txt -t mylang.json
168
168
  ```
169
169
 
170
170
  See the [project README](../README.md) for install and library usage.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "parser-lr",
3
3
  "author": "Adam R Moss <adamrmoss@gmail.com>",
4
- "version": "0.3.1",
4
+ "version": "0.4.1",
5
5
  "description": "Shift-reduce parser library for EBNF grammars",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -38,7 +38,7 @@
38
38
  "registry": "https://registry.npmjs.org/"
39
39
  },
40
40
  "scripts": {
41
- "bootstrap": "npm link && parser-lr table generate -g grammars/grammar.grammar -o src/lib/grammar/grammar.json",
41
+ "bootstrap": "npm link && parser-lr table generate -g grammars/grammar.grammar -o src/lib/grammar/grammar.json -a lalr",
42
42
  "build": "npm run build:clean && npm run build:lib && npm run build:cli",
43
43
  "build:clean": "rm -rf dist && rm -f bin/parser-lr.js bin/parser-lr.js.map",
44
44
  "build:lib": "tsc -p tsconfig.lib.json && cp src/lib/grammar/grammar.json dist/lib/grammar/",