dot-language-support 2.2.1 → 2.2.3

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 (90) hide show
  1. package/.github/dependabot.yml +5 -1
  2. package/.github/workflows/CD.yml +6 -3
  3. package/.github/workflows/CI.yml +7 -4
  4. package/.github/workflows/auto-merge.yaml +26 -0
  5. package/biome.json +50 -0
  6. package/lib/cjs/binder.d.ts +1 -1
  7. package/lib/cjs/binder.js +2 -5
  8. package/lib/cjs/checker.d.ts +1 -1
  9. package/lib/cjs/checker.js +34 -30
  10. package/lib/cjs/core.js +2 -3
  11. package/lib/cjs/error.js +3 -5
  12. package/lib/cjs/parser.d.ts +4 -61
  13. package/lib/cjs/parser.js +580 -616
  14. package/lib/cjs/scanner.d.ts +2 -13
  15. package/lib/cjs/scanner.js +316 -317
  16. package/lib/cjs/service/codeAction.d.ts +3 -3
  17. package/lib/cjs/service/codeAction.js +28 -32
  18. package/lib/cjs/service/colorProvider.d.ts +3 -3
  19. package/lib/cjs/service/colorProvider.js +13 -24
  20. package/lib/cjs/service/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.d.ts +4 -4
  21. package/lib/cjs/service/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.js +5 -6
  22. package/lib/cjs/service/command/ChangeEdgeOpCommand.d.ts +3 -3
  23. package/lib/cjs/service/command/ChangeEdgeOpCommand.js +5 -8
  24. package/lib/cjs/service/command/ConsolidateDescendantsCommand.d.ts +4 -4
  25. package/lib/cjs/service/command/ConsolidateDescendantsCommand.js +12 -13
  26. package/lib/cjs/service/command/RemoveSemicolons.d.ts +4 -4
  27. package/lib/cjs/service/command/RemoveSemicolons.js +8 -11
  28. package/lib/cjs/service/command/common.d.ts +4 -4
  29. package/lib/cjs/service/command/common.js +12 -10
  30. package/lib/cjs/service/completion.d.ts +2 -2
  31. package/lib/cjs/service/completion.js +17 -18
  32. package/lib/cjs/service/hover.d.ts +2 -2
  33. package/lib/cjs/service/hover.js +12 -16
  34. package/lib/cjs/service/languageFacts.js +1 -6
  35. package/lib/cjs/service/reference.d.ts +2 -2
  36. package/lib/cjs/service/reference.js +4 -8
  37. package/lib/cjs/service/rename.d.ts +3 -3
  38. package/lib/cjs/service/rename.js +10 -8
  39. package/lib/cjs/service/service.d.ts +3 -3
  40. package/lib/cjs/service/service.js +7 -8
  41. package/lib/cjs/service/util.d.ts +1 -1
  42. package/lib/cjs/service/util.js +10 -13
  43. package/lib/cjs/service/validation.d.ts +3 -3
  44. package/lib/cjs/service/validation.js +1 -2
  45. package/lib/cjs/tester.js +1 -1
  46. package/lib/cjs/visitor.d.ts +1 -1
  47. package/lib/cjs/visitor.js +32 -34
  48. package/lib/esm/binder.d.ts +1 -1
  49. package/lib/esm/binder.js +1 -3
  50. package/lib/esm/checker.d.ts +1 -1
  51. package/lib/esm/checker.js +21 -16
  52. package/lib/esm/core.js +1 -1
  53. package/lib/esm/error.js +1 -3
  54. package/lib/esm/parser.d.ts +4 -61
  55. package/lib/esm/parser.js +320 -306
  56. package/lib/esm/scanner.d.ts +2 -13
  57. package/lib/esm/scanner.js +153 -152
  58. package/lib/esm/service/codeAction.d.ts +3 -3
  59. package/lib/esm/service/codeAction.js +26 -29
  60. package/lib/esm/service/colorProvider.d.ts +3 -3
  61. package/lib/esm/service/colorProvider.js +11 -21
  62. package/lib/esm/service/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.d.ts +4 -4
  63. package/lib/esm/service/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.js +4 -4
  64. package/lib/esm/service/command/ChangeEdgeOpCommand.d.ts +3 -3
  65. package/lib/esm/service/command/ChangeEdgeOpCommand.js +3 -5
  66. package/lib/esm/service/command/ConsolidateDescendantsCommand.d.ts +4 -4
  67. package/lib/esm/service/command/ConsolidateDescendantsCommand.js +11 -11
  68. package/lib/esm/service/command/RemoveSemicolons.d.ts +4 -4
  69. package/lib/esm/service/command/RemoveSemicolons.js +6 -8
  70. package/lib/esm/service/command/common.d.ts +4 -4
  71. package/lib/esm/service/command/common.js +7 -4
  72. package/lib/esm/service/completion.d.ts +2 -2
  73. package/lib/esm/service/completion.js +16 -16
  74. package/lib/esm/service/hover.d.ts +2 -2
  75. package/lib/esm/service/hover.js +8 -14
  76. package/lib/esm/service/languageFacts.js +1 -6
  77. package/lib/esm/service/reference.d.ts +2 -2
  78. package/lib/esm/service/reference.js +3 -6
  79. package/lib/esm/service/rename.d.ts +3 -3
  80. package/lib/esm/service/rename.js +9 -6
  81. package/lib/esm/service/service.d.ts +3 -3
  82. package/lib/esm/service/service.js +7 -7
  83. package/lib/esm/service/util.d.ts +1 -1
  84. package/lib/esm/service/util.js +5 -7
  85. package/lib/esm/service/validation.d.ts +3 -3
  86. package/lib/esm/service/validation.js +1 -1
  87. package/lib/esm/tester.js +1 -1
  88. package/lib/esm/visitor.d.ts +1 -1
  89. package/lib/esm/visitor.js +32 -33
  90. package/package.json +17 -12
package/lib/cjs/parser.js CHANGED
@@ -1,6 +1,14 @@
1
1
  "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var _Parser_instances, _Parser_resetState, _Parser_nextToken, _Parser_token, _Parser_getLinesFromFile, _Parser_parseGraph, _Parser_parseIdentifier, _Parser_registerIdentifier, _Parser_parseTextIdentifier, _Parser_parseQuotedTextIdentifierConcatenation, _Parser_parseQuotedTextIdentifier, _Parser_isQuotedStringFollowing, _Parser_parseHtmlIdentifier, _Parser_parseNumericIdentifier, _Parser_parseStatement, _Parser_parseAttributeStatement, _Parser_parseAttributeContainer, _Parser_isAssignmentStart, _Parser_parseIdEqualsIdStatement, _Parser_isIdEqualsIdStatement, _Parser_parseNodeStatement, _Parser_parseEdgeStatement, _Parser_parseEdgeRhs, _Parser_createMissingNode, _Parser_parseAssignment, _Parser_parseSubGraph, _Parser_parseNodeId, _Parser_parseCompassPortDeclaration, _Parser_parseNormalPortDeclaration, _Parser_parsePortDeclaration, _Parser_isCompassPort, _Parser_parseList, _Parser_getContextParseError, _Parser_isInSomeParsingContext, _Parser_abortListParsing, _Parser_isListElement, _Parser_isListTerminator, _Parser_createEmptyArray, _Parser_finishNode, _Parser_createNode, _Parser_createNodeArray, _Parser_parseTokenNode, _Parser_getLastError, _Parser_parseErrorAtPosition, _Parser_parseErrorAtCurrentToken, _Parser_scanError, _Parser_reportExpectedError, _Parser_parseExpectedOneOf, _Parser_parseExpectedTokenOneOf, _Parser_parseExpectedToken, _Parser_parseExpected, _Parser_parseOptionalToken, _Parser_parseOptional, _Parser_isEdgeOp, _Parser_isIdentifier, _Parser_isCompassPortKind, _Parser_speculationHelper, _Parser_lookAhead, _Parser_tryParse;
2
8
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isIdentifierNode = exports.isIdentifier = exports.Parser = exports.ParsingContext = void 0;
9
+ exports.Parser = exports.ParsingContext = void 0;
10
+ exports.isIdentifier = isIdentifier;
11
+ exports.isIdentifierNode = isIdentifierNode;
4
12
  const scanner_js_1 = require("./scanner.js");
5
13
  const util_js_1 = require("./service/util.js");
6
14
  const types_1 = require("./types");
@@ -16,40 +24,21 @@ var ParsingContext;
16
24
  })(ParsingContext || (exports.ParsingContext = ParsingContext = {}));
17
25
  class Parser {
18
26
  constructor() {
27
+ _Parser_instances.add(this);
19
28
  this.currentToken = types_1.SyntaxKind.Unknown;
20
29
  this.identifierCount = 0;
21
30
  this.scanner = new scanner_js_1.DefaultScanner();
22
- this.resetState();
23
- }
24
- resetState() {
25
- this.sourceText = "";
26
- this.scanner.setText(this.sourceText);
27
- this.scanner.setErrorCallback(this.scanError.bind(this));
28
- this.identifierCount = 0;
29
- this.identifiers = new Set();
30
- this.nodeCount = 0;
31
- this.diagnostics = [];
32
- this.currentNodeHasError = false;
33
- this.currentContext = ParsingContext.None;
34
- }
35
- nextToken() {
36
- return this.currentToken = this.scanner.scan(true);
37
- }
38
- token() {
39
- return this.currentToken;
40
- }
41
- getLinesFromFile(sourceText) {
42
- return sourceText.split(/\r?\n/);
31
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_resetState).call(this);
43
32
  }
44
33
  parse(sourceText) {
45
34
  this.sourceText = sourceText;
46
35
  this.scanner.setText(this.sourceText);
47
- this.nextToken();
36
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
48
37
  let graph = undefined;
49
- if (this.token() !== types_1.SyntaxKind.EndOfFileToken) {
50
- graph = this.parseGraph();
51
- if (this.token() !== types_1.SyntaxKind.EndOfFileToken) {
52
- this.parseErrorAtPosition(this.scanner.tokenPos, this.scanner.text.length - 1, "Content after the end of a graph declaration is invalid.", { source: 2, sub: 1 });
38
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) !== types_1.SyntaxKind.EndOfFileToken) {
39
+ graph = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseGraph).call(this);
40
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) !== types_1.SyntaxKind.EndOfFileToken) {
41
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseErrorAtPosition).call(this, this.scanner.tokenPos, this.scanner.text.length - 1, "Content after the end of a graph declaration is invalid.", { source: 2, sub: 1 });
53
42
  }
54
43
  }
55
44
  const result = {
@@ -58,620 +47,597 @@ class Parser {
58
47
  identifiers: this.identifiers,
59
48
  diagnostics: this.diagnostics,
60
49
  };
61
- this.resetState();
62
- return result;
63
- }
64
- parseGraph() {
65
- const strictToken = this.parseOptionalToken(types_1.SyntaxKind.StrictKeyword);
66
- const keyword = this.parseExpectedTokenOneOf(types_1.SyntaxKind.DigraphKeyword, [types_1.SyntaxKind.DigraphKeyword, types_1.SyntaxKind.GraphKeyword]);
67
- const kind = keyword === undefined || keyword.kind === types_1.SyntaxKind.DigraphKeyword
68
- ? types_1.SyntaxKind.DirectedGraph
69
- : types_1.SyntaxKind.UndirectedGraph;
70
- const graphStart = strictToken ? strictToken.pos : keyword.pos;
71
- const node = this.createNode(kind, graphStart);
72
- node.strict = strictToken;
73
- node.keyword = keyword;
74
- node.id = this.isIdentifier() ? this.parseIdentifier() : undefined;
75
- this.parseExpectedToken(types_1.SyntaxKind.OpenBraceToken);
76
- node.statements = this.parseList(ParsingContext.StatementList, () => this.parseStatement());
77
- this.parseExpectedToken(types_1.SyntaxKind.CloseBraceToken);
78
- return this.finishNode(node);
79
- }
80
- parseIdentifier() {
81
- let result;
82
- let escapedIdTexts = new Array();
83
- switch (this.token()) {
84
- case types_1.SyntaxKind.TextIdentifier:
85
- result = this.parseTextIdentifier();
86
- escapedIdTexts.push(result.text);
87
- break;
88
- case types_1.SyntaxKind.StringLiteral:
89
- result = this.parseQuotedTextIdentifierConcatenation();
90
- escapedIdTexts.push(...result.values.map(v => v.text));
91
- break;
92
- case types_1.SyntaxKind.HtmlIdentifier:
93
- result = this.parseHtmlIdentifier();
94
- escapedIdTexts.push(result.htmlContent);
95
- break;
96
- case types_1.SyntaxKind.NumericIdentifier:
97
- result = this.parseNumericIdentifier();
98
- escapedIdTexts.push(result.text);
99
- break;
100
- default:
101
- this.reportExpectedError([types_1.SyntaxKind.TextIdentifier]);
102
- result = this.createMissingNode(types_1.SyntaxKind.TextIdentifier);
103
- break;
104
- }
105
- escapedIdTexts.forEach(i => this.registerIdentifier(i));
50
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_resetState).call(this);
106
51
  return result;
107
52
  }
108
- registerIdentifier(id) {
109
- this.identifierCount++;
110
- const has = this.identifiers.has(id);
111
- if (!has)
112
- this.identifiers.add(id);
113
- }
114
- parseTextIdentifier() {
115
- const node = this.createNode(types_1.SyntaxKind.TextIdentifier);
116
- const text = this.scanner.tokenValue;
117
- this.nextToken();
118
- if (text === undefined)
119
- throw "Satisfy type checker";
120
- node.text = text;
121
- return this.finishNode(node);
122
- }
123
- parseQuotedTextIdentifierConcatenation() {
124
- const node = this.createNode(types_1.SyntaxKind.QuotedTextIdentifier);
125
- node.values = this.parseList(ParsingContext.QuotedTextIdentifierConcatenation, () => this.parseQuotedTextIdentifier(), true);
126
- return this.finishNode(node);
127
- }
128
- parseQuotedTextIdentifier() {
129
- const node = this.createNode(types_1.SyntaxKind.StringLiteral);
130
- if (this.token() === types_1.SyntaxKind.PlusToken)
131
- this.nextToken();
132
- const text = this.scanner.tokenValue;
133
- this.nextToken();
134
- if (text === undefined)
135
- throw "Satisfy type checker";
136
- node.text = text;
137
- return this.finishNode(node);
138
- }
139
- isQuotedStringFollowing() {
140
- this.nextToken();
141
- return this.token() === types_1.SyntaxKind.StringLiteral;
142
- }
143
- parseHtmlIdentifier() {
144
- const node = this.createNode(types_1.SyntaxKind.HtmlIdentifier);
145
- const text = this.scanner.tokenValue;
146
- this.nextToken();
147
- if (text === undefined)
148
- throw "Satisfy type checker";
149
- node.htmlContent = text;
150
- return this.finishNode(node);
151
- }
152
- parseNumericIdentifier() {
153
- const node = this.createNode(types_1.SyntaxKind.NumericIdentifier);
154
- const text = this.scanner.tokenValue;
155
- this.nextToken();
156
- if (text === undefined)
157
- throw "Satisfy type checker";
158
- node.text = text;
159
- node.value = Number(text);
160
- return this.finishNode(node);
161
- }
162
- parseStatement() {
163
- switch (this.token()) {
164
- case types_1.SyntaxKind.GraphKeyword:
165
- case types_1.SyntaxKind.NodeKeyword:
166
- case types_1.SyntaxKind.EdgeKeyword:
167
- return this.parseAttributeStatement();
168
- case types_1.SyntaxKind.OpenBraceToken:
169
- case types_1.SyntaxKind.SubgraphKeyword:
170
- const subgraph = this.parseSubGraph();
171
- if (this.token() === types_1.SyntaxKind.SemicolonToken) {
172
- const subgraphStatement = this.createNode(types_1.SyntaxKind.SubGraphStatement, subgraph.pos);
173
- subgraphStatement.subgraph = subgraph;
174
- subgraphStatement.terminator = this.parseExpectedToken(types_1.SyntaxKind.SemicolonToken);
175
- return this.finishNode(subgraphStatement);
176
- }
177
- if (this.isEdgeOp())
178
- return this.parseEdgeStatement(subgraph);
179
- const subgraphStatement = this.createNode(types_1.SyntaxKind.SubGraphStatement, subgraph.pos);
53
+ }
54
+ exports.Parser = Parser;
55
+ _Parser_instances = new WeakSet(), _Parser_resetState = function _Parser_resetState() {
56
+ this.sourceText = "";
57
+ this.scanner.setText(this.sourceText);
58
+ this.scanner.setErrorCallback(__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_scanError).bind(this));
59
+ this.identifierCount = 0;
60
+ this.identifiers = new Set();
61
+ this.nodeCount = 0;
62
+ this.diagnostics = [];
63
+ this.currentNodeHasError = false;
64
+ this.currentContext = ParsingContext.None;
65
+ }, _Parser_nextToken = function _Parser_nextToken() {
66
+ this.currentToken = this.scanner.scan(true);
67
+ return this.currentToken;
68
+ }, _Parser_token = function _Parser_token() {
69
+ return this.currentToken;
70
+ }, _Parser_getLinesFromFile = function _Parser_getLinesFromFile(sourceText) {
71
+ return sourceText.split(/\r?\n/);
72
+ }, _Parser_parseGraph = function _Parser_parseGraph() {
73
+ const strictToken = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseOptionalToken).call(this, types_1.SyntaxKind.StrictKeyword);
74
+ const keyword = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedTokenOneOf).call(this, types_1.SyntaxKind.DigraphKeyword, [
75
+ types_1.SyntaxKind.DigraphKeyword,
76
+ types_1.SyntaxKind.GraphKeyword,
77
+ ]);
78
+ const kind = keyword === undefined || keyword.kind === types_1.SyntaxKind.DigraphKeyword
79
+ ? types_1.SyntaxKind.DirectedGraph
80
+ : types_1.SyntaxKind.UndirectedGraph;
81
+ const graphStart = strictToken ? strictToken.pos : keyword.pos;
82
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, kind, graphStart);
83
+ node.strict = strictToken;
84
+ node.keyword = keyword;
85
+ node.id = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier).call(this) ? __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseIdentifier).call(this) : undefined;
86
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedToken).call(this, types_1.SyntaxKind.OpenBraceToken);
87
+ node.statements = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseList).call(this, ParsingContext.StatementList, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseStatement).call(this));
88
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedToken).call(this, types_1.SyntaxKind.CloseBraceToken);
89
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
90
+ }, _Parser_parseIdentifier = function _Parser_parseIdentifier() {
91
+ let result;
92
+ const escapedIdTexts = new Array();
93
+ switch (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this)) {
94
+ case types_1.SyntaxKind.TextIdentifier:
95
+ result = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseTextIdentifier).call(this);
96
+ escapedIdTexts.push(result.text);
97
+ break;
98
+ case types_1.SyntaxKind.StringLiteral:
99
+ result = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseQuotedTextIdentifierConcatenation).call(this);
100
+ escapedIdTexts.push(...result.values.map(v => v.text));
101
+ break;
102
+ case types_1.SyntaxKind.HtmlIdentifier:
103
+ result = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseHtmlIdentifier).call(this);
104
+ escapedIdTexts.push(result.htmlContent);
105
+ break;
106
+ case types_1.SyntaxKind.NumericIdentifier:
107
+ result = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseNumericIdentifier).call(this);
108
+ escapedIdTexts.push(result.text);
109
+ break;
110
+ default:
111
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_reportExpectedError).call(this, [types_1.SyntaxKind.TextIdentifier]);
112
+ result = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createMissingNode).call(this, types_1.SyntaxKind.TextIdentifier);
113
+ break;
114
+ }
115
+ for (const i of escapedIdTexts) {
116
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_registerIdentifier).call(this, i);
117
+ }
118
+ return result;
119
+ }, _Parser_registerIdentifier = function _Parser_registerIdentifier(id) {
120
+ this.identifierCount++;
121
+ const has = this.identifiers.has(id);
122
+ if (!has)
123
+ this.identifiers.add(id);
124
+ }, _Parser_parseTextIdentifier = function _Parser_parseTextIdentifier() {
125
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.TextIdentifier);
126
+ const text = this.scanner.tokenValue;
127
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
128
+ if (text === undefined)
129
+ throw "Satisfy type checker";
130
+ node.text = text;
131
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
132
+ }, _Parser_parseQuotedTextIdentifierConcatenation = function _Parser_parseQuotedTextIdentifierConcatenation() {
133
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.QuotedTextIdentifier);
134
+ node.values = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseList).call(this, ParsingContext.QuotedTextIdentifierConcatenation, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseQuotedTextIdentifier).call(this), true);
135
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
136
+ }, _Parser_parseQuotedTextIdentifier = function _Parser_parseQuotedTextIdentifier() {
137
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.StringLiteral);
138
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.PlusToken)
139
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
140
+ const text = this.scanner.tokenValue;
141
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
142
+ if (text === undefined)
143
+ throw "Satisfy type checker";
144
+ node.text = text;
145
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
146
+ }, _Parser_isQuotedStringFollowing = function _Parser_isQuotedStringFollowing() {
147
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
148
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.StringLiteral;
149
+ }, _Parser_parseHtmlIdentifier = function _Parser_parseHtmlIdentifier() {
150
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.HtmlIdentifier);
151
+ const text = this.scanner.tokenValue;
152
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
153
+ if (text === undefined)
154
+ throw "Satisfy type checker";
155
+ node.htmlContent = text;
156
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
157
+ }, _Parser_parseNumericIdentifier = function _Parser_parseNumericIdentifier() {
158
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.NumericIdentifier);
159
+ const text = this.scanner.tokenValue;
160
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
161
+ if (text === undefined)
162
+ throw "Satisfy type checker";
163
+ node.text = text;
164
+ node.value = Number(text);
165
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
166
+ }, _Parser_parseStatement = function _Parser_parseStatement() {
167
+ switch (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this)) {
168
+ case types_1.SyntaxKind.GraphKeyword:
169
+ case types_1.SyntaxKind.NodeKeyword:
170
+ case types_1.SyntaxKind.EdgeKeyword:
171
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseAttributeStatement).call(this);
172
+ case types_1.SyntaxKind.OpenBraceToken:
173
+ case types_1.SyntaxKind.SubgraphKeyword: {
174
+ const subgraph = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseSubGraph).call(this);
175
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.SemicolonToken) {
176
+ const subgraphStatement = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.SubGraphStatement, subgraph.pos);
180
177
  subgraphStatement.subgraph = subgraph;
181
- return this.finishNode(subgraphStatement);
182
- default: {
183
- if (!this.isIdentifier)
184
- debugger;
185
- if (this.lookAhead(() => this.isIdEqualsIdStatement())) {
186
- return this.parseIdEqualsIdStatement();
187
- }
188
- const ns = this.parseNodeStatement();
189
- if (ns.terminator !== undefined || ns.attributes.length !== 0)
190
- return ns;
191
- if (this.isEdgeOp())
192
- return this.parseEdgeStatement(ns.id);
193
- return ns;
178
+ subgraphStatement.terminator = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedToken).call(this, types_1.SyntaxKind.SemicolonToken);
179
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, subgraphStatement);
194
180
  }
181
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isEdgeOp).call(this))
182
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseEdgeStatement).call(this, subgraph);
183
+ const subgraphStatement = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.SubGraphStatement, subgraph.pos);
184
+ subgraphStatement.subgraph = subgraph;
185
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, subgraphStatement);
195
186
  }
196
- }
197
- parseAttributeStatement() {
198
- switch (this.token()) {
199
- case types_1.SyntaxKind.GraphKeyword:
200
- case types_1.SyntaxKind.NodeKeyword:
201
- case types_1.SyntaxKind.EdgeKeyword:
202
- {
203
- const node = this.createNode(types_1.SyntaxKind.AttributeStatement);
204
- node.subject = this.parseTokenNode();
205
- if (this.token() == types_1.SyntaxKind.OpenBracketToken) {
206
- node.attributes = this.parseList(ParsingContext.AttributeContainerList, () => this.parseAttributeContainer());
207
- }
208
- else {
209
- this.reportExpectedError([types_1.SyntaxKind.OpenBracketToken]);
210
- const missingStatement = this.createMissingNode(types_1.SyntaxKind.AttributeStatement);
211
- missingStatement.attributes = this.createNodeArray([this.createMissingNode(types_1.SyntaxKind.AttributeContainer)], this.scanner.tokenPos, this.scanner.tokenPos);
212
- }
213
- node.terminator = this.parseOptionalToken(types_1.SyntaxKind.SemicolonToken);
214
- return this.finishNode(node);
215
- }
216
- default: throw "This should never happen";
217
- }
218
- }
219
- parseAttributeContainer() {
220
- if (this.token() !== types_1.SyntaxKind.OpenBracketToken)
221
- debugger;
222
- const node = this.createNode(types_1.SyntaxKind.AttributeContainer);
223
- node.openBracket = this.parseExpectedToken(types_1.SyntaxKind.OpenBracketToken);
224
- if (this.isIdentifier() && this.lookAhead(() => this.isAssignmentStart())) {
225
- node.assignments = this.parseList(ParsingContext.AssignmentList, () => this.parseAssignment());
226
- }
227
- else {
228
- node.assignments = this.createEmptyArray();
229
- }
230
- node.closeBracket = this.parseExpectedToken(types_1.SyntaxKind.CloseBracketToken);
231
- return this.finishNode(node);
232
- }
233
- isAssignmentStart() {
234
- if (!this.isIdentifier)
235
- debugger;
236
- this.nextToken();
237
- return this.token() == types_1.SyntaxKind.EqualsToken;
238
- }
239
- parseIdEqualsIdStatement() {
240
- if (!this.isIdentifier)
241
- debugger;
242
- const leftIdentifier = this.parseIdentifier();
243
- const node = this.createNode(types_1.SyntaxKind.IdEqualsIdStatement, leftIdentifier.pos);
244
- node.leftId = leftIdentifier;
245
- if (this.token() !== types_1.SyntaxKind.EqualsToken)
246
- debugger;
247
- this.parseExpectedToken(types_1.SyntaxKind.EqualsToken);
248
- node.rightId = this.parseIdentifier();
249
- node.terminator = this.parseOptionalToken(types_1.SyntaxKind.SemicolonToken);
250
- return this.finishNode(node);
251
- }
252
- isIdEqualsIdStatement() {
253
- if (!this.isIdentifier)
254
- debugger;
255
- this.nextToken();
256
- return this.token() === types_1.SyntaxKind.EqualsToken;
257
- }
258
- parseNodeStatement() {
259
- if (!this.isIdentifier)
260
- debugger;
261
- const node = this.createNode(types_1.SyntaxKind.NodeStatement);
262
- node.id = this.parseNodeId();
263
- if (this.token() === types_1.SyntaxKind.OpenBracketToken) {
264
- node.attributes = this.parseList(ParsingContext.AttributeContainerList, () => this.parseAttributeContainer());
265
- }
266
- else {
267
- node.attributes = this.createEmptyArray();
268
- }
269
- node.terminator = this.parseOptionalToken(types_1.SyntaxKind.SemicolonToken);
270
- return this.finishNode(node);
271
- }
272
- parseEdgeStatement(precedingItem) {
273
- console.assert(precedingItem.kind === types_1.SyntaxKind.SubGraph || precedingItem.kind === types_1.SyntaxKind.NodeId);
274
- console.assert(precedingItem.pos !== undefined);
275
- if (!this.isEdgeOp())
276
- debugger;
277
- const node = this.createNode(types_1.SyntaxKind.EdgeStatement, precedingItem.pos);
278
- node.source = precedingItem;
279
- node.rhs = this.parseList(ParsingContext.EdgeRhsList, () => this.parseEdgeRhs());
280
- if (this.token() === types_1.SyntaxKind.OpenBracketToken) {
281
- node.attributes = this.parseList(ParsingContext.AttributeContainerList, () => this.parseAttributeContainer());
282
- }
283
- else {
284
- node.attributes = this.createEmptyArray();
285
- }
286
- node.terminator = this.parseOptionalToken(types_1.SyntaxKind.SemicolonToken);
287
- return this.finishNode(node);
288
- }
289
- parseEdgeRhs() {
290
- const node = this.createNode(types_1.SyntaxKind.EdgeRhs);
291
- const op = this.parseExpectedTokenOneOf(types_1.SyntaxKind.DirectedEdgeOp, [types_1.SyntaxKind.DirectedEdgeOp, types_1.SyntaxKind.UndirectedEdgeOp]);
292
- node.operation = op;
293
- switch (this.token()) {
294
- case types_1.SyntaxKind.SubgraphKeyword:
295
- case types_1.SyntaxKind.OpenBraceToken:
296
- node.target = this.parseSubGraph();
297
- break;
298
- default: {
299
- node.target = this.parseNodeId();
300
- break;
187
+ default: {
188
+ if (!__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier))
189
+ debugger;
190
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_lookAhead).call(this, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdEqualsIdStatement).call(this))) {
191
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseIdEqualsIdStatement).call(this);
301
192
  }
193
+ const ns = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseNodeStatement).call(this);
194
+ if (ns.terminator !== undefined || ns.attributes.length !== 0)
195
+ return ns;
196
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isEdgeOp).call(this))
197
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseEdgeStatement).call(this, ns.id);
198
+ return ns;
302
199
  }
303
- return this.finishNode(node);
304
200
  }
305
- createMissingNode(kind) {
306
- const result = this.createNode(kind);
307
- if (isIdentifierNode(result)) {
308
- switch (result.kind) {
309
- case types_1.SyntaxKind.QuotedTextIdentifier: {
310
- const literal = this.createNode(types_1.SyntaxKind.StringLiteral);
311
- literal.text = "";
312
- const values = this.createNodeArray([literal], result.pos, result.pos);
313
- result.values = values;
314
- break;
315
- }
316
- case types_1.SyntaxKind.HtmlIdentifier:
317
- result.htmlContent = "";
318
- break;
319
- case types_1.SyntaxKind.TextIdentifier:
320
- case types_1.SyntaxKind.NumericIdentifier:
321
- result.text = "";
322
- break;
201
+ }, _Parser_parseAttributeStatement = function _Parser_parseAttributeStatement() {
202
+ switch (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this)) {
203
+ case types_1.SyntaxKind.GraphKeyword:
204
+ case types_1.SyntaxKind.NodeKeyword:
205
+ case types_1.SyntaxKind.EdgeKeyword: {
206
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.AttributeStatement);
207
+ node.subject = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseTokenNode).call(this);
208
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.OpenBracketToken) {
209
+ node.attributes = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseList).call(this, ParsingContext.AttributeContainerList, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseAttributeContainer).call(this));
323
210
  }
324
- }
325
- return this.finishNode(result);
326
- }
327
- parseAssignment() {
328
- if (!this.isIdentifier)
329
- debugger;
330
- const node = this.createNode(types_1.SyntaxKind.Assignment);
331
- node.leftId = this.parseIdentifier();
332
- this.parseExpectedToken(types_1.SyntaxKind.EqualsToken);
333
- node.rightId = this.parseIdentifier();
334
- let terminator = this.parseOptionalToken(types_1.SyntaxKind.CommaToken);
335
- if (terminator === undefined)
336
- terminator = this.parseOptionalToken(types_1.SyntaxKind.SemicolonToken);
337
- node.terminator = terminator;
338
- return this.finishNode(node);
339
- }
340
- parseSubGraph() {
341
- console.assert(this.token() === types_1.SyntaxKind.SubgraphKeyword || this.token() === types_1.SyntaxKind.OpenBraceToken);
342
- const subGraph = this.parseOptionalToken(types_1.SyntaxKind.SubgraphKeyword);
343
- const subGraphStart = subGraph !== undefined ? subGraph.pos : undefined;
344
- const node = this.createNode(types_1.SyntaxKind.SubGraph, subGraphStart);
345
- let identifier = subGraph !== undefined && this.isIdentifier()
346
- ? this.parseIdentifier()
347
- : undefined;
348
- node.id = identifier;
349
- this.parseExpectedToken(types_1.SyntaxKind.OpenBraceToken);
350
- node.statements = this.parseList(ParsingContext.StatementList, () => this.parseStatement());
351
- this.parseExpectedToken(types_1.SyntaxKind.CloseBraceToken);
352
- return this.finishNode(node);
353
- }
354
- parseNodeId() {
355
- if (!this.isIdentifier)
356
- debugger;
357
- const node = this.createNode(types_1.SyntaxKind.NodeId);
358
- node.id = this.parseIdentifier();
359
- node.port = this.token() === types_1.SyntaxKind.ColonToken
360
- ? this.parsePortDeclaration()
361
- : undefined;
362
- return this.finishNode(node);
363
- }
364
- parseCompassPortDeclaration() {
365
- console.assert(this.token() === types_1.SyntaxKind.ColonToken);
366
- const node = this.createNode(types_1.SyntaxKind.CompassPortDeclaration);
367
- node.colon = this.parseTokenNode();
368
- node.compassPt = this.parseTokenNode();
369
- return this.finishNode(node);
370
- }
371
- parseNormalPortDeclaration() {
372
- console.assert(this.token() === types_1.SyntaxKind.ColonToken);
373
- const node = this.createNode(types_1.SyntaxKind.NormalPortDeclaration);
374
- node.colon = this.parseTokenNode();
375
- node.id = this.parseIdentifier();
376
- node.compassPt = this.token() === types_1.SyntaxKind.ColonToken
377
- ? this.parseCompassPortDeclaration()
378
- : undefined;
379
- return this.finishNode(node);
380
- }
381
- parsePortDeclaration() {
382
- console.assert(this.token() === types_1.SyntaxKind.ColonToken);
383
- if (this.lookAhead(() => this.isCompassPort()))
384
- return this.parseCompassPortDeclaration();
385
- return this.parseNormalPortDeclaration();
386
- }
387
- isCompassPort() {
388
- console.assert(this.token() === types_1.SyntaxKind.ColonToken);
389
- if (this.token() !== types_1.SyntaxKind.ColonToken)
390
- return false;
391
- this.nextToken();
392
- return this.isCompassPortKind(this.token());
393
- }
394
- parseList(context, parseElement, atLeastOne = false) {
395
- const saveParsingContext = this.currentContext;
396
- this.currentContext |= 1 << context;
397
- let isListTerminated = atLeastOne ? false : this.isListTerminator(context);
398
- const startPos = this.scanner.startPos;
399
- const elements = new Array();
400
- while (!isListTerminated) {
401
- if (this.isListElement(context, false)) {
402
- const element = parseElement();
403
- elements.push(element);
404
- isListTerminated = this.isListTerminator(context);
405
- continue;
211
+ else {
212
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_reportExpectedError).call(this, [types_1.SyntaxKind.OpenBracketToken]);
213
+ const missingStatement = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createMissingNode).call(this, types_1.SyntaxKind.AttributeStatement);
214
+ missingStatement.attributes = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNodeArray).call(this, [__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createMissingNode).call(this, types_1.SyntaxKind.AttributeContainer)], this.scanner.tokenPos, this.scanner.tokenPos);
406
215
  }
407
- if (this.abortListParsing(context))
408
- break;
216
+ node.terminator = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseOptionalToken).call(this, types_1.SyntaxKind.SemicolonToken);
217
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
409
218
  }
410
- this.currentContext = saveParsingContext;
411
- return this.createNodeArray(elements, startPos);
412
- }
413
- getContextParseError(context) {
414
- switch (context) {
415
- case ParsingContext.StatementList:
416
- return "Assignment, node definition, graph/node/edge attribute or edge definition expected.";
417
- case ParsingContext.AssignmentList:
418
- return "Assignment expected.";
419
- case ParsingContext.EdgeRhsList:
420
- return "Edge operation expected.";
421
- case ParsingContext.QuotedTextIdentifierConcatenation:
422
- return "Quoted identifier expected";
423
- case ParsingContext.AttributeContainerList:
424
- return "Attribute marker expected.";
425
- case ParsingContext.None:
426
- return "Wat, no parsing context";
427
- case ParsingContext.Count:
428
- return "Wat, 'Count' parsing context";
429
- default:
430
- return (0, util_js_1.assertNever)(context);
219
+ default:
220
+ throw "This should never happen";
221
+ }
222
+ }, _Parser_parseAttributeContainer = function _Parser_parseAttributeContainer() {
223
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) !== types_1.SyntaxKind.OpenBracketToken)
224
+ debugger;
225
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.AttributeContainer);
226
+ node.openBracket = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedToken).call(this, types_1.SyntaxKind.OpenBracketToken);
227
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier).call(this) && __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_lookAhead).call(this, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isAssignmentStart).call(this))) {
228
+ node.assignments = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseList).call(this, ParsingContext.AssignmentList, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseAssignment).call(this));
229
+ }
230
+ else {
231
+ node.assignments = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createEmptyArray).call(this);
232
+ }
233
+ node.closeBracket = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedToken).call(this, types_1.SyntaxKind.CloseBracketToken);
234
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
235
+ }, _Parser_isAssignmentStart = function _Parser_isAssignmentStart() {
236
+ if (!__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier))
237
+ debugger;
238
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
239
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.EqualsToken;
240
+ }, _Parser_parseIdEqualsIdStatement = function _Parser_parseIdEqualsIdStatement() {
241
+ if (!__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier))
242
+ debugger;
243
+ const leftIdentifier = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseIdentifier).call(this);
244
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.IdEqualsIdStatement, leftIdentifier.pos);
245
+ node.leftId = leftIdentifier;
246
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) !== types_1.SyntaxKind.EqualsToken)
247
+ debugger;
248
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedToken).call(this, types_1.SyntaxKind.EqualsToken);
249
+ node.rightId = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseIdentifier).call(this);
250
+ node.terminator = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseOptionalToken).call(this, types_1.SyntaxKind.SemicolonToken);
251
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
252
+ }, _Parser_isIdEqualsIdStatement = function _Parser_isIdEqualsIdStatement() {
253
+ if (!__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier))
254
+ debugger;
255
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
256
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.EqualsToken;
257
+ }, _Parser_parseNodeStatement = function _Parser_parseNodeStatement() {
258
+ if (!__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier))
259
+ debugger;
260
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.NodeStatement);
261
+ node.id = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseNodeId).call(this);
262
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.OpenBracketToken) {
263
+ node.attributes = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseList).call(this, ParsingContext.AttributeContainerList, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseAttributeContainer).call(this));
264
+ }
265
+ else {
266
+ node.attributes = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createEmptyArray).call(this);
267
+ }
268
+ node.terminator = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseOptionalToken).call(this, types_1.SyntaxKind.SemicolonToken);
269
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
270
+ }, _Parser_parseEdgeStatement = function _Parser_parseEdgeStatement(precedingItem) {
271
+ console.assert(precedingItem.kind === types_1.SyntaxKind.SubGraph || precedingItem.kind === types_1.SyntaxKind.NodeId);
272
+ console.assert(precedingItem.pos !== undefined);
273
+ if (!__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isEdgeOp).call(this))
274
+ debugger;
275
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.EdgeStatement, precedingItem.pos);
276
+ node.source = precedingItem;
277
+ node.rhs = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseList).call(this, ParsingContext.EdgeRhsList, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseEdgeRhs).call(this));
278
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.OpenBracketToken) {
279
+ node.attributes = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseList).call(this, ParsingContext.AttributeContainerList, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseAttributeContainer).call(this));
280
+ }
281
+ else {
282
+ node.attributes = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createEmptyArray).call(this);
283
+ }
284
+ node.terminator = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseOptionalToken).call(this, types_1.SyntaxKind.SemicolonToken);
285
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
286
+ }, _Parser_parseEdgeRhs = function _Parser_parseEdgeRhs() {
287
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.EdgeRhs);
288
+ const op = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedTokenOneOf).call(this, types_1.SyntaxKind.DirectedEdgeOp, [
289
+ types_1.SyntaxKind.DirectedEdgeOp,
290
+ types_1.SyntaxKind.UndirectedEdgeOp,
291
+ ]);
292
+ node.operation = op;
293
+ switch (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this)) {
294
+ case types_1.SyntaxKind.SubgraphKeyword:
295
+ case types_1.SyntaxKind.OpenBraceToken:
296
+ node.target = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseSubGraph).call(this);
297
+ break;
298
+ default: {
299
+ node.target = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseNodeId).call(this);
300
+ break;
431
301
  }
432
302
  }
433
- isInSomeParsingContext() {
434
- for (let ctx = 0; ctx < ParsingContext.Count; ctx++) {
435
- if (this.currentContext & (1 << ctx)) {
436
- if (this.isListElement(ctx, true) || this.isListTerminator(ctx)) {
437
- return true;
438
- }
303
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
304
+ }, _Parser_createMissingNode = function _Parser_createMissingNode(kind) {
305
+ const result = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, kind);
306
+ if (isIdentifierNode(result)) {
307
+ switch (result.kind) {
308
+ case types_1.SyntaxKind.QuotedTextIdentifier: {
309
+ const literal = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.StringLiteral);
310
+ literal.text = "";
311
+ const values = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNodeArray).call(this, [literal], result.pos, result.pos);
312
+ result.values = values;
313
+ break;
439
314
  }
315
+ case types_1.SyntaxKind.HtmlIdentifier:
316
+ result.htmlContent = "";
317
+ break;
318
+ case types_1.SyntaxKind.TextIdentifier:
319
+ case types_1.SyntaxKind.NumericIdentifier:
320
+ result.text = "";
321
+ break;
440
322
  }
441
- return false;
442
323
  }
443
- abortListParsing(context) {
444
- this.parseErrorAtCurrentToken(this.getContextParseError(context), 2);
445
- if (this.isInSomeParsingContext()) {
446
- return true;
447
- }
448
- this.nextToken();
324
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, result);
325
+ }, _Parser_parseAssignment = function _Parser_parseAssignment() {
326
+ if (!__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier))
327
+ debugger;
328
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.Assignment);
329
+ node.leftId = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseIdentifier).call(this);
330
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedToken).call(this, types_1.SyntaxKind.EqualsToken);
331
+ node.rightId = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseIdentifier).call(this);
332
+ let terminator = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseOptionalToken).call(this, types_1.SyntaxKind.CommaToken);
333
+ if (terminator === undefined)
334
+ terminator = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseOptionalToken).call(this, types_1.SyntaxKind.SemicolonToken);
335
+ node.terminator = terminator;
336
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
337
+ }, _Parser_parseSubGraph = function _Parser_parseSubGraph() {
338
+ console.assert(__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.SubgraphKeyword ||
339
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.OpenBraceToken);
340
+ const subGraph = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseOptionalToken).call(this, types_1.SyntaxKind.SubgraphKeyword);
341
+ const subGraphStart = subGraph !== undefined ? subGraph.pos : undefined;
342
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.SubGraph, subGraphStart);
343
+ const identifier = subGraph !== undefined && __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier).call(this) ? __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseIdentifier).call(this) : undefined;
344
+ node.id = identifier;
345
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedToken).call(this, types_1.SyntaxKind.OpenBraceToken);
346
+ node.statements = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseList).call(this, ParsingContext.StatementList, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseStatement).call(this));
347
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseExpectedToken).call(this, types_1.SyntaxKind.CloseBraceToken);
348
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
349
+ }, _Parser_parseNodeId = function _Parser_parseNodeId() {
350
+ if (!__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier))
351
+ debugger;
352
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.NodeId);
353
+ node.id = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseIdentifier).call(this);
354
+ node.port =
355
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.ColonToken ? __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parsePortDeclaration).call(this) : undefined;
356
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
357
+ }, _Parser_parseCompassPortDeclaration = function _Parser_parseCompassPortDeclaration() {
358
+ console.assert(__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.ColonToken);
359
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.CompassPortDeclaration);
360
+ node.colon = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseTokenNode).call(this);
361
+ node.compassPt = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseTokenNode).call(this);
362
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
363
+ }, _Parser_parseNormalPortDeclaration = function _Parser_parseNormalPortDeclaration() {
364
+ console.assert(__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.ColonToken);
365
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, types_1.SyntaxKind.NormalPortDeclaration);
366
+ node.colon = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseTokenNode).call(this);
367
+ node.id = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseIdentifier).call(this);
368
+ node.compassPt =
369
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.ColonToken
370
+ ? __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseCompassPortDeclaration).call(this)
371
+ : undefined;
372
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
373
+ }, _Parser_parsePortDeclaration = function _Parser_parsePortDeclaration() {
374
+ console.assert(__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.ColonToken);
375
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_lookAhead).call(this, () => __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isCompassPort).call(this)))
376
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseCompassPortDeclaration).call(this);
377
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseNormalPortDeclaration).call(this);
378
+ }, _Parser_isCompassPort = function _Parser_isCompassPort() {
379
+ console.assert(__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.ColonToken);
380
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) !== types_1.SyntaxKind.ColonToken)
449
381
  return false;
450
- }
451
- isListElement(context, _inErrorRecovery) {
452
- switch (context) {
453
- case ParsingContext.AssignmentList:
454
- return this.isIdentifier();
455
- case ParsingContext.AttributeContainerList:
456
- return this.token() === types_1.SyntaxKind.OpenBracketToken;
457
- case ParsingContext.EdgeRhsList:
458
- return this.token() === types_1.SyntaxKind.DirectedEdgeOp
459
- || this.token() === types_1.SyntaxKind.UndirectedEdgeOp;
460
- case ParsingContext.QuotedTextIdentifierConcatenation:
461
- return this.token() === types_1.SyntaxKind.StringLiteral
462
- || this.token() === types_1.SyntaxKind.PlusToken;
463
- case ParsingContext.StatementList:
464
- return this.isIdentifier()
465
- || this.token() === types_1.SyntaxKind.SubgraphKeyword
466
- || this.token() === types_1.SyntaxKind.OpenBraceToken
467
- || this.token() === types_1.SyntaxKind.GraphKeyword
468
- || this.token() === types_1.SyntaxKind.EdgeKeyword
469
- || this.token() === types_1.SyntaxKind.NodeKeyword;
470
- default: throw "This should never happen";
471
- }
472
- }
473
- isListTerminator(context) {
474
- const token = this.token();
475
- if (token === types_1.SyntaxKind.EndOfFileToken)
476
- return true;
477
- switch (context) {
478
- case ParsingContext.StatementList:
479
- return token === types_1.SyntaxKind.CloseBraceToken;
480
- case ParsingContext.AttributeContainerList:
481
- return token !== types_1.SyntaxKind.OpenBracketToken;
482
- case ParsingContext.AssignmentList:
483
- return token === types_1.SyntaxKind.CloseBracketToken;
484
- case ParsingContext.EdgeRhsList:
485
- return token !== types_1.SyntaxKind.DirectedEdgeOp && token !== types_1.SyntaxKind.UndirectedEdgeOp;
486
- case ParsingContext.QuotedTextIdentifierConcatenation:
487
- return token !== types_1.SyntaxKind.PlusToken;
488
- default: throw "Unsupported parsing context";
489
- }
490
- }
491
- createEmptyArray() {
492
- const startPos = this.scanner.startPos;
493
- const elements = new Array();
494
- return this.createNodeArray(elements, startPos);
495
- }
496
- finishNode(node, end) {
497
- node.end = end === undefined ? this.scanner.startPos : end;
498
- if (this.currentNodeHasError) {
499
- this.currentNodeHasError = false;
500
- node.flags |= 2;
501
- }
502
- return node;
503
- }
504
- createNode(kind, pos) {
505
- this.nodeCount++;
506
- const p = pos !== undefined && pos >= 0 ? pos : this.scanner.startPos;
507
- if (isNodeKind(kind) || kind === types_1.SyntaxKind.Unknown)
508
- return newNode(kind, p, p);
509
- return isIdentifier(kind)
510
- ? newIdentifier(kind, p, p)
511
- : newToken(kind, p, p);
512
- }
513
- createNodeArray(elements, pos, end) {
514
- const length = elements.length;
515
- const array = (length >= 1 && length <= 4 ? elements.slice() : elements);
516
- array.pos = pos;
517
- array.end = end === undefined ? this.scanner.startPos : end;
518
- return array;
519
- }
520
- parseTokenNode() {
521
- const node = this.createNode(this.token());
522
- this.nextToken();
523
- return this.finishNode(node);
524
- }
525
- getLastError(diagnostics) {
526
- return diagnostics && diagnostics.length > 0 ? diagnostics[diagnostics.length - 1] : undefined;
527
- }
528
- parseErrorAtPosition(start, end, message, code) {
529
- const ds = this.diagnostics;
530
- const lastError = this.getLastError(ds);
531
- if (!lastError || start !== lastError.start) {
532
- ds.push({
533
- category: types_1.DiagnosticCategory.Error,
534
- start,
535
- end,
536
- message,
537
- code,
538
- });
539
- }
540
- this.currentNodeHasError = true;
541
- }
542
- parseErrorAtCurrentToken(message, sub) {
543
- const error = {
544
- source: 2,
545
- sub,
546
- };
547
- return this.parseErrorAtPosition(this.scanner.tokenPos, this.scanner.pos, message, error);
548
- }
549
- scanError(message, _category, sub, length) {
550
- const errorPos = this.scanner.pos;
551
- const err = {
552
- source: 1,
553
- sub,
554
- };
555
- this.parseErrorAtPosition(errorPos, errorPos + length, message, err);
556
- }
557
- reportExpectedError(expectedKinds) {
558
- const found = this.isIdentifier()
559
- ? "identifier"
560
- : this.token() === types_1.SyntaxKind.EndOfFileToken
561
- ? "end of file"
562
- : `"${(0, scanner_js_1.getTokenAsText)(this.token())}"`;
563
- const expected = expectedKinds.map(k => {
564
- if (isIdentifier(k))
565
- return "identifier";
566
- else if (k === types_1.SyntaxKind.EndOfFileToken)
567
- return "end of file";
568
- return `"${(0, scanner_js_1.getTokenAsText)(k)}"`;
569
- });
570
- const lastExpected = expected.pop();
571
- const expectedJoined = expected.join(", ");
572
- const msg = expected.length > 0
573
- ? `Expected ${expectedJoined} or ${lastExpected} but found ${found} instead.`
574
- : `Expected ${lastExpected} but found ${found} instead.`;
575
- this.parseErrorAtCurrentToken(msg, 0);
576
- }
577
- parseExpectedOneOf(...kinds) {
578
- if (kinds.length < 2) {
579
- console.assert(false);
580
- debugger;
382
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
383
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isCompassPortKind).call(this, __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this));
384
+ }, _Parser_parseList = function _Parser_parseList(context, parseElement, atLeastOne = false) {
385
+ const saveParsingContext = this.currentContext;
386
+ this.currentContext |= 1 << context;
387
+ let isListTerminated = atLeastOne ? false : __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isListTerminator).call(this, context);
388
+ const startPos = this.scanner.startPos;
389
+ const elements = new Array();
390
+ while (!isListTerminated) {
391
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isListElement).call(this, context, false)) {
392
+ const element = parseElement();
393
+ elements.push(element);
394
+ isListTerminated = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isListTerminator).call(this, context);
395
+ continue;
581
396
  }
582
- for (const kind of kinds) {
583
- if (this.token() === kind) {
584
- this.nextToken();
397
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_abortListParsing).call(this, context))
398
+ break;
399
+ }
400
+ this.currentContext = saveParsingContext;
401
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNodeArray).call(this, elements, startPos);
402
+ }, _Parser_getContextParseError = function _Parser_getContextParseError(context) {
403
+ switch (context) {
404
+ case ParsingContext.StatementList:
405
+ return "Assignment, node definition, graph/node/edge attribute or edge definition expected.";
406
+ case ParsingContext.AssignmentList:
407
+ return "Assignment expected.";
408
+ case ParsingContext.EdgeRhsList:
409
+ return "Edge operation expected.";
410
+ case ParsingContext.QuotedTextIdentifierConcatenation:
411
+ return "Quoted identifier expected";
412
+ case ParsingContext.AttributeContainerList:
413
+ return "Attribute marker expected.";
414
+ case ParsingContext.None:
415
+ return "Wat, no parsing context";
416
+ case ParsingContext.Count:
417
+ return "Wat, 'Count' parsing context";
418
+ default:
419
+ return (0, util_js_1.assertNever)(context);
420
+ }
421
+ }, _Parser_isInSomeParsingContext = function _Parser_isInSomeParsingContext() {
422
+ for (let ctx = 0; ctx < ParsingContext.Count; ctx++) {
423
+ if (this.currentContext & (1 << ctx)) {
424
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isListElement).call(this, ctx, true) ||
425
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isListTerminator).call(this, ctx)) {
585
426
  return true;
586
427
  }
587
428
  }
588
- this.reportExpectedError(kinds);
589
- return false;
590
429
  }
591
- parseExpectedTokenOneOf(fallback, kinds) {
592
- if (kinds.length < 2) {
593
- console.assert(false);
594
- debugger;
595
- }
596
- for (const kind of kinds) {
597
- if (this.token() === kind) {
598
- const node = this.createNode(this.token());
599
- this.nextToken();
600
- return this.finishNode(node);
601
- }
602
- }
603
- this.reportExpectedError(kinds);
604
- return this.createMissingNode(fallback);
605
- }
606
- parseExpectedToken(kind) {
607
- const tokenNode = this.parseOptionalToken(kind);
608
- if (tokenNode !== undefined)
609
- return tokenNode;
610
- this.reportExpectedError([kind]);
611
- return this.createMissingNode(kind);
612
- }
613
- parseExpected(kind) {
614
- const res = this.parseOptional(kind);
615
- if (!res)
616
- this.reportExpectedError([kind]);
617
- return res;
618
- }
619
- parseOptionalToken(t) {
620
- if (this.token() === t) {
621
- return this.parseTokenNode();
622
- }
623
- return undefined;
430
+ return false;
431
+ }, _Parser_abortListParsing = function _Parser_abortListParsing(context) {
432
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseErrorAtCurrentToken).call(this, __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_getContextParseError).call(this, context), 2);
433
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isInSomeParsingContext).call(this)) {
434
+ return true;
435
+ }
436
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
437
+ return false;
438
+ }, _Parser_isListElement = function _Parser_isListElement(context, _inErrorRecovery) {
439
+ switch (context) {
440
+ case ParsingContext.AssignmentList:
441
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier).call(this);
442
+ case ParsingContext.AttributeContainerList:
443
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.OpenBracketToken;
444
+ case ParsingContext.EdgeRhsList:
445
+ return (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.DirectedEdgeOp ||
446
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.UndirectedEdgeOp);
447
+ case ParsingContext.QuotedTextIdentifierConcatenation:
448
+ return (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.StringLiteral ||
449
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.PlusToken);
450
+ case ParsingContext.StatementList:
451
+ return (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier).call(this) ||
452
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.SubgraphKeyword ||
453
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.OpenBraceToken ||
454
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.GraphKeyword ||
455
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.EdgeKeyword ||
456
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.NodeKeyword);
457
+ default:
458
+ throw "This should never happen";
459
+ }
460
+ }, _Parser_isListTerminator = function _Parser_isListTerminator(context) {
461
+ const token = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this);
462
+ if (token === types_1.SyntaxKind.EndOfFileToken)
463
+ return true;
464
+ switch (context) {
465
+ case ParsingContext.StatementList:
466
+ return token === types_1.SyntaxKind.CloseBraceToken;
467
+ case ParsingContext.AttributeContainerList:
468
+ return token !== types_1.SyntaxKind.OpenBracketToken;
469
+ case ParsingContext.AssignmentList:
470
+ return token === types_1.SyntaxKind.CloseBracketToken;
471
+ case ParsingContext.EdgeRhsList:
472
+ return token !== types_1.SyntaxKind.DirectedEdgeOp && token !== types_1.SyntaxKind.UndirectedEdgeOp;
473
+ case ParsingContext.QuotedTextIdentifierConcatenation:
474
+ return token !== types_1.SyntaxKind.PlusToken;
475
+ default:
476
+ throw "Unsupported parsing context";
477
+ }
478
+ }, _Parser_createEmptyArray = function _Parser_createEmptyArray() {
479
+ const startPos = this.scanner.startPos;
480
+ const elements = new Array();
481
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNodeArray).call(this, elements, startPos);
482
+ }, _Parser_finishNode = function _Parser_finishNode(node, end) {
483
+ node.end = end === undefined ? this.scanner.startPos : end;
484
+ if (this.currentNodeHasError) {
485
+ this.currentNodeHasError = false;
486
+ node.flags |= 2;
487
+ }
488
+ return node;
489
+ }, _Parser_createNode = function _Parser_createNode(kind, pos) {
490
+ this.nodeCount++;
491
+ const p = pos !== undefined && pos >= 0 ? pos : this.scanner.startPos;
492
+ if (isNodeKind(kind) || kind === types_1.SyntaxKind.Unknown)
493
+ return newNode(kind, p, p);
494
+ return isIdentifier(kind) ? newIdentifier(kind, p, p) : newToken(kind, p, p);
495
+ }, _Parser_createNodeArray = function _Parser_createNodeArray(elements, pos, end) {
496
+ const length = elements.length;
497
+ const array = ((length >= 1 && length <= 4 ? elements.slice() : elements));
498
+ array.pos = pos;
499
+ array.end = end === undefined ? this.scanner.startPos : end;
500
+ return array;
501
+ }, _Parser_parseTokenNode = function _Parser_parseTokenNode() {
502
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this));
503
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
504
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
505
+ }, _Parser_getLastError = function _Parser_getLastError(diagnostics) {
506
+ return diagnostics && diagnostics.length > 0
507
+ ? diagnostics[diagnostics.length - 1]
508
+ : undefined;
509
+ }, _Parser_parseErrorAtPosition = function _Parser_parseErrorAtPosition(start, end, message, code) {
510
+ const ds = this.diagnostics;
511
+ const lastError = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_getLastError).call(this, ds);
512
+ if (!lastError || start !== lastError.start) {
513
+ ds.push({
514
+ category: types_1.DiagnosticCategory.Error,
515
+ start,
516
+ end,
517
+ message,
518
+ code,
519
+ });
624
520
  }
625
- parseOptional(t) {
626
- if (this.token() === t) {
627
- this.nextToken();
628
- return true;
521
+ this.currentNodeHasError = true;
522
+ }, _Parser_parseErrorAtCurrentToken = function _Parser_parseErrorAtCurrentToken(message, sub) {
523
+ const error = {
524
+ source: 2,
525
+ sub,
526
+ };
527
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseErrorAtPosition).call(this, this.scanner.tokenPos, this.scanner.pos, message, error);
528
+ }, _Parser_scanError = function _Parser_scanError(message, _category, sub, length) {
529
+ const errorPos = this.scanner.pos;
530
+ const err = {
531
+ source: 1,
532
+ sub,
533
+ };
534
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseErrorAtPosition).call(this, errorPos, errorPos + length, message, err);
535
+ }, _Parser_reportExpectedError = function _Parser_reportExpectedError(expectedKinds) {
536
+ const found = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_isIdentifier).call(this)
537
+ ? "identifier"
538
+ : __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === types_1.SyntaxKind.EndOfFileToken
539
+ ? "end of file"
540
+ : `"${(0, scanner_js_1.getTokenAsText)(__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this))}"`;
541
+ const expected = expectedKinds.map(k => {
542
+ if (isIdentifier(k)) {
543
+ return "identifier";
629
544
  }
630
- return false;
631
- }
632
- isEdgeOp() {
633
- switch (this.token()) {
634
- case types_1.SyntaxKind.DirectedEdgeOp:
635
- case types_1.SyntaxKind.UndirectedEdgeOp:
636
- return true;
637
- default:
638
- return false;
545
+ if (k === types_1.SyntaxKind.EndOfFileToken) {
546
+ return "end of file";
639
547
  }
640
- }
641
- isIdentifier() {
642
- switch (this.token()) {
643
- case types_1.SyntaxKind.TextIdentifier:
644
- case types_1.SyntaxKind.NumericIdentifier:
645
- case types_1.SyntaxKind.StringLiteral:
646
- case types_1.SyntaxKind.HtmlIdentifier:
647
- return true;
648
- default:
649
- return false;
548
+ return `"${(0, scanner_js_1.getTokenAsText)(k)}"`;
549
+ });
550
+ const lastExpected = expected.pop();
551
+ const expectedJoined = expected.join(", ");
552
+ const msg = expected.length > 0
553
+ ? `Expected ${expectedJoined} or ${lastExpected} but found ${found} instead.`
554
+ : `Expected ${lastExpected} but found ${found} instead.`;
555
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseErrorAtCurrentToken).call(this, msg, 0);
556
+ }, _Parser_parseExpectedOneOf = function _Parser_parseExpectedOneOf(...kinds) {
557
+ if (kinds.length < 2) {
558
+ console.assert(false);
559
+ debugger;
560
+ }
561
+ for (const kind of kinds) {
562
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === kind) {
563
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
564
+ return true;
650
565
  }
651
566
  }
652
- isCompassPortKind(kind) {
653
- return kind >= types_1.SyntaxKind.CompassCenterToken && kind <= types_1.SyntaxKind.CompassEnd;
654
- }
655
- speculationHelper(callback, isLookAhead) {
656
- const saveToken = this.token();
657
- const saveDiagnosticsLength = this.diagnostics.length;
658
- const result = isLookAhead
659
- ? this.scanner.lookAhead(callback)
660
- : this.scanner.tryScan(callback);
661
- if (!result || isLookAhead) {
662
- this.currentToken = saveToken;
663
- this.diagnostics.length = saveDiagnosticsLength;
567
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_reportExpectedError).call(this, kinds);
568
+ return false;
569
+ }, _Parser_parseExpectedTokenOneOf = function _Parser_parseExpectedTokenOneOf(fallback, kinds) {
570
+ if (kinds.length < 2) {
571
+ console.assert(false);
572
+ debugger;
573
+ }
574
+ for (const kind of kinds) {
575
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === kind) {
576
+ const node = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createNode).call(this, __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this));
577
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
578
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_finishNode).call(this, node);
664
579
  }
665
- return result;
666
580
  }
667
- lookAhead(callback) {
668
- return this.speculationHelper(callback, true);
581
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_reportExpectedError).call(this, kinds);
582
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createMissingNode).call(this, fallback);
583
+ }, _Parser_parseExpectedToken = function _Parser_parseExpectedToken(kind) {
584
+ const tokenNode = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseOptionalToken).call(this, kind);
585
+ if (tokenNode !== undefined)
586
+ return tokenNode;
587
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_reportExpectedError).call(this, [kind]);
588
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_createMissingNode).call(this, kind);
589
+ }, _Parser_parseExpected = function _Parser_parseExpected(kind) {
590
+ const res = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseOptional).call(this, kind);
591
+ if (!res)
592
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_reportExpectedError).call(this, [kind]);
593
+ return res;
594
+ }, _Parser_parseOptionalToken = function _Parser_parseOptionalToken(t) {
595
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === t) {
596
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_parseTokenNode).call(this);
597
+ }
598
+ return undefined;
599
+ }, _Parser_parseOptional = function _Parser_parseOptional(t) {
600
+ if (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this) === t) {
601
+ __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_nextToken).call(this);
602
+ return true;
603
+ }
604
+ return false;
605
+ }, _Parser_isEdgeOp = function _Parser_isEdgeOp() {
606
+ switch (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this)) {
607
+ case types_1.SyntaxKind.DirectedEdgeOp:
608
+ case types_1.SyntaxKind.UndirectedEdgeOp:
609
+ return true;
610
+ default:
611
+ return false;
669
612
  }
670
- tryParse(callback) {
671
- return this.speculationHelper(callback, false);
613
+ }, _Parser_isIdentifier = function _Parser_isIdentifier() {
614
+ switch (__classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this)) {
615
+ case types_1.SyntaxKind.TextIdentifier:
616
+ case types_1.SyntaxKind.NumericIdentifier:
617
+ case types_1.SyntaxKind.StringLiteral:
618
+ case types_1.SyntaxKind.HtmlIdentifier:
619
+ return true;
620
+ default:
621
+ return false;
672
622
  }
673
- }
674
- exports.Parser = Parser;
623
+ }, _Parser_isCompassPortKind = function _Parser_isCompassPortKind(kind) {
624
+ return kind >= types_1.SyntaxKind.CompassCenterToken && kind <= types_1.SyntaxKind.CompassEnd;
625
+ }, _Parser_speculationHelper = function _Parser_speculationHelper(callback, isLookAhead) {
626
+ const saveToken = __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_token).call(this);
627
+ const saveDiagnosticsLength = this.diagnostics.length;
628
+ const result = isLookAhead
629
+ ? this.scanner.lookAhead(callback)
630
+ : this.scanner.tryScan(callback);
631
+ if (!result || isLookAhead) {
632
+ this.currentToken = saveToken;
633
+ this.diagnostics.length = saveDiagnosticsLength;
634
+ }
635
+ return result;
636
+ }, _Parser_lookAhead = function _Parser_lookAhead(callback) {
637
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_speculationHelper).call(this, callback, true);
638
+ }, _Parser_tryParse = function _Parser_tryParse(callback) {
639
+ return __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_speculationHelper).call(this, callback, false);
640
+ };
675
641
  function newNode(kind, pos, end) {
676
642
  return {
677
643
  kind,
@@ -687,14 +653,12 @@ function isNodeKind(kind) {
687
653
  return kind >= types_1.SyntaxKind.FirstNode;
688
654
  }
689
655
  function isIdentifier(kind) {
690
- return kind === types_1.SyntaxKind.HtmlIdentifier
691
- || kind === types_1.SyntaxKind.NumericIdentifier
692
- || kind === types_1.SyntaxKind.TextIdentifier
693
- || kind === types_1.SyntaxKind.QuotedTextIdentifier;
656
+ return (kind === types_1.SyntaxKind.HtmlIdentifier ||
657
+ kind === types_1.SyntaxKind.NumericIdentifier ||
658
+ kind === types_1.SyntaxKind.TextIdentifier ||
659
+ kind === types_1.SyntaxKind.QuotedTextIdentifier);
694
660
  }
695
- exports.isIdentifier = isIdentifier;
696
661
  function isIdentifierNode(node) {
697
662
  return isIdentifier(node.kind);
698
663
  }
699
- exports.isIdentifierNode = isIdentifierNode;
700
664
  //# sourceMappingURL=parser.js.map