@echecs/pgn 3.0.18 → 3.1.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/dist/grammar.cjs CHANGED
@@ -3,386 +3,134 @@
3
3
  // http://github.com/Hardmath123/nearley
4
4
  (function () {
5
5
  function id(x) { return x[0]; }
6
+ const lexer = require('./lexer.ts').default;
6
7
  var grammar = {
7
- Lexer: undefined,
8
+ Lexer: lexer,
8
9
  ParserRules: [
9
- { "name": "unsigned_int$ebnf$1", "symbols": [/[0-9]/] },
10
- { "name": "unsigned_int$ebnf$1", "symbols": ["unsigned_int$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
11
- { "name": "unsigned_int", "symbols": ["unsigned_int$ebnf$1"], "postprocess": function (d) {
12
- return parseInt(d[0].join(""));
13
- }
14
- },
15
- { "name": "int$ebnf$1$subexpression$1", "symbols": [{ "literal": "-" }] },
16
- { "name": "int$ebnf$1$subexpression$1", "symbols": [{ "literal": "+" }] },
17
- { "name": "int$ebnf$1", "symbols": ["int$ebnf$1$subexpression$1"], "postprocess": id },
18
- { "name": "int$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
19
- { "name": "int$ebnf$2", "symbols": [/[0-9]/] },
20
- { "name": "int$ebnf$2", "symbols": ["int$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
21
- { "name": "int", "symbols": ["int$ebnf$1", "int$ebnf$2"], "postprocess": function (d) {
22
- if (d[0]) {
23
- return parseInt(d[0][0] + d[1].join(""));
10
+ { "name": "DATABASE$ebnf$1$subexpression$1", "symbols": [(lexer.has("__") ? { type: "__" } : __), "DATABASE"] },
11
+ { "name": "DATABASE$ebnf$1", "symbols": ["DATABASE$ebnf$1$subexpression$1"], "postprocess": id },
12
+ { "name": "DATABASE$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
13
+ { "name": "DATABASE", "symbols": ["GAME", "DATABASE$ebnf$1"], "postprocess": (d) => {
14
+ const games = [d[0]];
15
+ if (d[1]) {
16
+ games.push(...d[1][1]);
24
17
  }
25
- else {
26
- return parseInt(d[1].join(""));
18
+ return games;
19
+ }
20
+ },
21
+ { "name": "GAME", "symbols": ["TAGS", (lexer.has("__") ? { type: "__" } : __), "MOVES", (lexer.has("__") ? { type: "__" } : __), (lexer.has("result") ? { type: "result" } : result)], "postprocess": (d) => {
22
+ function pair(moves, start = 0) {
23
+ return moves.reduce((acc, move, i) => {
24
+ const color = (start + i) % 2 === 0 ? 'white' : 'black';
25
+ const index = Math.floor((start + i) / 2);
26
+ if (acc[index] === undefined) {
27
+ acc[index] = [index + 1, undefined];
28
+ }
29
+ if (move.number !== undefined && move.number.value !== index + 1) {
30
+ console.warn(`Warning: Move number mismatch - ${move.number.value} at line ${move.number.line} col ${move.number.col}`);
31
+ }
32
+ delete move.number;
33
+ if (move.castling) {
34
+ move.to = color === 'white' ? move.long ? 'c1' : 'g1' : move.long ? 'c8' : 'g8';
35
+ // Delete the temporary castling property
36
+ delete move.long;
37
+ }
38
+ if (move.variants) {
39
+ move.variants = move.variants.map((variant) => pair(variant, start + i));
40
+ }
41
+ acc[index][color === 'white' ? 1 : 2] = move;
42
+ return acc;
43
+ }, []).slice(Math.floor(start / 2));
27
44
  }
45
+ //return ({ meta: d[0], moves, result: String(d[4]) });
46
+ const result = d[4].value;
47
+ let mappedResult;
48
+ switch (result) {
49
+ case '1-0':
50
+ mappedResult = 1;
51
+ break;
52
+ case '0-1':
53
+ mappedResult = 0;
54
+ break;
55
+ case '1/2-1/2':
56
+ mappedResult = 0.5;
57
+ break;
58
+ default:
59
+ mappedResult = '?';
60
+ break;
61
+ }
62
+ return ({ meta: d[0], moves: pair(d[2]), result: mappedResult });
28
63
  }
29
64
  },
30
- { "name": "unsigned_decimal$ebnf$1", "symbols": [/[0-9]/] },
31
- { "name": "unsigned_decimal$ebnf$1", "symbols": ["unsigned_decimal$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
32
- { "name": "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", "symbols": [/[0-9]/] },
33
- { "name": "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", "symbols": ["unsigned_decimal$ebnf$2$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
34
- { "name": "unsigned_decimal$ebnf$2$subexpression$1", "symbols": [{ "literal": "." }, "unsigned_decimal$ebnf$2$subexpression$1$ebnf$1"] },
35
- { "name": "unsigned_decimal$ebnf$2", "symbols": ["unsigned_decimal$ebnf$2$subexpression$1"], "postprocess": id },
36
- { "name": "unsigned_decimal$ebnf$2", "symbols": [], "postprocess": function (d) { return null; } },
37
- { "name": "unsigned_decimal", "symbols": ["unsigned_decimal$ebnf$1", "unsigned_decimal$ebnf$2"], "postprocess": function (d) {
38
- return parseFloat(d[0].join("") +
39
- (d[1] ? "." + d[1][1].join("") : ""));
40
- }
41
- },
42
- { "name": "decimal$ebnf$1", "symbols": [{ "literal": "-" }], "postprocess": id },
43
- { "name": "decimal$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
44
- { "name": "decimal$ebnf$2", "symbols": [/[0-9]/] },
45
- { "name": "decimal$ebnf$2", "symbols": ["decimal$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
46
- { "name": "decimal$ebnf$3$subexpression$1$ebnf$1", "symbols": [/[0-9]/] },
47
- { "name": "decimal$ebnf$3$subexpression$1$ebnf$1", "symbols": ["decimal$ebnf$3$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
48
- { "name": "decimal$ebnf$3$subexpression$1", "symbols": [{ "literal": "." }, "decimal$ebnf$3$subexpression$1$ebnf$1"] },
49
- { "name": "decimal$ebnf$3", "symbols": ["decimal$ebnf$3$subexpression$1"], "postprocess": id },
50
- { "name": "decimal$ebnf$3", "symbols": [], "postprocess": function (d) { return null; } },
51
- { "name": "decimal", "symbols": ["decimal$ebnf$1", "decimal$ebnf$2", "decimal$ebnf$3"], "postprocess": function (d) {
52
- return parseFloat((d[0] || "") +
53
- d[1].join("") +
54
- (d[2] ? "." + d[2][1].join("") : ""));
55
- }
56
- },
57
- { "name": "percentage", "symbols": ["decimal", { "literal": "%" }], "postprocess": function (d) {
58
- return d[0] / 100;
59
- }
60
- },
61
- { "name": "jsonfloat$ebnf$1", "symbols": [{ "literal": "-" }], "postprocess": id },
62
- { "name": "jsonfloat$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
63
- { "name": "jsonfloat$ebnf$2", "symbols": [/[0-9]/] },
64
- { "name": "jsonfloat$ebnf$2", "symbols": ["jsonfloat$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
65
- { "name": "jsonfloat$ebnf$3$subexpression$1$ebnf$1", "symbols": [/[0-9]/] },
66
- { "name": "jsonfloat$ebnf$3$subexpression$1$ebnf$1", "symbols": ["jsonfloat$ebnf$3$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
67
- { "name": "jsonfloat$ebnf$3$subexpression$1", "symbols": [{ "literal": "." }, "jsonfloat$ebnf$3$subexpression$1$ebnf$1"] },
68
- { "name": "jsonfloat$ebnf$3", "symbols": ["jsonfloat$ebnf$3$subexpression$1"], "postprocess": id },
69
- { "name": "jsonfloat$ebnf$3", "symbols": [], "postprocess": function (d) { return null; } },
70
- { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "symbols": [/[+-]/], "postprocess": id },
71
- { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
72
- { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$2", "symbols": [/[0-9]/] },
73
- { "name": "jsonfloat$ebnf$4$subexpression$1$ebnf$2", "symbols": ["jsonfloat$ebnf$4$subexpression$1$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
74
- { "name": "jsonfloat$ebnf$4$subexpression$1", "symbols": [/[eE]/, "jsonfloat$ebnf$4$subexpression$1$ebnf$1", "jsonfloat$ebnf$4$subexpression$1$ebnf$2"] },
75
- { "name": "jsonfloat$ebnf$4", "symbols": ["jsonfloat$ebnf$4$subexpression$1"], "postprocess": id },
76
- { "name": "jsonfloat$ebnf$4", "symbols": [], "postprocess": function (d) { return null; } },
77
- { "name": "jsonfloat", "symbols": ["jsonfloat$ebnf$1", "jsonfloat$ebnf$2", "jsonfloat$ebnf$3", "jsonfloat$ebnf$4"], "postprocess": function (d) {
78
- return parseFloat((d[0] || "") +
79
- d[1].join("") +
80
- (d[2] ? "." + d[2][1].join("") : "") +
81
- (d[3] ? "e" + (d[3][1] || "+") + d[3][2].join("") : ""));
82
- }
83
- },
84
- { "name": "dqstring$ebnf$1", "symbols": [] },
85
- { "name": "dqstring$ebnf$1", "symbols": ["dqstring$ebnf$1", "dstrchar"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
86
- { "name": "dqstring", "symbols": [{ "literal": "\"" }, "dqstring$ebnf$1", { "literal": "\"" }], "postprocess": function (d) { return d[1].join(""); } },
87
- { "name": "sqstring$ebnf$1", "symbols": [] },
88
- { "name": "sqstring$ebnf$1", "symbols": ["sqstring$ebnf$1", "sstrchar"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
89
- { "name": "sqstring", "symbols": [{ "literal": "'" }, "sqstring$ebnf$1", { "literal": "'" }], "postprocess": function (d) { return d[1].join(""); } },
90
- { "name": "btstring$ebnf$1", "symbols": [] },
91
- { "name": "btstring$ebnf$1", "symbols": ["btstring$ebnf$1", /[^`]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
92
- { "name": "btstring", "symbols": [{ "literal": "`" }, "btstring$ebnf$1", { "literal": "`" }], "postprocess": function (d) { return d[1].join(""); } },
93
- { "name": "dstrchar", "symbols": [/[^\\"\n]/], "postprocess": id },
94
- { "name": "dstrchar", "symbols": [{ "literal": "\\" }, "strescape"], "postprocess": function (d) {
95
- return JSON.parse("\"" + d.join("") + "\"");
96
- }
97
- },
98
- { "name": "sstrchar", "symbols": [/[^\\'\n]/], "postprocess": id },
99
- { "name": "sstrchar", "symbols": [{ "literal": "\\" }, "strescape"], "postprocess": function (d) { return JSON.parse("\"" + d.join("") + "\""); } },
100
- { "name": "sstrchar$string$1", "symbols": [{ "literal": "\\" }, { "literal": "'" }], "postprocess": function joiner(d) { return d.join(''); } },
101
- { "name": "sstrchar", "symbols": ["sstrchar$string$1"], "postprocess": function (d) { return "'"; } },
102
- { "name": "strescape", "symbols": [/["\\/bfnrt]/], "postprocess": id },
103
- { "name": "strescape", "symbols": [{ "literal": "u" }, /[a-fA-F0-9]/, /[a-fA-F0-9]/, /[a-fA-F0-9]/, /[a-fA-F0-9]/], "postprocess": function (d) {
104
- return d.join("");
65
+ { "name": "TAGS$ebnf$1$subexpression$1", "symbols": [(lexer.has("__") ? { type: "__" } : __), "TAGS"] },
66
+ { "name": "TAGS$ebnf$1", "symbols": ["TAGS$ebnf$1$subexpression$1"], "postprocess": id },
67
+ { "name": "TAGS$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
68
+ { "name": "TAGS", "symbols": ["TAG", "TAGS$ebnf$1"], "postprocess": (d) => {
69
+ const tag = d[0];
70
+ const rest = d[1] ? d[1][1] : {};
71
+ return { ...tag, ...rest };
105
72
  }
106
73
  },
107
- { "name": "_$ebnf$1", "symbols": [] },
108
- { "name": "_$ebnf$1", "symbols": ["_$ebnf$1", "wschar"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
109
- { "name": "_", "symbols": ["_$ebnf$1"], "postprocess": function (d) { return null; } },
110
- { "name": "__$ebnf$1", "symbols": ["wschar"] },
111
- { "name": "__$ebnf$1", "symbols": ["__$ebnf$1", "wschar"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
112
- { "name": "__", "symbols": ["__$ebnf$1"], "postprocess": function (d) { return null; } },
113
- { "name": "wschar", "symbols": [/[ \t\n\v\f]/], "postprocess": id },
114
- { "name": "DATABASE$ebnf$1", "symbols": ["GAME"] },
115
- { "name": "DATABASE$ebnf$1", "symbols": ["DATABASE$ebnf$1", "GAME"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
116
- { "name": "DATABASE", "symbols": ["DATABASE$ebnf$1"], "postprocess": id },
117
- { "name": "GAME", "symbols": ["TAGS", "MOVES", "__", "result", "__"], "postprocess": (d) => ({ meta: d[0], moves: d[1], result: d[3] })
74
+ { "name": "TAG", "symbols": [{ "literal": "[" }, (lexer.has("identifier") ? { type: "identifier" } : identifier), (lexer.has("__") ? { type: "__" } : __), (lexer.has("value") ? { type: "value" } : value), { "literal": "]" }], "postprocess": (d) => ({ [d[1].value]: d[3].value })
118
75
  },
119
- { "name": "TAGS$ebnf$1$subexpression$1", "symbols": ["TAG", "__"] },
120
- { "name": "TAGS$ebnf$1", "symbols": ["TAGS$ebnf$1$subexpression$1"] },
121
- { "name": "TAGS$ebnf$1$subexpression$2", "symbols": ["TAG", "__"] },
122
- { "name": "TAGS$ebnf$1", "symbols": ["TAGS$ebnf$1", "TAGS$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
123
- { "name": "TAGS", "symbols": ["TAGS$ebnf$1"], "postprocess": (d) => d[0].map(d0 => d0[0]).reduce((acc, item) => ({ ...acc, ...item }), {}) },
124
- { "name": "TAG", "symbols": [{ "literal": "[" }, "NAME", "__", "VALUE", { "literal": "]" }], "postprocess": (d) => ({ [d[1]]: d[3] }) },
125
- { "name": "NAME", "symbols": ["string"] },
126
- { "name": "VALUE", "symbols": ["dqstring"], "postprocess": id },
127
76
  { "name": "MOVES$ebnf$1", "symbols": [] },
128
- { "name": "MOVES$ebnf$1$subexpression$1", "symbols": ["_", "MOVE"] },
77
+ { "name": "MOVES$ebnf$1$subexpression$1$ebnf$1", "symbols": [(lexer.has("__") ? { type: "__" } : __)], "postprocess": id },
78
+ { "name": "MOVES$ebnf$1$subexpression$1$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
79
+ { "name": "MOVES$ebnf$1$subexpression$1", "symbols": ["MOVES$ebnf$1$subexpression$1$ebnf$1", "RAV"] },
129
80
  { "name": "MOVES$ebnf$1", "symbols": ["MOVES$ebnf$1", "MOVES$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
130
- { "name": "MOVES$ebnf$2$subexpression$1", "symbols": ["_", "HM"] },
81
+ { "name": "MOVES$ebnf$2$subexpression$1", "symbols": [(lexer.has("__") ? { type: "__" } : __), "MOVES"] },
131
82
  { "name": "MOVES$ebnf$2", "symbols": ["MOVES$ebnf$2$subexpression$1"], "postprocess": id },
132
83
  { "name": "MOVES$ebnf$2", "symbols": [], "postprocess": function (d) { return null; } },
133
84
  { "name": "MOVES", "symbols": ["MOVE", "MOVES$ebnf$1", "MOVES$ebnf$2"], "postprocess": (d) => {
134
- const moves = [d[0]];
85
+ let moves = [d[0]];
135
86
  if (d[1].length > 0) {
136
- const d1 = d[1];
137
- moves.push(...d1.map(d => d[1]));
138
- }
139
- if (d[2]) {
140
- const d2 = d[2];
141
- moves.push(d2[1]);
87
+ moves[0].variants = d[1].map(d1 => d1[1]);
142
88
  }
143
- return moves;
144
- }
145
- },
146
- { "name": "MOVES", "symbols": ["HM"], "postprocess": d => [d[0]] },
147
- { "name": "MOVES_BLACK$ebnf$1", "symbols": ["MOVES"], "postprocess": id },
148
- { "name": "MOVES_BLACK$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
149
- { "name": "MOVES_BLACK", "symbols": ["HM_BLACK", "_", "MOVES_BLACK$ebnf$1"], "postprocess": (d) => {
150
- const moves = [d[0]];
151
89
  if (d[2]) {
152
- moves.push(...d[2]);
90
+ moves.push(...d[2][1]);
153
91
  }
154
92
  return moves;
155
93
  }
156
94
  },
157
- { "name": "HM$ebnf$1", "symbols": [] },
158
- { "name": "HM$ebnf$1$subexpression$1", "symbols": ["_", "RAV"] },
159
- { "name": "HM$ebnf$1", "symbols": ["HM$ebnf$1", "HM$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
160
- { "name": "HM", "symbols": ["NUMBER", "_", "SAN", "HM$ebnf$1"], "postprocess": (d) => {
161
- const move = [d[0], { ...d[2], ...(d[3].length > 0 && { variants: d[3].map(d3 => d3[1]) }), }];
162
- if (move[1].castling) {
163
- move[1].to = move[1].castling === 'K' ? 'g1' : 'c1';
164
- move[1].castling = true;
165
- }
166
- return move;
167
- }
168
- },
169
- { "name": "HM_BLACK$ebnf$1", "symbols": [] },
170
- { "name": "HM_BLACK$ebnf$1$subexpression$1", "symbols": ["_", "RAV_BLACK"] },
171
- { "name": "HM_BLACK$ebnf$1", "symbols": ["HM_BLACK$ebnf$1", "HM_BLACK$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
172
- { "name": "HM_BLACK", "symbols": ["_", "NUMBER", "continuation", "_", "SAN", "HM_BLACK$ebnf$1"], "postprocess": (d) => {
173
- const move = [d[1], undefined, { ...d[4], ...(d[5].length > 0 && { variants: d[5].map(d5 => d5[1]) }) }];
174
- if (move[2].castling) {
175
- move[2].to = move[2].castling === 'K' ? 'g8' : 'c8';
176
- move[2].castling = true;
177
- }
178
- return move;
179
- }
180
- },
181
- { "name": "MOVE$ebnf$1", "symbols": [] },
182
- { "name": "MOVE$ebnf$1$subexpression$1", "symbols": ["_", "RAV"] },
183
- { "name": "MOVE$ebnf$1", "symbols": ["MOVE$ebnf$1", "MOVE$ebnf$1$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
184
- { "name": "MOVE$ebnf$2", "symbols": [] },
185
- { "name": "MOVE$ebnf$2$subexpression$1", "symbols": ["_", "RAV_BLACK"] },
186
- { "name": "MOVE$ebnf$2", "symbols": ["MOVE$ebnf$2", "MOVE$ebnf$2$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
187
- { "name": "MOVE", "symbols": ["NUMBER", "_", "SAN", "MOVE$ebnf$1", "__", "SAN", "MOVE$ebnf$2"], "postprocess": (d) => {
188
- const move = [d[0], d[2], d[5]];
189
- if (move[1].castling) {
190
- move[1].to = move[1].castling === 'K' ? 'g1' : 'c1';
191
- move[1].castling = true;
192
- }
193
- if (move[2].castling) {
194
- move[2].to = move[2].castling === 'K' ? 'g8' : 'c8';
195
- move[2].castling = true;
196
- }
197
- if (d[3].length > 0) {
198
- const variants = d[3].map(d3 => d3[1]);
199
- move[1].variants = variants;
200
- }
201
- if (d[6].length > 0) {
202
- const variants = d[6].map(d6 => d6[1]);
203
- move[2].variants = variants;
204
- }
205
- return move;
206
- }
207
- },
208
- { "name": "MOVE$ebnf$3$subexpression$1", "symbols": ["_", "RAV"] },
209
- { "name": "MOVE$ebnf$3", "symbols": ["MOVE$ebnf$3$subexpression$1"] },
210
- { "name": "MOVE$ebnf$3$subexpression$2", "symbols": ["_", "RAV"] },
211
- { "name": "MOVE$ebnf$3", "symbols": ["MOVE$ebnf$3", "MOVE$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
212
- { "name": "MOVE", "symbols": ["NUMBER", "_", "SAN", "MOVE$ebnf$3", "__", "HM_BLACK"], "postprocess": (d) => {
213
- const move = [d[0], d[2], d[5]];
214
- if (move[1].castling) {
215
- move[1].to = move[1].castling === 'K' ? 'g1' : 'c1';
216
- move[1].castling = true;
217
- }
218
- if (move[2].castling) {
219
- move[2].to = move[2].castling === 'K' ? 'g8' : 'c8';
220
- move[2].castling = true;
221
- }
222
- if (d[3].length > 0) {
223
- const variants = d[3].map(d3 => d3[1]);
224
- move[1].variants = variants;
225
- }
226
- return move;
227
- }
228
- },
229
- { "name": "NUMBER$ebnf$1", "symbols": [{ "literal": "." }], "postprocess": id },
230
- { "name": "NUMBER$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
231
- { "name": "NUMBER", "symbols": ["unsigned_int", "NUMBER$ebnf$1"], "postprocess": (d) => d[0] },
232
- { "name": "RAV", "symbols": [{ "literal": "(" }, "MOVES", { "literal": ")" }], "postprocess": (d) => d[1]
233
- },
234
- { "name": "RAV_BLACK", "symbols": [{ "literal": "(" }, "MOVES_BLACK", { "literal": ")" }], "postprocess": (d) => d[1]
235
- },
236
- { "name": "SAN$ebnf$1", "symbols": ["piece"], "postprocess": id },
237
- { "name": "SAN$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
238
- { "name": "SAN$ebnf$2", "symbols": ["DISAMBIGUATION"], "postprocess": id },
239
- { "name": "SAN$ebnf$2", "symbols": [], "postprocess": function (d) { return null; } },
240
- { "name": "SAN$ebnf$3", "symbols": ["capture"], "postprocess": id },
241
- { "name": "SAN$ebnf$3", "symbols": [], "postprocess": function (d) { return null; } },
242
- { "name": "SAN$ebnf$4", "symbols": ["PROMOTION"], "postprocess": id },
243
- { "name": "SAN$ebnf$4", "symbols": [], "postprocess": function (d) { return null; } },
244
- { "name": "SAN$ebnf$5$subexpression$1", "symbols": ["_", "SUFFIX"] },
245
- { "name": "SAN$ebnf$5", "symbols": ["SAN$ebnf$5$subexpression$1"], "postprocess": id },
246
- { "name": "SAN$ebnf$5", "symbols": [], "postprocess": function (d) { return null; } },
247
- { "name": "SAN$ebnf$6", "symbols": [] },
248
- { "name": "SAN$ebnf$6$subexpression$1", "symbols": ["_", "COMMENT"] },
249
- { "name": "SAN$ebnf$6", "symbols": ["SAN$ebnf$6", "SAN$ebnf$6$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
250
- { "name": "SAN", "symbols": ["SAN$ebnf$1", "SAN$ebnf$2", "SAN$ebnf$3", "file", "rank", "SAN$ebnf$4", "SAN$ebnf$5", "SAN$ebnf$6"], "postprocess": (d) => {
251
- const comments = d[7].map(d7 => d7[1]).filter(Boolean);
252
- return ({
253
- ...(d[6] && d[6][1]),
254
- ...(comments.length > 0 && { comment: comments.reduce((acc, item) => `${acc} ${item}`, '') }),
255
- ...(d[2] && { capture: true }),
256
- ...(d[1] && { from: d[1][0] }),
257
- piece: d[0] ? d[0][0] : 'P',
258
- ...(d[5] && { promotion: d[5] }),
259
- to: `${d[3]}${d[4]}`,
260
- });
261
- }
262
- },
263
- { "name": "SAN$ebnf$7", "symbols": [] },
264
- { "name": "SAN$ebnf$7$subexpression$1", "symbols": ["_", "SUFFIX"] },
265
- { "name": "SAN$ebnf$7", "symbols": ["SAN$ebnf$7", "SAN$ebnf$7$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
266
- { "name": "SAN$ebnf$8", "symbols": [] },
267
- { "name": "SAN$ebnf$8$subexpression$1", "symbols": ["_", "COMMENT"] },
268
- { "name": "SAN$ebnf$8", "symbols": ["SAN$ebnf$8", "SAN$ebnf$8$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
269
- { "name": "SAN", "symbols": ["castling", "SAN$ebnf$7", "SAN$ebnf$8"], "postprocess": (d) => {
270
- const comments = d[2].map(d2 => d2[1]).filter(Boolean);
271
- return ({
272
- ...(d[1]),
273
- ...(comments.length > 0 && { comment: comments.reduce((acc, item) => `${acc} ${item}`, '') }),
274
- castling: d[0],
275
- piece: 'K'
276
- });
277
- }
278
- },
279
- { "name": "DISAMBIGUATION", "symbols": ["file"], "postprocess": id },
280
- { "name": "DISAMBIGUATION", "symbols": ["rank"], "postprocess": id },
281
- { "name": "DISAMBIGUATION", "symbols": ["SQUARE"], "postprocess": id },
282
- { "name": "SQUARE", "symbols": ["file", "rank"], "postprocess": (d) => `${d[0]}${d[1]}` },
283
- { "name": "PROMOTION", "symbols": [{ "literal": "=" }, /[QBNR]/], "postprocess": (d) => d[1] },
284
- { "name": "SUFFIX$subexpression$1", "symbols": ["check"] },
285
- { "name": "SUFFIX$subexpression$1", "symbols": ["checkmate"] },
286
- { "name": "SUFFIX$ebnf$1", "symbols": ["annotation"], "postprocess": id },
287
- { "name": "SUFFIX$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
288
- { "name": "SUFFIX$ebnf$2", "symbols": [] },
289
- { "name": "SUFFIX$ebnf$2$subexpression$1", "symbols": ["_", "NAG"] },
290
- { "name": "SUFFIX$ebnf$2", "symbols": ["SUFFIX$ebnf$2", "SUFFIX$ebnf$2$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
291
- { "name": "SUFFIX", "symbols": ["SUFFIX$subexpression$1", "SUFFIX$ebnf$1", "SUFFIX$ebnf$2"], "postprocess": (d) => ({
292
- ...(d[0] && { [d[0]]: true }),
293
- ...((d[1] || d[2].length > 0) && { annotations: [...(d[1] ? [d[1]] : []), ...d[2].map(d2 => d2[1])] }),
294
- })
295
- },
296
- { "name": "SUFFIX$ebnf$3$subexpression$1", "symbols": ["check"] },
297
- { "name": "SUFFIX$ebnf$3$subexpression$1", "symbols": ["checkmate"] },
298
- { "name": "SUFFIX$ebnf$3", "symbols": ["SUFFIX$ebnf$3$subexpression$1"], "postprocess": id },
299
- { "name": "SUFFIX$ebnf$3", "symbols": [], "postprocess": function (d) { return null; } },
300
- { "name": "SUFFIX$ebnf$4", "symbols": [] },
301
- { "name": "SUFFIX$ebnf$4$subexpression$1", "symbols": ["_", "NAG"] },
302
- { "name": "SUFFIX$ebnf$4", "symbols": ["SUFFIX$ebnf$4", "SUFFIX$ebnf$4$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
303
- { "name": "SUFFIX", "symbols": ["SUFFIX$ebnf$3", "annotation", "SUFFIX$ebnf$4"], "postprocess": (d) => ({
304
- ...(d[0] && { [d[0]]: true }),
305
- ...((d[1] || d[2].length > 0) && { annotations: [...(d[1] ? [d[1]] : []), ...d[2].map(d2 => d2[1])] }),
306
- })
307
- },
308
- { "name": "SUFFIX$ebnf$5$subexpression$1", "symbols": ["check"] },
309
- { "name": "SUFFIX$ebnf$5$subexpression$1", "symbols": ["checkmate"] },
310
- { "name": "SUFFIX$ebnf$5", "symbols": ["SUFFIX$ebnf$5$subexpression$1"], "postprocess": id },
311
- { "name": "SUFFIX$ebnf$5", "symbols": [], "postprocess": function (d) { return null; } },
312
- { "name": "SUFFIX$ebnf$6", "symbols": ["annotation"], "postprocess": id },
313
- { "name": "SUFFIX$ebnf$6", "symbols": [], "postprocess": function (d) { return null; } },
314
- { "name": "SUFFIX$ebnf$7$subexpression$1", "symbols": ["_", "NAG"] },
315
- { "name": "SUFFIX$ebnf$7", "symbols": ["SUFFIX$ebnf$7$subexpression$1"] },
316
- { "name": "SUFFIX$ebnf$7$subexpression$2", "symbols": ["_", "NAG"] },
317
- { "name": "SUFFIX$ebnf$7", "symbols": ["SUFFIX$ebnf$7", "SUFFIX$ebnf$7$subexpression$2"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
318
- { "name": "SUFFIX", "symbols": ["SUFFIX$ebnf$5", "SUFFIX$ebnf$6", "SUFFIX$ebnf$7"], "postprocess": (d) => ({
319
- ...(d[0] && { [d[0]]: true }),
320
- ...((d[1] || d[2].length > 0) && { annotations: [...(d[1] ? [d[1]] : []), ...d[2].map(d2 => d2[1])] }),
321
- })
322
- },
323
- { "name": "NAG$subexpression$1$string$1", "symbols": [{ "literal": "2" }, { "literal": "5" }], "postprocess": function joiner(d) { return d.join(''); } },
324
- { "name": "NAG$subexpression$1", "symbols": ["NAG$subexpression$1$string$1", /[0-5]/] },
325
- { "name": "NAG$subexpression$1", "symbols": [{ "literal": "2" }, /[0-4]/, /[0-9]/] },
326
- { "name": "NAG$subexpression$1", "symbols": [{ "literal": "1" }, /[0-9]/, /[0-9]/] },
327
- { "name": "NAG$subexpression$1", "symbols": [/[1-9]/, /[0-9]/] },
328
- { "name": "NAG$subexpression$1", "symbols": [/[0-9]/] },
329
- { "name": "NAG", "symbols": [{ "literal": "$" }, "NAG$subexpression$1"], "postprocess": (d) => d[1]
330
- },
331
- { "name": "COMMENT", "symbols": ["bstring"] },
332
- { "name": "COMMENT$ebnf$1", "symbols": [] },
333
- { "name": "COMMENT$ebnf$1", "symbols": ["COMMENT$ebnf$1", /[^\n]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
334
- { "name": "COMMENT", "symbols": [{ "literal": ";" }, "COMMENT$ebnf$1"] },
335
- { "name": "annotation$string$1", "symbols": [{ "literal": "!" }, { "literal": "!" }], "postprocess": function joiner(d) { return d.join(''); } },
336
- { "name": "annotation", "symbols": ["annotation$string$1"], "postprocess": id },
337
- { "name": "annotation", "symbols": [{ "literal": "!" }], "postprocess": id },
338
- { "name": "annotation$string$2", "symbols": [{ "literal": "!" }, { "literal": "?" }], "postprocess": function joiner(d) { return d.join(''); } },
339
- { "name": "annotation", "symbols": ["annotation$string$2"], "postprocess": id },
340
- { "name": "annotation$string$3", "symbols": [{ "literal": "?" }, { "literal": "!" }], "postprocess": function joiner(d) { return d.join(''); } },
341
- { "name": "annotation", "symbols": ["annotation$string$3"], "postprocess": id },
342
- { "name": "annotation", "symbols": [{ "literal": "?" }], "postprocess": id },
343
- { "name": "annotation$string$4", "symbols": [{ "literal": "?" }, { "literal": "?" }], "postprocess": function joiner(d) { return d.join(''); } },
344
- { "name": "annotation", "symbols": ["annotation$string$4"], "postprocess": id },
345
- { "name": "annotation$string$5", "symbols": [{ "literal": "+" }, { "literal": "-" }], "postprocess": function joiner(d) { return d.join(''); } },
346
- { "name": "annotation", "symbols": ["annotation$string$5"], "postprocess": id },
347
- { "name": "annotation$string$6", "symbols": [{ "literal": "-" }, { "literal": "+" }], "postprocess": function joiner(d) { return d.join(''); } },
348
- { "name": "annotation", "symbols": ["annotation$string$6"], "postprocess": id },
349
- { "name": "annotation", "symbols": [{ "literal": "=" }], "postprocess": id },
350
- { "name": "annotation$string$7", "symbols": [{ "literal": "?" }, { "literal": "!" }], "postprocess": function joiner(d) { return d.join(''); } },
351
- { "name": "annotation", "symbols": ["annotation$string$7"], "postprocess": id },
352
- { "name": "annotation", "symbols": [{ "literal": "?" }], "postprocess": id },
353
- { "name": "annotation$string$8", "symbols": [{ "literal": "?" }, { "literal": "?" }], "postprocess": function joiner(d) { return d.join(''); } },
354
- { "name": "annotation", "symbols": ["annotation$string$8"], "postprocess": id },
355
- { "name": "annotation", "symbols": [{ "literal": "±" }], "postprocess": id },
356
- { "name": "annotation", "symbols": [{ "literal": "∓" }], "postprocess": id },
357
- { "name": "annotation", "symbols": [{ "literal": "∞" }], "postprocess": id },
358
- { "name": "annotation", "symbols": [{ "literal": "⨀" }], "postprocess": id },
359
- { "name": "annotation", "symbols": [{ "literal": "⩱" }], "postprocess": id },
360
- { "name": "annotation", "symbols": [{ "literal": "⩲" }], "postprocess": id },
361
- { "name": "check", "symbols": [{ "literal": "+" }], "postprocess": () => 'check' },
362
- { "name": "checkmate", "symbols": [{ "literal": "#" }], "postprocess": () => 'checkmate' },
363
- { "name": "bstring$ebnf$1", "symbols": [] },
364
- { "name": "bstring$ebnf$1", "symbols": ["bstring$ebnf$1", /[^}]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
365
- { "name": "bstring", "symbols": [{ "literal": "{" }, "bstring$ebnf$1", { "literal": "}" }], "postprocess": (d) => d[1].join('') },
366
- { "name": "capture", "symbols": [{ "literal": "x" }] },
367
- { "name": "castling$string$1", "symbols": [{ "literal": "O" }, { "literal": "-" }, { "literal": "O" }], "postprocess": function joiner(d) { return d.join(''); } },
368
- { "name": "castling", "symbols": ["castling$string$1"], "postprocess": () => 'K' },
369
- { "name": "castling$string$2", "symbols": [{ "literal": "O" }, { "literal": "-" }, { "literal": "O" }, { "literal": "-" }, { "literal": "O" }], "postprocess": function joiner(d) { return d.join(''); } },
370
- { "name": "castling", "symbols": ["castling$string$2"], "postprocess": () => 'Q' },
371
- { "name": "continuation$string$1", "symbols": [{ "literal": "." }, { "literal": "." }, { "literal": "." }], "postprocess": function joiner(d) { return d.join(''); } },
372
- { "name": "continuation", "symbols": ["continuation$string$1"] },
373
- { "name": "file", "symbols": [/[a-h]/] },
374
- { "name": "piece", "symbols": [/[KQBNR]/] },
375
- { "name": "rank", "symbols": [/[1-8]/] },
376
- { "name": "result$string$1", "symbols": [{ "literal": "1" }, { "literal": "-" }, { "literal": "0" }], "postprocess": function joiner(d) { return d.join(''); } },
377
- { "name": "result", "symbols": ["result$string$1"], "postprocess": () => 1 },
378
- { "name": "result$string$2", "symbols": [{ "literal": "0" }, { "literal": "-" }, { "literal": "1" }], "postprocess": function joiner(d) { return d.join(''); } },
379
- { "name": "result", "symbols": ["result$string$2"], "postprocess": () => 0 },
380
- { "name": "result$string$3", "symbols": [{ "literal": "1" }, { "literal": "/" }, { "literal": "2" }, { "literal": "-" }, { "literal": "1" }, { "literal": "/" }, { "literal": "2" }], "postprocess": function joiner(d) { return d.join(''); } },
381
- { "name": "result", "symbols": ["result$string$3"], "postprocess": () => 0.5 },
382
- { "name": "result", "symbols": [{ "literal": "*" }], "postprocess": () => '?' },
383
- { "name": "string$ebnf$1", "symbols": [/[^\s]/] },
384
- { "name": "string$ebnf$1", "symbols": ["string$ebnf$1", /[^\s]/], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
385
- { "name": "string", "symbols": ["string$ebnf$1"], "postprocess": (d) => d[0].join('') }
95
+ { "name": "MOVE$ebnf$1", "symbols": [(lexer.has("number") ? { type: "number" } : number)], "postprocess": id },
96
+ { "name": "MOVE$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
97
+ { "name": "MOVE$ebnf$2", "symbols": [(lexer.has("__") ? { type: "__" } : __)], "postprocess": id },
98
+ { "name": "MOVE$ebnf$2", "symbols": [], "postprocess": function (d) { return null; } },
99
+ { "name": "MOVE$ebnf$3", "symbols": [] },
100
+ { "name": "MOVE$ebnf$3$subexpression$1$ebnf$1", "symbols": [(lexer.has("__") ? { type: "__" } : __)], "postprocess": id },
101
+ { "name": "MOVE$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
102
+ { "name": "MOVE$ebnf$3$subexpression$1", "symbols": ["MOVE$ebnf$3$subexpression$1$ebnf$1", "NAG"] },
103
+ { "name": "MOVE$ebnf$3", "symbols": ["MOVE$ebnf$3", "MOVE$ebnf$3$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
104
+ { "name": "MOVE$ebnf$4", "symbols": [] },
105
+ { "name": "MOVE$ebnf$4$subexpression$1$ebnf$1", "symbols": [(lexer.has("__") ? { type: "__" } : __)], "postprocess": id },
106
+ { "name": "MOVE$ebnf$4$subexpression$1$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
107
+ { "name": "MOVE$ebnf$4$subexpression$1", "symbols": ["MOVE$ebnf$4$subexpression$1$ebnf$1", "COMMENT"] },
108
+ { "name": "MOVE$ebnf$4", "symbols": ["MOVE$ebnf$4", "MOVE$ebnf$4$subexpression$1"], "postprocess": function arrpush(d) { return d[0].concat([d[1]]); } },
109
+ { "name": "MOVE", "symbols": ["MOVE$ebnf$1", "MOVE$ebnf$2", (lexer.has("san") ? { type: "san" } : san), "MOVE$ebnf$3", "MOVE$ebnf$4"], "postprocess": (d) => {
110
+ // We keep the token for number so we can warn about mismatches. Not really
111
+ // useful as numbers could be out of order.
112
+ const number = d[0] ?? undefined;
113
+ const annotations = d[3].map(d3 => d3[1]);
114
+ const comments = d[4].map(d4 => d4[1]).filter(Boolean);
115
+ const san = d[2].value;
116
+ return {
117
+ number,
118
+ ...(annotations.length > 0 && { annotations }),
119
+ ...(comments.length > 0 && { comment: comments.join(' ').replace(/\n/g, '') }),
120
+ ...san,
121
+ };
122
+ }
123
+ },
124
+ { "name": "RAV$ebnf$1", "symbols": [(lexer.has("__") ? { type: "__" } : __)], "postprocess": id },
125
+ { "name": "RAV$ebnf$1", "symbols": [], "postprocess": function (d) { return null; } },
126
+ { "name": "RAV$ebnf$2", "symbols": [(lexer.has("__") ? { type: "__" } : __)], "postprocess": id },
127
+ { "name": "RAV$ebnf$2", "symbols": [], "postprocess": function (d) { return null; } },
128
+ { "name": "RAV", "symbols": [{ "literal": "(" }, "RAV$ebnf$1", "MOVES", "RAV$ebnf$2", { "literal": ")" }], "postprocess": (d) => d[2]
129
+ },
130
+ { "name": "NAG", "symbols": [(lexer.has("nag_import") ? { type: "nag_import" } : nag_import)], "postprocess": (d) => d[0].value },
131
+ { "name": "NAG", "symbols": [(lexer.has("nag_export") ? { type: "nag_export" } : nag_export)], "postprocess": id },
132
+ { "name": "COMMENT", "symbols": [(lexer.has("comment_line") ? { type: "comment_line" } : comment_line)] },
133
+ { "name": "COMMENT", "symbols": [(lexer.has("comment_multiline") ? { type: "comment_multiline" } : comment_multiline)] }
386
134
  ],
387
135
  ParserStart: "DATABASE"
388
136
  };
@@ -1 +1 @@
1
- {"version":3,"file":"grammar.cjs","sourceRoot":"","sources":["../src/grammar.cjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grammar.cjs","sourceRoot":"","sources":["../src/grammar.cjs"],"names":[],"mappings":"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"}
@@ -1,35 +1,13 @@
1
- export let Lexer: undefined;
2
- export let ParserRules: ({
1
+ import lexer_1 = require("./lexer.ts");
2
+ import lexer = lexer_1.default;
3
+ export { lexer as Lexer };
4
+ export declare let ParserRules: ({
3
5
  name: string;
4
- symbols: (string | RegExp)[];
5
- postprocess: (d: any) => any;
6
- } | {
7
- name: string;
8
- symbols: (string | {
9
- literal: string;
10
- })[];
11
- postprocess?: undefined;
12
- } | {
13
- name: string;
14
- symbols: (string | RegExp)[];
6
+ symbols: any[];
15
7
  postprocess?: undefined;
16
8
  } | {
17
9
  name: string;
18
- symbols: (string | {
19
- literal: string;
20
- })[];
21
- postprocess: (d: any) => any;
22
- } | {
23
- name: string;
24
- symbols: (RegExp | {
25
- literal: string;
26
- })[];
27
- postprocess: (d: any) => any;
28
- } | {
29
- name: string;
30
- symbols: (RegExp | {
31
- literal: string;
32
- })[];
33
- postprocess?: undefined;
10
+ symbols: any[];
11
+ postprocess: (x: any) => any;
34
12
  })[];
35
- export let ParserStart: string;
13
+ export declare let ParserStart: string;
package/dist/index.js CHANGED
@@ -3,13 +3,19 @@ import grammar from './grammar.cjs';
3
3
  // It's a CJS module and cannot compile with that
4
4
  // eslint-disable-next-line import-x/no-named-as-default-member
5
5
  const { Grammar, Parser } = nearley;
6
- function tokenize(input) {
6
+ function _(input) {
7
+ // @ts-expect-error Mismatching types
7
8
  const parser = new Parser(Grammar.fromCompiled(grammar));
8
- parser.feed(input);
9
- if (parser.results.length > 1) {
10
- throw new Error(`@echecs/parser: Ambiguous syntax. Found ${parser.results.length} results`);
9
+ try {
10
+ parser.feed(input);
11
+ if (parser.results.length > 1) {
12
+ throw new Error(`@echecs/parser: Ambiguous syntax. Found ${parser.results.length} results`);
13
+ }
14
+ return parser.results[0];
15
+ }
16
+ catch {
17
+ return [];
11
18
  }
12
- return parser.results[0];
13
19
  }
14
20
  /**
15
21
  * Parse a PGN string into an array of games
@@ -17,7 +23,17 @@ function tokenize(input) {
17
23
  * @param input
18
24
  */
19
25
  export default function parse(input) {
20
- const games = input.replace(/[\r\uFEFF]/g, '');
21
- return tokenize(games);
26
+ /**
27
+ * Syntax does not allow empty lines at the beginning or end of the PGN string.
28
+ */
29
+ const cleaned = input.replace(/^\s+|\s+$/g, '');
30
+ /**
31
+ * Split the PGN because nearly/moo has a problem with big files. Beyond the
32
+ * buffer size, the lexer will not work properly because is not feed with entire
33
+ * tokens.
34
+ */
35
+ const games = cleaned.split(/(?<=1-0|0-1|1\/2-1\/2|\*(?!"))(\s+)\n/g);
36
+ // Parse each game independently
37
+ return games.map(_).flat();
22
38
  }
23
39
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,OAAO,MAAM,eAAe,CAAC;AAsCpC,iDAAiD;AACjD,+DAA+D;AAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AAEpC,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAEzD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEnB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,2CAA2C,MAAM,CAAC,OAAO,CAAC,MAAM,UAAU,CAC3E,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAU,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAa;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAE/C,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,OAAO,MAAM,eAAe,CAAC;AAsCpC,iDAAiD;AACjD,+DAA+D;AAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AAEpC,SAAS,CAAC,CAAC,KAAa;IACtB,qCAAqC;IACrC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,2CAA2C,MAAM,CAAC,OAAO,CAAC,MAAM,UAAU,CAC3E,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAU,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAa;IACzC;;OAEG;IACH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEhD;;;;OAIG;IACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAEtE,gCAAgC;IAChC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import moo from 'moo';
2
+ declare const lexer: moo.Lexer;
3
+ export default lexer;
package/dist/lexer.js ADDED
@@ -0,0 +1,94 @@
1
+ /* eslint-disable sort-keys */
2
+ import moo from 'moo';
3
+ function pickBy(object, predicate) {
4
+ return Object.fromEntries(Object.entries(object).filter(([key, value]) => predicate(value, key)));
5
+ }
6
+ // eslint-disable-next-line import-x/no-named-as-default-member
7
+ const lexer = moo.states({
8
+ main: {
9
+ __: { lineBreaks: true, match: /\s+/ },
10
+ comment_line: { match: /;.*$/, value: (s) => s.slice(1).trim() },
11
+ comment_multiline: {
12
+ lineBreaks: true,
13
+ match: /{[^}]*}/,
14
+ value: (s) => s
15
+ .slice(1, -1)
16
+ .replace(/[\n\t]/g, ' ')
17
+ .trim(),
18
+ },
19
+ escape: /^%.*$/,
20
+ // --- TAG ---
21
+ lbracket: { match: '[', push: 'tag' },
22
+ rbracket: { match: ']', pop: 1 },
23
+ // --- RESULT ---
24
+ result: ['1-0', '0-1', '1/2-1/2', '*'],
25
+ // --- MOVE ---
26
+ // https://regex101.com/r/zwTzNe/1
27
+ san: {
28
+ // @ts-expect-error Mismatching types
29
+ match: /(?:[KQBNPR]?[a-h]?[1-8]?x?[a-h][1-8]|O-O-O|O-O)(?:=[NBRQ])?[+#]?/,
30
+ value: (s) => {
31
+ if (['O-O', 'O-O-O'].includes(s)) {
32
+ return { castling: true, long: s === 'O-O-O', piece: 'K', to: s };
33
+ }
34
+ const extractor = /(?<piece>[KQBNPR])?(?<from>[a-h]|[1-8]|[a-h][1-8])?(?<capture>x)?(?<to>[a-h][1-8])(?<promotion>=[NBRQ])?(?<indication>[+#])?/;
35
+ const { groups = {} } = s.match(extractor) || {};
36
+ return pickBy({
37
+ piece: groups.piece || 'P',
38
+ from: groups.from,
39
+ capture: Boolean(groups.capture),
40
+ to: groups.to,
41
+ promotion: groups.promotion?.slice(1),
42
+ check: Boolean(groups.indication?.includes('+')),
43
+ checkmate: Boolean(groups.indication?.includes('#')),
44
+ }, Boolean);
45
+ },
46
+ },
47
+ // @ts-expect-error Mismatching types
48
+ number: { match: /\d+[.]*/, value: (s) => Number(s.replace(/[.]/g, '')) },
49
+ // --- NAG ---
50
+ nag_import: [
51
+ '!',
52
+ '?',
53
+ '!!',
54
+ '??',
55
+ '!?',
56
+ '?!',
57
+ '□',
58
+ '=',
59
+ '∞',
60
+ '⩲',
61
+ '⩱',
62
+ '±',
63
+ '∓',
64
+ '+ −',
65
+ '− +',
66
+ '⨀',
67
+ '○',
68
+ '⟳',
69
+ '↑',
70
+ '→',
71
+ '⯹',
72
+ '⇆',
73
+ '⨁',
74
+ ],
75
+ nag_export: {
76
+ match: /\$25[0-5]|\$2[0-4][0-9]|\$1[0-9][0-9]|\$[1-9][0-9]|\$[0-9]/,
77
+ value: (s) => s.slice(1),
78
+ },
79
+ // --- RAV ---
80
+ lparen: '(',
81
+ rparen: ')',
82
+ },
83
+ tag: {
84
+ __: { lineBreaks: true, match: /\s+/ },
85
+ identifier: /[a-zA-Z0-9_]+/,
86
+ rbracket: { match: ']', pop: 1 },
87
+ value: {
88
+ match: /"[^"]*?"/,
89
+ value: (s) => s.slice(1, -1).trim(),
90
+ },
91
+ },
92
+ });
93
+ export default lexer;
94
+ //# sourceMappingURL=lexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.js","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,SAAS,MAAM,CACb,MAAS,EACT,SAA8D;IAE9D,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAC7C,SAAS,CAAC,KAAmB,EAAE,GAAG,CAAC,CACpC,CACF,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;IACvB,IAAI,EAAE;QACJ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;QACtC,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;QAChE,iBAAiB,EAAE;YACjB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,CAAC;iBACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBACZ,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;iBACvB,IAAI,EAAE;SACZ;QACD,MAAM,EAAE,OAAO;QAEf,cAAc;QACd,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;QACrC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;QAEhC,iBAAiB;QACjB,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC;QAEtC,eAAe;QACf,kCAAkC;QAClC,GAAG,EAAE;YACH,qCAAqC;YACrC,KAAK,EAAE,kEAAkE;YACzE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;gBACX,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;gBACpE,CAAC;gBAED,MAAM,SAAS,GACb,8HAA8H,CAAC;gBACjI,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAEjD,OAAO,MAAM,CACX;oBACE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG;oBAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;oBAChC,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;oBACrC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAChD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;iBACrD,EACD,OAAO,CACR,CAAC;YACJ,CAAC;SACF;QACD,qCAAqC;QACrC,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE;QAEzE,cAAc;QACd,UAAU,EAAE;YACV,GAAG;YACH,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,KAAK;YACL,KAAK;YACL,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;SACJ;QACD,UAAU,EAAE;YACV,KAAK,EAAE,4DAA4D;YACnE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACzB;QAED,cAAc;QACd,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;KACZ;IACD,GAAG,EAAE;QACH,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;QACtC,UAAU,EAAE,eAAe;QAC3B,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;QAChC,KAAK,EAAE;YACL,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SACpC;KACF;CACF,CAAC,CAAC;AAEH,eAAe,KAAK,CAAC"}
package/package.json CHANGED
@@ -1,25 +1,29 @@
1
1
  {
2
2
  "author": "Adrian de la Rosa <adrian@delarosab.me>",
3
3
  "dependencies": {
4
+ "moo": "^0.5.2",
4
5
  "nearley": "^2.20.1"
5
6
  },
6
7
  "description": "PGN is a parser that is part of the ECHECS project, designed to interpret the PGN (Portable Game Notation) specification.",
7
8
  "devDependencies": {
8
- "@eslint/js": "^9.11.1",
9
+ "@eslint/js": "^9.21.0",
10
+ "@mliebelt/pgn-parser": "^1.4.15",
11
+ "@types/moo": "^0.5.10",
9
12
  "@types/nearley": "^2.11.5",
10
- "@typescript-eslint/parser": "^8.9.0",
11
- "@vitest/coverage-v8": "^2.1.1",
12
- "eslint": "^9.11.1",
13
- "eslint-config-prettier": "^9.1.0",
14
- "eslint-import-resolver-typescript": "^3.6.3",
15
- "eslint-plugin-import-x": "^4.3.0",
16
- "husky": "^9.1.6",
13
+ "@types/node": "^22.13.5",
14
+ "@typescript-eslint/parser": "^8.24.1",
15
+ "@vitest/coverage-v8": "^3.0.6",
16
+ "eslint": "^9.21.0",
17
+ "eslint-config-prettier": "^10.0.1",
18
+ "eslint-import-resolver-typescript": "^3.8.3",
19
+ "eslint-plugin-import-x": "^4.6.1",
20
+ "husky": "^9.1.7",
17
21
  "install": "^0.13.0",
18
- "lint-staged": "^15.2.10",
19
- "prettier": "^3.3.3",
20
- "typescript": "^5.6.2",
21
- "typescript-eslint": "^8.9.0",
22
- "vitest": "^2.1.1"
22
+ "lint-staged": "^15.4.3",
23
+ "prettier": "^3.5.2",
24
+ "typescript": "^5.7.3",
25
+ "typescript-eslint": "^8.24.1",
26
+ "vitest": "^3.0.6"
23
27
  },
24
28
  "files": [
25
29
  "/dist/",
@@ -38,22 +42,22 @@
38
42
  "repository": "mormubis/pgn",
39
43
  "type": "module",
40
44
  "types": "dist/index.d.ts",
41
- "version": "3.0.18",
45
+ "version": "3.1.2",
42
46
  "scripts": {
43
47
  "bench": "vitest bench --run",
44
48
  "build": "pnpm run build:grammar && pnpm run build:entry",
45
49
  "build:grammar": "pnpm run grammar:compile",
46
50
  "build:entry": "tsc --project tsconfig.build.json",
47
51
  "format": "pnpm run format:ci --write",
48
- "format:ci": "prettier -l \"**/*.+(css|js|json|jsx|md|mjs|mts|ts|tsx|yml|yaml)\"",
52
+ "format:ci": "prettier --ignore-unknown --list-different \"**/*\"",
49
53
  "grammar:compile": "nearleyc src/grammar.ne -o src/grammar.cjs",
50
54
  "grammar:diagram": "nearley-railroad src/grammar.ne -o diagram.html",
51
- "grammar:test": "nearley-test -s DATABASE src/grammar.cjs < ./test.pgn",
55
+ "grammar:test": "pnpm grammar:compile && nearley-test -s DATABASE src/grammar.cjs < ./test.pgn",
52
56
  "lint": "pnpm run lint:style && pnpm run lint:types",
53
57
  "lint:ci": "pnpm run lint:style --max-warnings 0 && pnpm run lint:types",
54
58
  "lint:style": "eslint \"src/**/*.{ts,tsx}\" --fix",
55
59
  "lint:types": "tsc --noEmit --project tsconfig.json",
56
- "test": "vitest run",
60
+ "test": "pnpm grammar:compile && vitest run",
57
61
  "test:coverage": "pnpm run test --coverage",
58
62
  "test:watch": "pnpm run test --watch"
59
63
  }