grammar-composer 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +144 -89
  2. package/dist/exports/Exports.d.ts +2 -0
  3. package/dist/exports/Exports.d.ts.map +1 -1
  4. package/dist/exports/Exports.js +2 -0
  5. package/dist/exports/Exports.js.map +1 -1
  6. package/dist/parser-generator/Grammar.d.ts +8 -1
  7. package/dist/parser-generator/Grammar.d.ts.map +1 -1
  8. package/dist/parser-generator/Grammar.js +30 -225
  9. package/dist/parser-generator/Grammar.js.map +1 -1
  10. package/dist/parser-generator/ParseError.d.ts +37 -0
  11. package/dist/parser-generator/ParseError.d.ts.map +1 -0
  12. package/dist/parser-generator/ParseError.js +226 -0
  13. package/dist/parser-generator/ParseError.js.map +1 -0
  14. package/dist/parser-generator/StaticAnalysis.d.ts +6 -0
  15. package/dist/parser-generator/StaticAnalysis.d.ts.map +1 -0
  16. package/dist/parser-generator/StaticAnalysis.js +283 -0
  17. package/dist/parser-generator/StaticAnalysis.js.map +1 -0
  18. package/dist/parser-generator/TerminalToText.d.ts +15 -0
  19. package/dist/parser-generator/TerminalToText.d.ts.map +1 -0
  20. package/dist/parser-generator/TerminalToText.js +158 -0
  21. package/dist/parser-generator/TerminalToText.js.map +1 -0
  22. package/dist/parser-generator/TopDownParser.d.ts +4 -2
  23. package/dist/parser-generator/TopDownParser.d.ts.map +1 -1
  24. package/dist/parser-generator/TopDownParser.js +44 -42
  25. package/dist/parser-generator/TopDownParser.js.map +1 -1
  26. package/dist/tests/Test.js +23 -23
  27. package/dist/tests/Test.js.map +1 -1
  28. package/dist/tests/test-grammars/JsonGrammar.d.ts +12 -11
  29. package/dist/tests/test-grammars/JsonGrammar.d.ts.map +1 -1
  30. package/dist/tests/test-grammars/JsonGrammar.js +25 -10
  31. package/dist/tests/test-grammars/JsonGrammar.js.map +1 -1
  32. package/dist/tests/test-grammars/RegExpGrammar.d.ts +25 -25
  33. package/dist/tests/test-grammars/RegExpGrammar.d.ts.map +1 -1
  34. package/dist/tests/test-grammars/RegExpGrammar.js +48 -31
  35. package/dist/tests/test-grammars/RegExpGrammar.js.map +1 -1
  36. package/dist/tests/test-grammars/XmlGrammar.d.ts +11 -10
  37. package/dist/tests/test-grammars/XmlGrammar.d.ts.map +1 -1
  38. package/dist/tests/test-grammars/XmlGrammar.js +19 -8
  39. package/dist/tests/test-grammars/XmlGrammar.js.map +1 -1
  40. package/dist/utilities/LineAndColumn.d.ts +7 -0
  41. package/dist/utilities/LineAndColumn.d.ts.map +1 -0
  42. package/dist/utilities/LineAndColumn.js +52 -0
  43. package/dist/utilities/LineAndColumn.js.map +1 -0
  44. package/dist/utilities/Timer.d.ts +7 -3
  45. package/dist/utilities/Timer.d.ts.map +1 -1
  46. package/dist/utilities/Timer.js +41 -39
  47. package/dist/utilities/Timer.js.map +1 -1
  48. package/package.json +3 -3
  49. package/src/exports/Exports.ts +2 -0
  50. package/src/parser-generator/Grammar.ts +59 -265
  51. package/src/parser-generator/ParseError.ts +337 -0
  52. package/src/parser-generator/StaticAnalysis.ts +340 -0
  53. package/src/parser-generator/TerminalToText.ts +196 -0
  54. package/src/parser-generator/TopDownParser.ts +67 -49
  55. package/src/tests/Test.ts +26 -24
  56. package/src/tests/test-grammars/JsonGrammar.ts +28 -10
  57. package/src/tests/test-grammars/RegExpGrammar.ts +65 -46
  58. package/src/tests/test-grammars/XmlGrammar.ts +20 -8
  59. package/src/utilities/LineAndColumn.ts +61 -0
  60. package/src/utilities/Timer.ts +50 -48
@@ -0,0 +1,158 @@
1
+ /////////////////////////////////////////////////////////////////////////////////////////////////
2
+ // Terminal to text conversion
3
+ /////////////////////////////////////////////////////////////////////////////////////////////////
4
+ export class TerminalToText {
5
+ stringifiedLengthLimit;
6
+ constructor(stringifiedLengthLimit) {
7
+ this.stringifiedLengthLimit = stringifiedLengthLimit;
8
+ }
9
+ stringifyTerminal(terminal) {
10
+ if (terminal.type === 'StringTerminal') {
11
+ return this.stringifyStringTerminal(terminal);
12
+ }
13
+ else {
14
+ return this.stringifyPatternTerminal(terminal);
15
+ }
16
+ }
17
+ stringifyStringTerminal(terminal) {
18
+ return this.stringifyPatternStringLiteral(terminal.content);
19
+ }
20
+ stringifyPatternTerminal(terminal) {
21
+ let pattern = terminal.pattern;
22
+ // Pattern terminals are automatically anchored at the start of the current parse
23
+ // position. This anchor is an implementation detail, so remove it.
24
+ if (Array.isArray(pattern) && pattern.length > 1) {
25
+ const firstElement = pattern[0];
26
+ if (!Array.isArray(firstElement) && typeof firstElement !== 'string' &&
27
+ firstElement.type === 'specialToken' && firstElement.name === 'inputStart') {
28
+ pattern = pattern.slice(1);
29
+ }
30
+ }
31
+ const stringifiedPattern = this.stringifyPattern(pattern);
32
+ const truncatedStringifiedPattern = this.truncateString(stringifiedPattern, this.stringifiedLengthLimit);
33
+ return truncatedStringifiedPattern;
34
+ }
35
+ stringifyPattern(pattern) {
36
+ if (typeof pattern === 'string') {
37
+ return this.stringifyPatternStringLiteral(pattern);
38
+ }
39
+ if (Array.isArray(pattern)) {
40
+ return `[${pattern.map((pattern) => this.stringifyPattern(pattern)).join(', ')}]`;
41
+ }
42
+ switch (pattern.type) {
43
+ case 'specialToken': {
44
+ return this.stringifySpecialToken(pattern);
45
+ }
46
+ case 'possibly': {
47
+ return `possibly(${this.stringifyPattern(pattern.content)})`;
48
+ }
49
+ case 'zeroOrMore': {
50
+ return `zeroOrMore(${this.stringifyPattern(pattern.content)})`;
51
+ }
52
+ case 'oneOrMore': {
53
+ return `oneOrMore(${this.stringifyPattern(pattern.content)})`;
54
+ }
55
+ case 'repeated': {
56
+ const { minCount, maxCount } = pattern;
57
+ const stringifiedContent = this.stringifyPattern(pattern.content);
58
+ if (minCount === maxCount) {
59
+ return `repeated(${minCount}, ${stringifiedContent})`;
60
+ }
61
+ else if (maxCount === Number.POSITIVE_INFINITY) {
62
+ return `repeated([${minCount}, ...], ${stringifiedContent})`;
63
+ }
64
+ else {
65
+ return `repeated([${minCount}, ${maxCount}], ${stringifiedContent})`;
66
+ }
67
+ }
68
+ case 'capture': {
69
+ if (pattern.name !== undefined) {
70
+ return pattern.name;
71
+ }
72
+ return `(${this.stringifyPattern(pattern.content)})`;
73
+ }
74
+ case 'anyOf': {
75
+ const stringifiedMembers = pattern.members.map((pattern) => this.stringifyPattern(pattern));
76
+ let stringified = `anyOf(${stringifiedMembers.join(', ')})`;
77
+ if (stringified.length > this.stringifiedLengthLimit && stringifiedMembers.length > 2) {
78
+ stringified = `anyOf(${stringifiedMembers[0]}, ${stringifiedMembers[1]}, …, ${stringifiedMembers[stringifiedMembers.length - 1]})`;
79
+ }
80
+ return stringified;
81
+ }
82
+ case 'notAnyOfChars': {
83
+ const stringifiedMembers = pattern.members.map((pattern) => this.stringifyPattern(pattern));
84
+ return `notAnyOfChars(${stringifiedMembers.join(', ')})`;
85
+ }
86
+ case 'followedBy': {
87
+ return `followedBy(${this.stringifyPattern(pattern.content)})`;
88
+ }
89
+ case 'notFollowedBy': {
90
+ return `notFollowedBy(${this.stringifyPattern(pattern.content)})`;
91
+ }
92
+ case 'precededBy': {
93
+ return `precededBy(${this.stringifyPattern(pattern.content)})`;
94
+ }
95
+ case 'notPrecededBy': {
96
+ return `notPrecededBy(${this.stringifyPattern(pattern.content)})`;
97
+ }
98
+ case 'sameAs': {
99
+ const captureGroupNameOrIndex = pattern.captureGroupNameOrIndex;
100
+ if (typeof captureGroupNameOrIndex === 'string') {
101
+ return `sameAs('${captureGroupNameOrIndex}')`;
102
+ }
103
+ else {
104
+ return `sameAs(${captureGroupNameOrIndex})`;
105
+ }
106
+ }
107
+ default: {
108
+ throw new Error(`Unrecognized pattern type: ${pattern.type}.`);
109
+ }
110
+ }
111
+ }
112
+ stringifyPatternStringLiteral(text) {
113
+ let result = '';
114
+ for (const char of text) {
115
+ const escapedChar = escapeChar(char);
116
+ result += escapedChar;
117
+ }
118
+ return `'${result}'`;
119
+ }
120
+ stringifySpecialToken(token) {
121
+ if (token.name === 'charRange') {
122
+ const dashIndex = token.rawRegExp.indexOf('-');
123
+ if (dashIndex > 0 && dashIndex < token.rawRegExp.length - 1) {
124
+ const startChar = token.rawRegExp.substring(0, dashIndex).replace(/^\\/, '');
125
+ if (startChar.length > 0) {
126
+ return `charRange('${startChar}', '${token.rawRegExp.substring(dashIndex + 1)}')`;
127
+ }
128
+ }
129
+ }
130
+ else if (token.name !== undefined) {
131
+ return token.name;
132
+ }
133
+ return token.rawRegExp;
134
+ }
135
+ truncateString(str, lengthLimit) {
136
+ if (str.length <= lengthLimit) {
137
+ return str;
138
+ }
139
+ return `${str.substring(0, lengthLimit - 1)}…`;
140
+ }
141
+ }
142
+ export function escapeChar(char) {
143
+ const charMapping = {
144
+ //'\\': '\\\\',
145
+ "'": "\\'",
146
+ '\n': '\\n',
147
+ '\r': '\\r',
148
+ '\t': '\\t',
149
+ };
150
+ const mappedChar = charMapping[char];
151
+ if (mappedChar !== undefined) {
152
+ return mappedChar;
153
+ }
154
+ else {
155
+ return char;
156
+ }
157
+ }
158
+ //# sourceMappingURL=TerminalToText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalToText.js","sourceRoot":"","sources":["../../src/parser-generator/TerminalToText.ts"],"names":[],"mappings":"AAGA,iGAAiG;AACjG,8BAA8B;AAC9B,iGAAiG;AACjG,MAAM,OAAO,cAAc;IACN,sBAAsB;IAA1C,YAAoB,sBAA8B;sCAA9B,sBAAsB;IAC1C,CAAC;IAED,iBAAiB,CAAC,QAAkB;QACnC,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAA;QAC9C,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAA;QAC/C,CAAC;IACF,CAAC;IAED,uBAAuB,CAAC,QAAwB;QAC/C,OAAO,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC5D,CAAC;IAED,wBAAwB,CAAC,QAAyB;QACjD,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;QAE9B,iFAAiF;QACjF,mEAAmE;QACnE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAE/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,YAAY,KAAK,QAAQ;gBACnE,YAAY,CAAC,IAAI,KAAK,cAAc,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAE7E,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC3B,CAAC;QACF,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QACzD,MAAM,2BAA2B,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAExG,OAAO,2BAA2B,CAAA;IACnC,CAAC;IAED,gBAAgB,CAAC,OAAgB;QAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAA;QACnD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAClF,CAAC;QAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,cAAc,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;YAC3C,CAAC;YAED,KAAK,UAAU,EAAE,CAAC;gBACjB,OAAO,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAA;YAC7D,CAAC;YAED,KAAK,YAAY,EAAE,CAAC;gBACnB,OAAO,cAAc,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAA;YAC/D,CAAC;YAED,KAAK,WAAW,EAAE,CAAC;gBAClB,OAAO,aAAa,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAA;YAC9D,CAAC;YAED,KAAK,UAAU,EAAE,CAAC;gBACjB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;gBACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAEjE,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC3B,OAAO,YAAY,QAAQ,KAAK,kBAAkB,GAAG,CAAA;gBACtD,CAAC;qBAAM,IAAI,QAAQ,KAAK,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAClD,OAAO,aAAa,QAAQ,WAAW,kBAAkB,GAAG,CAAA;gBAC7D,CAAC;qBAAM,CAAC;oBACP,OAAO,aAAa,QAAQ,KAAK,QAAQ,MAAM,kBAAkB,GAAG,CAAA;gBACrE,CAAC;YACF,CAAC;YAED,KAAK,SAAS,EAAE,CAAC;gBAChB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO,OAAO,CAAC,IAAI,CAAA;gBACpB,CAAC;gBAED,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAA;YACrD,CAAC;YAED,KAAK,OAAO,EAAE,CAAC;gBACd,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;gBAE3F,IAAI,WAAW,GAAG,SAAS,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;gBAE3D,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvF,WAAW,GAAG,SAAS,kBAAkB,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,QAAQ,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAA;gBACnI,CAAC;gBAED,OAAO,WAAW,CAAA;YACnB,CAAC;YAED,KAAK,eAAe,EAAE,CAAC;gBACtB,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;gBAE3F,OAAO,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YACzD,CAAC;YAED,KAAK,YAAY,EAAE,CAAC;gBACnB,OAAO,cAAc,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAA;YAC/D,CAAC;YAED,KAAK,eAAe,EAAE,CAAC;gBACtB,OAAO,iBAAiB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAA;YAClE,CAAC;YAED,KAAK,YAAY,EAAE,CAAC;gBACnB,OAAO,cAAc,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAA;YAC/D,CAAC;YAED,KAAK,eAAe,EAAE,CAAC;gBACtB,OAAO,iBAAiB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAA;YAClE,CAAC;YAED,KAAK,QAAQ,EAAE,CAAC;gBACf,MAAM,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAA;gBAE/D,IAAI,OAAO,uBAAuB,KAAK,QAAQ,EAAE,CAAC;oBACjD,OAAO,WAAW,uBAAuB,IAAI,CAAA;gBAC9C,CAAC;qBAAM,CAAC;oBACP,OAAO,UAAU,uBAAuB,GAAG,CAAA;gBAC5C,CAAC;YACF,CAAC;YAED,SAAS,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,8BAA+B,OAAe,CAAC,IAAI,GAAG,CAAC,CAAA;YACxE,CAAC;QACF,CAAC;IACF,CAAC;IAED,6BAA6B,CAAC,IAAY;QACzC,IAAI,MAAM,GAAG,EAAE,CAAA;QAEf,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YAEpC,MAAM,IAAI,WAAW,CAAA;QACtB,CAAC;QAED,OAAO,IAAI,MAAM,GAAG,CAAA;IACrB,CAAC;IAED,qBAAqB,CAAC,KAAmB;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAE9C,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;gBAE5E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAA;gBAClF,CAAC;YACF,CAAC;QACF,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC,IAAI,CAAA;QAClB,CAAC;QAED,OAAO,KAAK,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,cAAc,CAAC,GAAW,EAAE,WAAmB;QAC9C,IAAI,GAAG,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAA;QACX,CAAC;QAED,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,CAAA;IAC/C,CAAC;CACD;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,MAAM,WAAW,GAA2B;QAC3C,eAAe;QACf,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;KACX,CAAA;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;IAEpC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAA;IAClB,CAAC;SAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACZ,CAAC;AACF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Grammar } from './Grammar.js';
2
- export declare function parse(inputString: string, grammar: Grammar<any>): ParseTreeNode[];
2
+ export declare function parse(inputString: string, grammar: Grammar<any>, options?: TopDownParserOptions): ParseTreeNode[];
3
3
  export interface ParseResult {
4
4
  endOffset: number;
5
5
  nodes: ParseTreeNode[] | undefined;
@@ -9,6 +9,8 @@ export interface ParseTreeNode {
9
9
  startOffset: number;
10
10
  endOffset: number;
11
11
  sourceText: string;
12
- children: ParseTreeNode[] | undefined;
12
+ children?: ParseTreeNode[];
13
+ }
14
+ export interface TopDownParserOptions {
13
15
  }
14
16
  //# sourceMappingURL=TopDownParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TopDownParser.d.ts","sourceRoot":"","sources":["../../src/parser-generator/TopDownParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA4B,MAAM,cAAc,CAAA;AAEhE,wBAAgB,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAuR/D;AAED,MAAM,WAAW,WAAW;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,aAAa,EAAE,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,CAAA;CACrC"}
1
+ {"version":3,"file":"TopDownParser.d.ts","sourceRoot":"","sources":["../../src/parser-generator/TopDownParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA8C,MAAM,cAAc,CAAA;AAMlF,wBAAgB,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,oBAAoB,mBA4R/F;AAKD,MAAM,WAAW,WAAW;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,aAAa,EAAE,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAA;IAEZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IAEjB,UAAU,EAAE,MAAM,CAAA;IAElB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,oBAAoB;CACpC"}
@@ -1,16 +1,28 @@
1
1
  import { isNumber } from '../utilities/Utilities.js';
2
- export function parse(inputString, grammar) {
2
+ import { ParseError } from './ParseError.js';
3
+ //////////////////////////////////////////////////////////////////////////////////////////////
4
+ // Main parser function
5
+ //////////////////////////////////////////////////////////////////////////////////////////////
6
+ export function parse(inputString, grammar, options) {
7
+ options = { ...options };
3
8
  const inputLength = inputString.length;
9
+ const nonterminalStack = [];
4
10
  let bestFailedMatches = [];
5
11
  let bestFailedMatchesOffset = -1;
12
+ const cacheKeyOffsetMultiplier = grammar.maxCacheId + 1;
13
+ const parseResultsCache = new Map();
6
14
  function updateBestFailedMatchesIfNeeded(terminal, startOffset) {
7
15
  if (startOffset >= bestFailedMatchesOffset) {
16
+ const failedMatch = {
17
+ terminal,
18
+ productionStack: [...nonterminalStack]
19
+ };
8
20
  if (startOffset > bestFailedMatchesOffset) {
9
21
  bestFailedMatchesOffset = startOffset;
10
- bestFailedMatches = [terminal];
22
+ bestFailedMatches = [failedMatch];
11
23
  }
12
24
  else {
13
- bestFailedMatches.push(terminal);
25
+ bestFailedMatches.push(failedMatch);
14
26
  }
15
27
  }
16
28
  }
@@ -22,11 +34,9 @@ export function parse(inputString, grammar) {
22
34
  return tryParseUncached(grammarElement, startOffset);
23
35
  }
24
36
  }
25
- const offsetMultiplier = grammar.maxCacheId + 1;
26
- const parseResultsCache = new Map();
27
37
  function tryParseCached(grammarElement, startOffset) {
28
38
  const cacheId = grammarElement.cacheId;
29
- const cacheKey = (startOffset * offsetMultiplier) + cacheId;
39
+ const cacheKey = (startOffset * cacheKeyOffsetMultiplier) + cacheId;
30
40
  if (parseResultsCache.has(cacheKey)) {
31
41
  return parseResultsCache.get(cacheKey);
32
42
  }
@@ -72,9 +82,6 @@ export function parse(inputString, grammar) {
72
82
  let namedGroupIndicesIdentifiers = undefined;
73
83
  if (groupsIndices.groups) {
74
84
  namedGroupIndicesIdentifiers = Object.keys(groupsIndices.groups);
75
- if (namedGroupIndicesIdentifiers.length !== groupsIndices.length - 1) {
76
- throw new Error(`The regular expression /${grammarElement.regExp.source}/ contains a combination of named and unnamed groups. Due to limitations of the JavaScript RegExp engine, it is impossible to reliably identify the ordering of this combination, please use either all unnamed or named groups, but not both.`);
77
- }
78
85
  }
79
86
  const children = [];
80
87
  for (let i = 1; i < groupsIndices.length; i++) {
@@ -101,22 +108,34 @@ export function parse(inputString, grammar) {
101
108
  return parseResult;
102
109
  }
103
110
  case 'Nonterminal': {
111
+ nonterminalStack.push(grammarElement);
104
112
  const result = tryParse(grammarElement.content, startOffset);
113
+ nonterminalStack.pop();
105
114
  if (result === null) {
106
115
  return null;
107
116
  }
108
- let newNode = {
109
- name: grammarElement.name,
110
- startOffset,
111
- endOffset: result.endOffset,
112
- sourceText: inputString.substring(startOffset, result.endOffset),
113
- children: result.nodes,
114
- };
115
- const newResult = {
116
- endOffset: result.endOffset,
117
- nodes: [newNode]
118
- };
119
- return newResult;
117
+ const grammarElementName = grammarElement.name;
118
+ if (grammarElement.unwrapped) {
119
+ const newResult = {
120
+ endOffset: result.endOffset,
121
+ nodes: result.nodes
122
+ };
123
+ return newResult;
124
+ }
125
+ else {
126
+ const newNode = {
127
+ name: grammarElementName,
128
+ startOffset,
129
+ endOffset: result.endOffset,
130
+ sourceText: inputString.substring(startOffset, result.endOffset),
131
+ children: result.nodes,
132
+ };
133
+ const newResult = {
134
+ endOffset: result.endOffset,
135
+ nodes: [newNode]
136
+ };
137
+ return newResult;
138
+ }
120
139
  }
121
140
  case 'Sequence': {
122
141
  let successfulResults = [];
@@ -197,31 +216,14 @@ export function parse(inputString, grammar) {
197
216
  return result.nodes ?? [];
198
217
  }
199
218
  else {
219
+ const failureOffset = bestFailedMatches.length > 0 ? bestFailedMatchesOffset : (result?.endOffset ?? 0);
200
220
  if (bestFailedMatches.length > 0) {
201
- const possibleMatches = bestFailedMatches.map(match => {
202
- if (match.type === 'StringTerminal') {
203
- return `'${match.content}'`;
204
- }
205
- else if (match.type === 'PatternTerminal') {
206
- return `/${match.regExp.source}/`;
207
- }
208
- else {
209
- throw new Error(`Invalid match type: '${match.type}'`);
210
- }
211
- });
212
- const possibleMatchesWithoutDuplicates = [...(new Set(possibleMatches))];
213
- let possibleMatchesString;
214
- if (possibleMatchesWithoutDuplicates.length > 1) {
215
- possibleMatchesString = `any of ${possibleMatchesWithoutDuplicates.join(', ')}`;
216
- }
217
- else {
218
- possibleMatchesString = possibleMatchesWithoutDuplicates[0];
219
- }
220
- throw new Error(`Failed parsing the input text. Expected ${possibleMatchesString} at position ${bestFailedMatchesOffset}.`);
221
+ throw ParseError.createFailedParseError(inputString, failureOffset, bestFailedMatches);
221
222
  }
222
223
  else {
223
224
  const lastNode = result?.nodes?.[result.nodes.length - 1];
224
- throw new Error(`Failed parsing the input text. Parsed length was ${lastNode?.endOffset ?? result?.endOffset ?? 0}. Input length was ${inputLength}.`);
225
+ const parsedLength = lastNode?.endOffset ?? result?.endOffset ?? 0;
226
+ throw ParseError.createIncompleteParseError(inputString, failureOffset, parsedLength);
225
227
  }
226
228
  }
227
229
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TopDownParser.js","sourceRoot":"","sources":["../../src/parser-generator/TopDownParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TopDownParser.js","sourceRoot":"","sources":["../../src/parser-generator/TopDownParser.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { Timer } from '../utilities/Timer.js';
2
2
  import { jsonSample1 } from './test-data/TestData.js';
3
3
  import { anyOf, buildGrammar } from '../exports/Exports.js';
4
- import { JsonGrammar } from './test-grammars/JsonGrammar.js';
5
- import { XmlGrammar } from './test-grammars/XmlGrammar.js';
6
- import { RegExpGrammar } from './test-grammars/RegExpGrammar.js';
4
+ import { JsonGrammar, jsonGrammarUnwrappedNonterminalNames } from './test-grammars/JsonGrammar.js';
5
+ import { XmlGrammar, xmlGrammarUnwrappedNonterminalNames } from './test-grammars/XmlGrammar.js';
6
+ import { RegExpGrammar, regExpGrammarUnwrappedNonterminalNames } from './test-grammars/RegExpGrammar.js';
7
7
  import { writeFile } from 'fs/promises';
8
8
  import { SimpleTestGrammar1 } from './test-grammars/SimpleTestGrammar1.js';
9
9
  const log = console.log;
@@ -20,7 +20,9 @@ function testBasic() {
20
20
  }
21
21
  function testJsonParser() {
22
22
  const jsonString = jsonSample1;
23
- const grammar = buildGrammar(JsonGrammar, 'expression');
23
+ const grammar = buildGrammar(JsonGrammar, 'expression', {
24
+ unwrappedNonterminalNames: jsonGrammarUnwrappedNonterminalNames
25
+ });
24
26
  const iterations = 1000;
25
27
  let result1;
26
28
  let result2;
@@ -35,7 +37,7 @@ function testJsonParser() {
35
37
  timer.logAndRestart('JSON.Parse');
36
38
  log(JSON.stringify(result1, undefined, 4));
37
39
  }
38
- function testXmlParser() {
40
+ async function testXmlParser() {
39
41
  const xmlString = `
40
42
  <!DOCTYPE web-app>
41
43
 
@@ -43,32 +45,27 @@ function testXmlParser() {
43
45
  <header>Adobe SVG Viewer</header>
44
46
  <item action="Open" id="Open">Open</item>
45
47
  <item action="OpenNew" id="OpenNew">Open New</item>
46
- <separator/>
47
- <item action="ZoomIn" id="ZoomIn">Zoom In</item>
48
- <item action="ZoomOut" id="ZoomOut">Zoom Out</item>
49
- <separator/>
50
- <item action="Quality" id="Quality">Quality</item>
51
- <item action="Pause" id="Pause">Pause</item>
52
- <item action="Mute" id="Mute">Mute</item>
53
- <separator/>
54
- <item action="Find" id="Find">Find...</item>
55
- <item action="FindAgain" id="FindAgain">Find Again</item>
56
- <item action="Copy" id="Copy">Copy</item>
57
48
  </menu>
58
-
59
49
  `;
60
50
  // Build the grammar. 'document' is the starting production
61
- const grammar = buildGrammar(XmlGrammar, 'document');
51
+ const grammar = buildGrammar(XmlGrammar, 'document', {
52
+ unwrappedNonterminalNames: xmlGrammarUnwrappedNonterminalNames
53
+ });
62
54
  // Parse the XML string
63
55
  const parseTree = grammar.parse(xmlString);
64
- log(JSON.stringify(parseTree, undefined, 4));
56
+ const parseTreeJson = JSON.stringify(parseTree, undefined, 4);
57
+ log(parseTreeJson);
58
+ await writeFile('out/out.json', parseTreeJson);
65
59
  }
66
60
  async function testRegExpParser() {
67
- const regExpString = /^([+]?[1]?(1 )?[-.+]?\(?\d{1}[- .+]*\d{1}[- .+]*\d{1}\)?[- .+]*\d{1}[- .+]*\d{1}[- .+]*\d{1}[- .+]*\d{1}[- .+]*\d{1}[- .+]*\d{1}[- .+]*\d{1})$/.source;
61
+ //const regExpString = /^([+]?[1]?(1 )?[-.+]?\(?\d{1}[- .+]*\d{1}[- .+]*\d{1}\)?[- .+]*\d{1}[- .+]*\d{1}[- .+]*\d{1}[- .+]*\d{1}[- .+]*\d{1}[- .+]*\d{1}[- .+]*\d{1})$/.source
68
62
  //const regExpString = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.source
69
63
  //const regExpString = /(?=.*[!@#$%^&*])^mongodb:\/\/(?<user>[a-zA-Z0-9]+):(?<pass>[a-zA-Z0-9!@#$%^&*]{8,})@(?<host>[a-z0-9.-]+):(?<port>\d{2,5})$/.source
70
- //const regExpString = /(abcd)*ef+g/.source
71
- const grammar = buildGrammar(RegExpGrammar, 'root');
64
+ const regExpString = /^(abcd)*ef+g/.source;
65
+ //const regExpString = '(abcd)(aa))'
66
+ const grammar = buildGrammar(RegExpGrammar, 'root', {
67
+ unwrappedNonterminalNames: regExpGrammarUnwrappedNonterminalNames
68
+ });
72
69
  const parseTree = grammar.parse(regExpString);
73
70
  const parseTreeJson = JSON.stringify(parseTree, undefined, 4);
74
71
  log(parseTreeJson);
@@ -92,7 +89,10 @@ function test1() {
92
89
  const result = grammar.parse(input);
93
90
  console.log(JSON.stringify(result, undefined, 4));
94
91
  }
92
+ //testParserError1()
93
+ //testParserError2()
95
94
  //testJsonParser()
96
- testRegExpParser();
95
+ testXmlParser();
96
+ //testRegExpParser()
97
97
  //test1()
98
98
  //# sourceMappingURL=Test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Test.js","sourceRoot":"","sources":["../../src/tests/Test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Test.js","sourceRoot":"","sources":["../../src/tests/Test.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,19 @@
1
1
  import * as G from '../../exports/Exports.js';
2
2
  export declare class JsonGrammar {
3
3
  expression: () => G.Choice;
4
- stringLiteral: G.PatternTerminal;
5
- numberLiteral: G.PatternTerminal;
6
- booleanLiteral: G.PatternTerminal;
7
- nullLiteral: G.PatternTerminal;
4
+ stringLiteral: () => G.PatternTerminal;
5
+ numberLiteral: () => G.PatternTerminal;
6
+ booleanLiteral: () => G.PatternTerminal;
7
+ nullLiteral: () => G.PatternTerminal;
8
8
  objectExpression: () => G.Production[];
9
- objectPropertyExpression: () => (G.PatternTerminal | (() => G.Choice))[];
9
+ objectPropertyExpression: () => ((() => G.Choice) | (() => G.PatternTerminal))[];
10
10
  arrayExpression: () => G.Production[];
11
- openingCurlyBrace: G.PatternTerminal;
12
- closingCurlyBrace: G.PatternTerminal;
13
- openingSquareBracket: G.PatternTerminal;
14
- closingSquareBracket: G.PatternTerminal;
15
- comma: G.PatternTerminal;
16
- colons: G.PatternTerminal;
11
+ openingCurlyBrace: () => G.PatternTerminal;
12
+ closingCurlyBrace: () => G.PatternTerminal;
13
+ openingSquareBracket: () => G.PatternTerminal;
14
+ closingSquareBracket: () => G.PatternTerminal;
15
+ comma: () => G.PatternTerminal;
16
+ colons: () => G.PatternTerminal;
17
17
  }
18
+ export declare const jsonGrammarUnwrappedNonterminalNames: G.GrammarNonterminalNames<JsonGrammar>;
18
19
  //# sourceMappingURL=JsonGrammar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"JsonGrammar.d.ts","sourceRoot":"","sources":["../../../src/tests/test-grammars/JsonGrammar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,0BAA0B,CAAA;AAG7C,qBAAa,WAAW;IACvB,UAAU,iBAOT;IAED,aAAa,oBAcX;IAEF,aAAa,oBAiBX;IAEF,cAAc,oBAQZ;IAEF,WAAW,oBAMT;IAEF,gBAAgB,uBASf;IAED,wBAAwB,iDAIvB;IAED,eAAe,uBASd;IAED,iBAAiB,oBAA0C;IAC3D,iBAAiB,oBAA0C;IAE3D,oBAAoB,oBAA0C;IAC9D,oBAAoB,oBAA0C;IAE9D,KAAK,oBAA0C;IAC/C,MAAM,oBAA0C;CAChD"}
1
+ {"version":3,"file":"JsonGrammar.d.ts","sourceRoot":"","sources":["../../../src/tests/test-grammars/JsonGrammar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,0BAA0B,CAAA;AAG7C,qBAAa,WAAW;IACvB,UAAU,iBAOT;IAED,aAAa,0BAcX;IAEF,aAAa,0BAiBX;IAEF,cAAc,0BAQZ;IAEF,WAAW,0BAMT;IAEF,gBAAgB,uBASf;IAED,wBAAwB,yDAIvB;IAED,eAAe,uBASd;IAED,iBAAiB,0BAAgD;IACjE,iBAAiB,0BAAgD;IAEjE,oBAAoB,0BAAgD;IACpE,oBAAoB,0BAAgD;IAEpE,KAAK,0BAAgD;IACrD,MAAM,0BAAgD;CACtD;AAiBD,eAAO,MAAM,oCAAoC,EAAE,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAavF,CAAA"}
@@ -2,7 +2,7 @@ import * as G from '../../exports/Exports.js';
2
2
  import * as R from 'regexp-composer';
3
3
  export class JsonGrammar {
4
4
  expression = () => G.anyOf(this.stringLiteral, this.numberLiteral, this.booleanLiteral, this.nullLiteral, this.objectExpression, this.arrayExpression);
5
- stringLiteral = G.pattern([
5
+ stringLiteral = () => G.pattern([
6
6
  zeroOrMoreWhitespace,
7
7
  '"',
8
8
  R.captureAs('value', R.zeroOrMoreNonGreedy(R.anyChar)),
@@ -11,7 +11,7 @@ export class JsonGrammar {
11
11
  }),
12
12
  zeroOrMoreWhitespace,
13
13
  ]);
14
- numberLiteral = G.pattern([
14
+ numberLiteral = () => G.pattern([
15
15
  zeroOrMoreWhitespace,
16
16
  R.captureAs('value', [
17
17
  R.possibly('-'), // Sign
@@ -25,12 +25,12 @@ export class JsonGrammar {
25
25
  ]),
26
26
  zeroOrMoreWhitespace,
27
27
  ]);
28
- booleanLiteral = G.pattern([
28
+ booleanLiteral = () => G.pattern([
29
29
  zeroOrMoreWhitespace,
30
30
  R.captureAs('value', R.anyOf('true', 'false')),
31
31
  zeroOrMoreWhitespace,
32
32
  ]);
33
- nullLiteral = G.pattern([
33
+ nullLiteral = () => G.pattern([
34
34
  zeroOrMoreWhitespace,
35
35
  'null',
36
36
  zeroOrMoreWhitespace,
@@ -56,12 +56,12 @@ export class JsonGrammar {
56
56
  ]),
57
57
  this.closingSquareBracket
58
58
  ];
59
- openingCurlyBrace = createPatternWithClearedWhitespace('{');
60
- closingCurlyBrace = createPatternWithClearedWhitespace('}');
61
- openingSquareBracket = createPatternWithClearedWhitespace('[');
62
- closingSquareBracket = createPatternWithClearedWhitespace(']');
63
- comma = createPatternWithClearedWhitespace(',');
64
- colons = createPatternWithClearedWhitespace(':');
59
+ openingCurlyBrace = () => createPatternWithClearedWhitespace('{');
60
+ closingCurlyBrace = () => createPatternWithClearedWhitespace('}');
61
+ openingSquareBracket = () => createPatternWithClearedWhitespace('[');
62
+ closingSquareBracket = () => createPatternWithClearedWhitespace(']');
63
+ comma = () => createPatternWithClearedWhitespace(',');
64
+ colons = () => createPatternWithClearedWhitespace(':');
65
65
  }
66
66
  function createPatternWithClearedWhitespace(subpattern) {
67
67
  return G.pattern([
@@ -71,4 +71,19 @@ function createPatternWithClearedWhitespace(subpattern) {
71
71
  ]);
72
72
  }
73
73
  const zeroOrMoreWhitespace = R.zeroOrMore(R.whitespace);
74
+ //////////////////////////////////////////////////////////////////////////////////////////////
75
+ // Wrapped nonterminal names
76
+ //////////////////////////////////////////////////////////////////////////////////////////////
77
+ export const jsonGrammarUnwrappedNonterminalNames = [
78
+ //'stringLiteral',
79
+ //'numberLiteral',
80
+ //'booleanLiteral',
81
+ //'nullLiteral',
82
+ 'openingCurlyBrace',
83
+ 'closingCurlyBrace',
84
+ 'openingSquareBracket',
85
+ 'closingSquareBracket',
86
+ 'comma',
87
+ 'colons',
88
+ ];
74
89
  //# sourceMappingURL=JsonGrammar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JsonGrammar.js","sourceRoot":"","sources":["../../../src/tests/test-grammars/JsonGrammar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonGrammar.js","sourceRoot":"","sources":["../../../src/tests/test-grammars/JsonGrammar.ts"],"names":[],"mappings":"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"}