@agoric/xsnap 0.14.3-u13.0 → 0.14.3-u16.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 (137) hide show
  1. package/README.md +3 -3
  2. package/api.js +4 -2
  3. package/build.env +1 -1
  4. package/moddable/modules/data/base64/base64.js +28 -0
  5. package/moddable/modules/data/base64/manifest.json +11 -0
  6. package/moddable/modules/data/base64/modBase64.c +188 -0
  7. package/moddable/modules/data/binaryMessage/BinaryMessage.js +106 -0
  8. package/moddable/modules/data/crc/crc.c +205 -0
  9. package/moddable/modules/data/crc/crc.js +36 -0
  10. package/moddable/modules/data/crc/manifest.json +8 -0
  11. package/moddable/modules/data/hex/hex.js +28 -0
  12. package/moddable/modules/data/hex/manifest.json +11 -0
  13. package/moddable/modules/data/hex/modHex.c +139 -0
  14. package/moddable/modules/data/logical/logical.js +32 -0
  15. package/moddable/modules/data/logical/modLogical.c +98 -0
  16. package/moddable/modules/data/qrcode/manifest.json +9 -0
  17. package/moddable/modules/data/qrcode/qrcode.c +93 -0
  18. package/moddable/modules/data/qrcode/qrcode.js +23 -0
  19. package/moddable/modules/data/qrcode/qrcodegen.c +1025 -0
  20. package/moddable/modules/data/qrcode/qrcodegen.h +267 -0
  21. package/moddable/modules/data/text/decoder/manifest.json +8 -0
  22. package/moddable/modules/data/text/decoder/textdecoder.c +480 -0
  23. package/moddable/modules/data/text/decoder/textdecoder.js +27 -0
  24. package/moddable/modules/data/text/encoder/manifest.json +8 -0
  25. package/moddable/modules/data/text/encoder/textencoder.c +232 -0
  26. package/moddable/modules/data/text/encoder/textencoder.js +24 -0
  27. package/moddable/modules/data/tinyint/tinyint.c +150 -0
  28. package/moddable/modules/data/tinyint/tinyint.js +53 -0
  29. package/moddable/modules/data/url/manifest.json +17 -0
  30. package/moddable/modules/data/url/url.c +1959 -0
  31. package/moddable/modules/data/url/url.js +210 -0
  32. package/moddable/modules/data/wavreader/manifest.json +8 -0
  33. package/moddable/modules/data/wavreader/wavreader.js +128 -0
  34. package/moddable/modules/data/zlib/deflate.c +161 -0
  35. package/moddable/modules/data/zlib/deflate.js +63 -0
  36. package/moddable/modules/data/zlib/inflate.c +145 -0
  37. package/moddable/modules/data/zlib/inflate.js +66 -0
  38. package/moddable/modules/data/zlib/manifest_deflate.json +9 -0
  39. package/moddable/modules/data/zlib/manifest_inflate.json +9 -0
  40. package/moddable/modules/data/zlib/miniz.c +4924 -0
  41. package/moddable/xs/includes/xs.d.ts +73 -0
  42. package/moddable/xs/includes/xs.h +1533 -0
  43. package/moddable/xs/includes/xsmc.h +206 -0
  44. package/moddable/xs/makefiles/lin/makefile +33 -0
  45. package/moddable/xs/makefiles/lin/xsc.mk +118 -0
  46. package/moddable/xs/makefiles/lin/xsid.mk +90 -0
  47. package/moddable/xs/makefiles/lin/xsl.mk +168 -0
  48. package/moddable/xs/makefiles/lin/xst.mk +201 -0
  49. package/moddable/xs/makefiles/mac/makefile +33 -0
  50. package/moddable/xs/makefiles/mac/xsc.mk +130 -0
  51. package/moddable/xs/makefiles/mac/xsid.mk +102 -0
  52. package/moddable/xs/makefiles/mac/xsl.mk +177 -0
  53. package/moddable/xs/makefiles/mac/xst.mk +203 -0
  54. package/moddable/xs/makefiles/mac/xst_no_asan.txt +52 -0
  55. package/moddable/xs/makefiles/win/build.bat +26 -0
  56. package/moddable/xs/makefiles/win/xsc.mak +142 -0
  57. package/moddable/xs/makefiles/win/xsid.mak +113 -0
  58. package/moddable/xs/makefiles/win/xsl.mak +186 -0
  59. package/moddable/xs/makefiles/win/xst.mak +195 -0
  60. package/moddable/xs/platforms/lin_xs.h +99 -0
  61. package/moddable/xs/platforms/mac_xs.h +97 -0
  62. package/moddable/xs/platforms/wasm_xs.h +79 -0
  63. package/moddable/xs/platforms/win_xs.h +104 -0
  64. package/moddable/xs/platforms/xsHost.h +63 -0
  65. package/moddable/xs/platforms/xsPlatform.h +618 -0
  66. package/moddable/xs/sources/xsAPI.c +2555 -0
  67. package/moddable/xs/sources/xsAll.c +294 -0
  68. package/moddable/xs/sources/xsAll.h +2741 -0
  69. package/moddable/xs/sources/xsArguments.c +222 -0
  70. package/moddable/xs/sources/xsArray.c +2657 -0
  71. package/moddable/xs/sources/xsAtomics.c +844 -0
  72. package/moddable/xs/sources/xsBigInt.c +1859 -0
  73. package/moddable/xs/sources/xsBoolean.c +109 -0
  74. package/moddable/xs/sources/xsCode.c +4493 -0
  75. package/moddable/xs/sources/xsCommon.c +1710 -0
  76. package/moddable/xs/sources/xsCommon.h +1142 -0
  77. package/moddable/xs/sources/xsDataView.c +2890 -0
  78. package/moddable/xs/sources/xsDate.c +1541 -0
  79. package/moddable/xs/sources/xsDebug.c +2710 -0
  80. package/moddable/xs/sources/xsDefaults.c +134 -0
  81. package/moddable/xs/sources/xsError.c +353 -0
  82. package/moddable/xs/sources/xsFunction.c +776 -0
  83. package/moddable/xs/sources/xsGenerator.c +865 -0
  84. package/moddable/xs/sources/xsGlobal.c +839 -0
  85. package/moddable/xs/sources/xsJSON.c +1091 -0
  86. package/moddable/xs/sources/xsLexical.c +1969 -0
  87. package/moddable/xs/sources/xsLockdown.c +933 -0
  88. package/moddable/xs/sources/xsMapSet.c +1649 -0
  89. package/moddable/xs/sources/xsMarshall.c +1020 -0
  90. package/moddable/xs/sources/xsMath.c +624 -0
  91. package/moddable/xs/sources/xsMemory.c +1941 -0
  92. package/moddable/xs/sources/xsModule.c +3101 -0
  93. package/moddable/xs/sources/xsNumber.c +560 -0
  94. package/moddable/xs/sources/xsObject.c +1102 -0
  95. package/moddable/xs/sources/xsPlatforms.c +480 -0
  96. package/moddable/xs/sources/xsProfile.c +577 -0
  97. package/moddable/xs/sources/xsPromise.c +1199 -0
  98. package/moddable/xs/sources/xsProperty.c +636 -0
  99. package/moddable/xs/sources/xsProxy.c +1014 -0
  100. package/moddable/xs/sources/xsRegExp.c +1168 -0
  101. package/moddable/xs/sources/xsRun.c +4889 -0
  102. package/moddable/xs/sources/xsScope.c +1293 -0
  103. package/moddable/xs/sources/xsScript.c +288 -0
  104. package/moddable/xs/sources/xsScript.h +1186 -0
  105. package/moddable/xs/sources/xsSnapshot.c +2161 -0
  106. package/moddable/xs/sources/xsSnapshot.h +51 -0
  107. package/moddable/xs/sources/xsSourceMap.c +218 -0
  108. package/moddable/xs/sources/xsString.c +3332 -0
  109. package/moddable/xs/sources/xsSymbol.c +503 -0
  110. package/moddable/xs/sources/xsSyntaxical.c +4193 -0
  111. package/moddable/xs/sources/xsTree.c +1893 -0
  112. package/moddable/xs/sources/xsType.c +1488 -0
  113. package/moddable/xs/sources/xsdtoa.c +6672 -0
  114. package/moddable/xs/sources/xsmc.c +340 -0
  115. package/moddable/xs/sources/xsre.c +7578 -0
  116. package/package.json +39 -22
  117. package/scripts/get_xsnap_version.sh +14 -0
  118. package/scripts/test-package.sh +21 -0
  119. package/src/avaAssertXS.js +6 -2
  120. package/src/avaHandler.cjs +2 -5
  121. package/src/avaXS.js +7 -8
  122. package/src/build.js +161 -28
  123. package/src/replay.js +0 -3
  124. package/src/xsnap.js +105 -91
  125. package/src/xsrepl.js +2 -3
  126. package/xsnap-native/xsnap/makefiles/lin/makefile +10 -0
  127. package/xsnap-native/xsnap/makefiles/lin/xsnap-worker.mk +156 -0
  128. package/xsnap-native/xsnap/makefiles/lin/xsnap.mk +144 -0
  129. package/xsnap-native/xsnap/makefiles/mac/makefile +10 -0
  130. package/xsnap-native/xsnap/makefiles/mac/xsnap-worker.mk +165 -0
  131. package/xsnap-native/xsnap/makefiles/mac/xsnap.mk +153 -0
  132. package/xsnap-native/xsnap/sources/xsnap-worker.c +1008 -0
  133. package/xsnap-native/xsnap/sources/xsnap.c +717 -0
  134. package/xsnap-native/xsnap/sources/xsnap.h +142 -0
  135. package/xsnap-native/xsnap/sources/xsnapPlatform.c +1501 -0
  136. package/xsnap-native/xsnap/sources/xsnapPlatform.h +105 -0
  137. package/CHANGELOG.md +0 -646
@@ -0,0 +1,1893 @@
1
+ /*
2
+ * Copyright (c) 2016-2017 Moddable Tech, Inc.
3
+ *
4
+ * This file is part of the Moddable SDK Runtime.
5
+ *
6
+ * The Moddable SDK Runtime is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Lesser General Public License as published by
8
+ * the Free Software Foundation, either version 3 of the License, or
9
+ * (at your option) any later version.
10
+ *
11
+ * The Moddable SDK Runtime is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ * GNU Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public License
17
+ * along with the Moddable SDK Runtime. If not, see <http://www.gnu.org/licenses/>.
18
+ *
19
+ * This file incorporates work covered by the following copyright and
20
+ * permission notice:
21
+ *
22
+ * Copyright (C) 2010-2016 Marvell International Ltd.
23
+ * Copyright (C) 2002-2010 Kinoma, Inc.
24
+ *
25
+ * Licensed under the Apache License, Version 2.0 (the "License");
26
+ * you may not use this file except in compliance with the License.
27
+ * You may obtain a copy of the License at
28
+ *
29
+ * http://www.apache.org/licenses/LICENSE-2.0
30
+ *
31
+ * Unless required by applicable law or agreed to in writing, software
32
+ * distributed under the License is distributed on an "AS IS" BASIS,
33
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
34
+ * See the License for the specific language governing permissions and
35
+ * limitations under the License.
36
+ */
37
+
38
+ #include "xsScript.h"
39
+
40
+ //#define mxTreePrint 1
41
+
42
+ #ifdef mxTreePrint
43
+ typedef struct {
44
+ txInteger tabs;
45
+ } txPrinter;
46
+ #endif
47
+
48
+ static void fxNodeDistribute(void* it, txNodeCall call, void* param);
49
+
50
+ static void fxCheckFunction(txParser* parser);
51
+ static void fxCheckGenerator(txParser* parser);
52
+
53
+ static void fxArrayNodeDistribute(void* it, txNodeCall call, void* param);
54
+ static void fxArrayBindingNodeDistribute(void* it, txNodeCall call, void* param);
55
+ static void fxAssignNodeDistribute(void* it, txNodeCall call, void* param);
56
+ static void fxBinaryExpressionNodeDistribute(void* it, txNodeCall call, void* param);
57
+ static void fxBindingNodeDistribute(void* it, txNodeCall call, void* param);
58
+ static void fxBlockNodeDistribute(void* it, txNodeCall call, void* param);
59
+ static void fxBodyNodeDistribute(void* it, txNodeCall call, void* param);
60
+ static void fxCallNewNodeDistribute(void* it, txNodeCall call, void* param);
61
+ static void fxCaseNodeDistribute(void* it, txNodeCall call, void* param);
62
+ static void fxCatchNodeDistribute(void* it, txNodeCall call, void* param);
63
+ static void fxClassNodeDistribute(void* it, txNodeCall call, void* param);
64
+ static void fxDeleteNodeDistribute(void* it, txNodeCall call, void* param);
65
+ static void fxDoNodeDistribute(void* it, txNodeCall call, void* param);
66
+ static void fxExportNodeDistribute(void* it, txNodeCall call, void* param);
67
+ static void fxExpressionsNodeDistribute(void* it, txNodeCall call, void* param);
68
+ static void fxFieldNodeDistribute(void* it, txNodeCall call, void* param);
69
+ static void fxFunctionNodeDistribute(void* it, txNodeCall call, void* param);
70
+ static void fxForNodeDistribute(void* it, txNodeCall call, void* param);
71
+ static void fxForInForOfNodeDistribute(void* it, txNodeCall call, void* param);
72
+ static void fxIfNodeDistribute(void* it, txNodeCall call, void* param);
73
+ static void fxImportNodeDistribute(void* it, txNodeCall call, void* param);
74
+ static void fxIncludeNodeDistribute(void* it, txNodeCall call, void* param);
75
+ static void fxLabelNodeDistribute(void* it, txNodeCall call, void* param);
76
+ static void fxMemberNodeDistribute(void* it, txNodeCall call, void* param);
77
+ static void fxMemberAtNodeDistribute(void* it, txNodeCall call, void* param);
78
+ static void fxModuleNodeDistribute(void* it, txNodeCall call, void* param);
79
+ static void fxObjectNodeDistribute(void* it, txNodeCall call, void* param);
80
+ static void fxObjectBindingNodeDistribute(void* it, txNodeCall call, void* param);
81
+ static void fxParamsNodeDistribute(void* it, txNodeCall call, void* param);
82
+ static void fxParamsBindingNodeDistribute(void* it, txNodeCall call, void* param);
83
+ static void fxPostfixExpressionNodeDistribute(void* it, txNodeCall call, void* param);
84
+ static void fxProgramNodeDistribute(void* it, txNodeCall call, void* param);
85
+ static void fxPropertyNodeDistribute(void* it, txNodeCall call, void* param);
86
+ static void fxPropertyAtNodeDistribute(void* it, txNodeCall call, void* param);
87
+ static void fxPropertyBindingNodeDistribute(void* it, txNodeCall call, void* param);
88
+ static void fxPropertyBindingAtNodeDistribute(void* it, txNodeCall call, void* param);
89
+ static void fxQuestionMarkNodeDistribute(void* it, txNodeCall call, void* param);
90
+ static void fxRegexpNodeDistribute(void* it, txNodeCall call, void* param);
91
+ static void fxRestBindingNodeDistribute(void* it, txNodeCall call, void* param);
92
+ static void fxReturnNodeDistribute(void* it, txNodeCall call, void* param);
93
+ static void fxSpreadNodeDistribute(void* it, txNodeCall call, void* param);
94
+ static void fxStatementNodeDistribute(void* it, txNodeCall call, void* param);
95
+ static void fxStatementsNodeDistribute(void* it, txNodeCall call, void* param);
96
+ static void fxSuperNodeDistribute(void* it, txNodeCall call, void* param);
97
+ static void fxSwitchNodeDistribute(void* it, txNodeCall call, void* param);
98
+ static void fxTemplateNodeDistribute(void* it, txNodeCall call, void* param);
99
+ static void fxTryNodeDistribute(void* it, txNodeCall call, void* param);
100
+ static void fxUnaryExpressionNodeDistribute(void* it, txNodeCall call, void* param);
101
+ static void fxWhileNodeDistribute(void* it, txNodeCall call, void* param);
102
+ static void fxWithNodeDistribute(void* it, txNodeCall call, void* param);
103
+
104
+ #ifdef mxTreePrint
105
+ static void fxTreePrint(txParser* parser, txNode* node);
106
+
107
+ static void fxNodePrintNode(void* it);
108
+ static void fxNodePrintTree(void* it, void* param);
109
+
110
+ static void fxAccessNodePrintNode(void* it);
111
+ static void fxDeclareDefineNodePrintNode(void* it);
112
+ static void fxExportNodePrintNode(void* it);
113
+ static void fxFunctionNodePrintNode(void* it);
114
+ static void fxImportNodePrintNode(void* it);
115
+ static void fxIntegerNodePrintNode(void* it);
116
+ static void fxLabelNodePrintNode(void* it);
117
+ static void fxMemberNodePrintNode(void* it);
118
+ static void fxNumberNodePrintNode(void* it);
119
+ static void fxPropertyNodePrintNode(void* it);
120
+ static void fxPropertyBindingNodePrintNode(void* it);
121
+ static void fxSpecifierNodePrintNode(void* it);
122
+ static void fxStringNodePrintNode(void* it);
123
+ #endif
124
+
125
+ void fxIncludeTree(txParser* parser, void* stream, txGetter getter, txUnsigned flags, txString path)
126
+ {
127
+ txParserJump jump;
128
+ txSymbol* symbol = parser->path;
129
+ jump.nextJump = parser->firstJump;
130
+ parser->firstJump = &jump;
131
+ if (c_setjmp(jump.jmp_buf) == 0) {
132
+ parser->path = fxNewParserSymbol(parser, path);
133
+ fxParserTree(parser, stream, getter, flags, C_NULL);
134
+ }
135
+ parser->firstJump = jump.nextJump;
136
+ parser->path = symbol;
137
+ }
138
+
139
+ void fxCheckFunction(txParser* parser)
140
+ {
141
+ txNode* node = parser->root;
142
+ if (node->description->token == XS_TOKEN_PROGRAM) {
143
+ node = ((txProgramNode*)node)->body;
144
+ if (node->description->token == XS_TOKEN_STATEMENT) {
145
+ node = ((txStatementNode*)node)->expression;
146
+ if (node->description->token == XS_TOKEN_EXPRESSIONS) {
147
+ txNodeList* list = ((txExpressionsNode*)node)->items;
148
+ if (list->length == 1) {
149
+ node = list->first;
150
+ if (node->description->token == XS_TOKEN_FUNCTION)
151
+ return;
152
+ }
153
+ }
154
+ }
155
+ }
156
+ fxReportParserError(parser, parser->line, "no function");
157
+ }
158
+
159
+ void fxCheckGenerator(txParser* parser)
160
+ {
161
+ txNode* node = parser->root;
162
+ if (node->description->token == XS_TOKEN_PROGRAM) {
163
+ node = ((txProgramNode*)node)->body;
164
+ if (node->description->token == XS_TOKEN_STATEMENT) {
165
+ node = ((txStatementNode*)node)->expression;
166
+ if (node->description->token == XS_TOKEN_EXPRESSIONS) {
167
+ txNodeList* list = ((txExpressionsNode*)node)->items;
168
+ if (list->length == 1) {
169
+ node = list->first;
170
+ if (node->description->token == XS_TOKEN_GENERATOR)
171
+ return;
172
+ }
173
+ }
174
+ }
175
+ }
176
+ fxReportParserError(parser, parser->line, "no generator function");
177
+ }
178
+
179
+ void fxParserTree(txParser* parser, void* theStream, txGetter theGetter, txUnsigned flags, txString* name)
180
+ {
181
+ mxTryParser(parser) {
182
+ parser->stream = theStream;
183
+ parser->getter = theGetter;
184
+ parser->line = 1;
185
+ parser->flags = flags;
186
+ parser->modifier = parser->emptyString;
187
+ parser->string = parser->emptyString;
188
+ parser->line2 = 1;
189
+ parser->modifier2 = parser->emptyString;
190
+ parser->string2 = parser->emptyString;
191
+
192
+ parser->root = NULL;
193
+
194
+ parser->flags &= ~(mxEvalFlag | mxFunctionFlag | mxGeneratorFlag);
195
+ if (!(parser->flags & mxProgramFlag))
196
+ parser->flags |= mxStrictFlag | mxAsyncFlag;
197
+ fxGetNextCharacter(parser);
198
+ fxGetNextCharacter(parser);
199
+ if (parser->character == '#') {
200
+ fxGetNextCharacter(parser);
201
+ if (parser->character == '!') {
202
+ fxGetNextCharacter(parser);
203
+ while ((parser->character != (txU4)C_EOF) && (parser->character != 10) && (parser->character != 13) && (parser->character != 0x2028) && (parser->character != 0x2029)) {
204
+ fxGetNextCharacter(parser);
205
+ }
206
+ }
207
+ else
208
+ fxReportParserError(parser, parser->line, "invalid character %d", parser->character);
209
+ }
210
+ fxGetNextToken(parser);
211
+ if (parser->flags & mxProgramFlag) {
212
+ fxProgram(parser);
213
+ if (flags & mxFunctionFlag)
214
+ fxCheckFunction(parser);
215
+ else if (flags & mxGeneratorFlag)
216
+ fxCheckGenerator(parser);
217
+ }
218
+ else {
219
+ fxModule(parser);
220
+ }
221
+ parser->flags &= ~mxEvalFlag;
222
+
223
+ parser->flags |= flags & mxEvalFlag;
224
+
225
+ #ifdef mxTreePrint
226
+ fxTreePrint(parser, parser->root);
227
+ #endif
228
+ if ((parser->errorCount == 0) && name)
229
+ *name = parser->name;
230
+ }
231
+ mxCatchParser(parser) {
232
+ }
233
+ }
234
+
235
+ void fxNodeListDistribute(txNodeList* list, txNodeCall call, void* param)
236
+ {
237
+ txNode* item = list->first;
238
+ while (item) {
239
+ (*call)(item, param);
240
+ item = item->next;
241
+ }
242
+ }
243
+
244
+ txAccessNode* fxAccessNodeNew(txParser* parser, txToken token, txSymbol* symbol)
245
+ {
246
+ txAccessNode* node = fxNewParserChunkClear(parser, sizeof(txAccessNode));
247
+ node->description = &gxTokenDescriptions[token];
248
+ node->symbol = symbol;
249
+ return node;
250
+ }
251
+
252
+ txDeclareNode* fxDeclareNodeNew(txParser* parser, txToken token, txSymbol* symbol)
253
+ {
254
+ txDeclareNode* node = fxNewParserChunkClear(parser, sizeof(txDeclareNode));
255
+ node->description = &gxTokenDescriptions[token];
256
+ node->symbol = symbol;
257
+ return node;
258
+ }
259
+
260
+ txDefineNode* fxDefineNodeNew(txParser* parser, txToken token, txSymbol* symbol)
261
+ {
262
+ txDefineNode* node = fxNewParserChunkClear(parser, sizeof(txDefineNode));
263
+ node->description = &gxTokenDescriptions[token];
264
+ node->symbol = symbol;
265
+ return node;
266
+ }
267
+
268
+ txFieldNode* fxFieldNodeNew(txParser* parser, txToken token)
269
+ {
270
+ txFieldNode* node = fxNewParserChunkClear(parser, sizeof(txFieldNode));
271
+ node->description = &gxTokenDescriptions[token];
272
+ return node;
273
+ }
274
+
275
+ txSpecifierNode* fxSpecifierNodeNew(txParser* parser, txToken token)
276
+ {
277
+ txSpecifierNode* node = fxNewParserChunkClear(parser, sizeof(txSpecifierNode));
278
+ node->description = &gxTokenDescriptions[token];
279
+ return node;
280
+ }
281
+
282
+ txNode* fxValueNodeNew(txParser* parser, txToken token)
283
+ {
284
+ txNode* node = fxNewParserChunkClear(parser, sizeof(txNode));
285
+ node->description = &gxTokenDescriptions[token];
286
+ return node;
287
+ }
288
+
289
+ void fxNodeDistribute(void* it, txNodeCall call, void* param)
290
+ {
291
+ }
292
+
293
+ void fxArrayNodeDistribute(void* it, txNodeCall call, void* param)
294
+ {
295
+ txArrayNode* self = it;
296
+ fxNodeListDistribute(self->items, call, param);
297
+ }
298
+
299
+ void fxArrayBindingNodeDistribute(void* it, txNodeCall call, void* param)
300
+ {
301
+ txArrayBindingNode* self = it;
302
+ fxNodeListDistribute(self->items, call, param);
303
+ }
304
+
305
+ void fxAssignNodeDistribute(void* it, txNodeCall call, void* param)
306
+ {
307
+ txAssignNode* self = it;
308
+ (*call)(self->reference, param);
309
+ (*call)(self->value, param);
310
+ }
311
+
312
+ void fxBinaryExpressionNodeDistribute(void* it, txNodeCall call, void* param)
313
+ {
314
+ txBinaryExpressionNode* self = it;
315
+ (*call)(self->left, param);
316
+ (*call)(self->right, param);
317
+ }
318
+
319
+ void fxBindingNodeDistribute(void* it, txNodeCall call, void* param)
320
+ {
321
+ txBindingNode* self = it;
322
+ (*call)(self->target, param);
323
+ (*call)(self->initializer, param);
324
+ }
325
+
326
+ void fxBlockNodeDistribute(void* it, txNodeCall call, void* param)
327
+ {
328
+ txBlockNode* self = it;
329
+ (*call)(self->statement, param);
330
+ }
331
+
332
+ void fxBodyNodeDistribute(void* it, txNodeCall call, void* param)
333
+ {
334
+ txBlockNode* self = it;
335
+ (*call)(self->statement, param);
336
+ }
337
+
338
+ void fxCallNewNodeDistribute(void* it, txNodeCall call, void* param)
339
+ {
340
+ txCallNewNode* self = it;
341
+ (*call)(self->reference, param);
342
+ (*call)(self->params, param);
343
+ }
344
+
345
+ void fxCaseNodeDistribute(void* it, txNodeCall call, void* param)
346
+ {
347
+ txCaseNode* self = it;
348
+ if (self->expression)
349
+ (*call)(self->expression, param);
350
+ if (self->statement)
351
+ (*call)(self->statement, param);
352
+ }
353
+
354
+ void fxClassNodeDistribute(void* it, txNodeCall call, void* param)
355
+ {
356
+ txClassNode* self = it;
357
+ if (self->heritage)
358
+ (*call)(self->heritage, param);
359
+ (*call)(self->constructor, param);
360
+ fxNodeListDistribute(self->items, call, param);
361
+ if (self->constructorInit)
362
+ (*call)(self->constructorInit, param);
363
+ if (self->instanceInit)
364
+ (*call)(self->instanceInit, param);
365
+ }
366
+
367
+ void fxCatchNodeDistribute(void* it, txNodeCall call, void* param)
368
+ {
369
+ txCatchNode* self = it;
370
+ (*call)(self->parameter, param);
371
+ (*call)(self->statement, param);
372
+ }
373
+
374
+ void fxDefineNodeDistribute(void* it, txNodeCall call, void* param)
375
+ {
376
+ txDefineNode* self = it;
377
+ (*call)(self->initializer, param);
378
+ }
379
+
380
+ void fxDeleteNodeDistribute(void* it, txNodeCall call, void* param)
381
+ {
382
+ txDeleteNode* self = it;
383
+ (*call)(self->reference, param);
384
+ }
385
+
386
+ void fxDoNodeDistribute(void* it, txNodeCall call, void* param)
387
+ {
388
+ txDoNode* self = it;
389
+ (*call)(self->statement, param);
390
+ (*call)(self->expression, param);
391
+ }
392
+
393
+ void fxExportNodeDistribute(void* it, txNodeCall call, void* param)
394
+ {
395
+ txExportNode* self = it;
396
+ if (self->specifiers)
397
+ fxNodeListDistribute(self->specifiers, call, param);
398
+ }
399
+
400
+ void fxExpressionsNodeDistribute(void* it, txNodeCall call, void* param)
401
+ {
402
+ txExpressionsNode* self = it;
403
+ fxNodeListDistribute(self->items, call, param);
404
+ }
405
+
406
+ void fxFieldNodeDistribute(void* it, txNodeCall call, void* param)
407
+ {
408
+ txFieldNode* self = it;
409
+ if (self->value)
410
+ (*call)(self->value, param);
411
+ }
412
+
413
+ void fxForNodeDistribute(void* it, txNodeCall call, void* param)
414
+ {
415
+ txForNode* self = it;
416
+ if (self->initialization)
417
+ (*call)(self->initialization, param);
418
+ if (self->expression)
419
+ (*call)(self->expression, param);
420
+ if (self->iteration)
421
+ (*call)(self->iteration, param);
422
+ (*call)(self->statement, param);
423
+ }
424
+
425
+ void fxForInForOfNodeDistribute(void* it, txNodeCall call, void* param)
426
+ {
427
+ txForInForOfNode* self = it;
428
+ (*call)(self->reference, param);
429
+ (*call)(self->expression, param);
430
+ (*call)(self->statement, param);
431
+ }
432
+
433
+ void fxFunctionNodeDistribute(void* it, txNodeCall call, void* param)
434
+ {
435
+ txFunctionNode* self = it;
436
+ (*call)(self->params, param);
437
+ (*call)(self->body, param);
438
+ }
439
+
440
+ void fxIfNodeDistribute(void* it, txNodeCall call, void* param)
441
+ {
442
+ txIfNode* self = it;
443
+ (*call)(self->expression, param);
444
+ (*call)(self->thenStatement, param);
445
+ if (self->elseStatement)
446
+ (*call)(self->elseStatement, param);
447
+ }
448
+
449
+ void fxImportNodeDistribute(void* it, txNodeCall call, void* param)
450
+ {
451
+ txImportNode* self = it;
452
+ if (self->specifiers)
453
+ fxNodeListDistribute(self->specifiers, call, param);
454
+ }
455
+
456
+ void fxIncludeNodeDistribute(void* it, txNodeCall call, void* param)
457
+ {
458
+ txIncludeNode* self = it;
459
+ (*call)(self->body, param);
460
+ }
461
+
462
+ txLabelNode* fxLabelNodeNew(txParser* parser)
463
+ {
464
+ txLabelNode* node = fxNewParserChunkClear(parser, sizeof(txLabelNode));
465
+ return node;
466
+ }
467
+
468
+ void fxLabelNodeDistribute(void* it, txNodeCall call, void* param)
469
+ {
470
+ txLabelNode* self = it;
471
+ (*call)(self->statement, param);
472
+ }
473
+
474
+ void fxMemberNodeDistribute(void* it, txNodeCall call, void* param)
475
+ {
476
+ txMemberNode* self = it;
477
+ (*call)(self->reference, param);
478
+ }
479
+
480
+ void fxMemberAtNodeDistribute(void* it, txNodeCall call, void* param)
481
+ {
482
+ txMemberAtNode* self = it;
483
+ (*call)(self->reference, param);
484
+ (*call)(self->at, param);
485
+ }
486
+
487
+ void fxModuleNodeDistribute(void* it, txNodeCall call, void* param)
488
+ {
489
+ txProgramNode* self = it;
490
+ (*call)(self->body, param);
491
+ }
492
+
493
+ void fxObjectNodeDistribute(void* it, txNodeCall call, void* param)
494
+ {
495
+ txObjectNode* self = it;
496
+ fxNodeListDistribute(self->items, call, param);
497
+ }
498
+
499
+ void fxObjectBindingNodeDistribute(void* it, txNodeCall call, void* param)
500
+ {
501
+ txObjectBindingNode* self = it;
502
+ fxNodeListDistribute(self->items, call, param);
503
+ }
504
+
505
+ void fxParamsNodeDistribute(void* it, txNodeCall call, void* param)
506
+ {
507
+ txParamsNode* self = it;
508
+ fxNodeListDistribute(self->items, call, param);
509
+ }
510
+
511
+ void fxParamsBindingNodeDistribute(void* it, txNodeCall call, void* param)
512
+ {
513
+ txParamsBindingNode* self = it;
514
+ fxNodeListDistribute(self->items, call, param);
515
+ }
516
+
517
+ void fxPostfixExpressionNodeDistribute(void* it, txNodeCall call, void* param)
518
+ {
519
+ txPostfixExpressionNode* self = it;
520
+ (*call)(self->left, param);
521
+ }
522
+
523
+ void fxPrivateMemberNodeDistribute(void* it, txNodeCall call, void* param)
524
+ {
525
+ txPrivateMemberNode* self = it;
526
+ (*call)(self->reference, param);
527
+ }
528
+
529
+ void fxPrivatePropertyNodeDistribute(void* it, txNodeCall call, void* param)
530
+ {
531
+ txPrivatePropertyNode* self = it;
532
+ if (self->value)
533
+ (*call)(self->value, param);
534
+ }
535
+
536
+ void fxProgramNodeDistribute(void* it, txNodeCall call, void* param)
537
+ {
538
+ txProgramNode* self = it;
539
+ (*call)(self->body, param);
540
+ }
541
+
542
+ void fxPropertyNodeDistribute(void* it, txNodeCall call, void* param)
543
+ {
544
+ txPropertyNode* self = it;
545
+ if (self->value)
546
+ (*call)(self->value, param);
547
+ }
548
+
549
+ void fxPropertyAtNodeDistribute(void* it, txNodeCall call, void* param)
550
+ {
551
+ txPropertyAtNode* self = it;
552
+ (*call)(self->at, param);
553
+ if (self->value)
554
+ (*call)(self->value, param);
555
+ }
556
+
557
+ void fxPropertyBindingNodeDistribute(void* it, txNodeCall call, void* param)
558
+ {
559
+ txPropertyBindingNode* self = it;
560
+ (*call)(self->binding, param);
561
+ }
562
+
563
+ void fxPropertyBindingAtNodeDistribute(void* it, txNodeCall call, void* param)
564
+ {
565
+ txPropertyBindingAtNode* self = it;
566
+ (*call)(self->at, param);
567
+ (*call)(self->binding, param);
568
+ }
569
+
570
+ void fxQuestionMarkNodeDistribute(void* it, txNodeCall call, void* param)
571
+ {
572
+ txQuestionMarkNode* self = it;
573
+ (*call)(self->expression, param);
574
+ (*call)(self->thenExpression, param);
575
+ (*call)(self->elseExpression, param);
576
+ }
577
+
578
+ void fxRegexpNodeDistribute(void* it, txNodeCall call, void* param)
579
+ {
580
+ txRegexpNode* self = it;
581
+ (*call)(self->value, param);
582
+ (*call)(self->modifier, param);
583
+ }
584
+
585
+ void fxRestBindingNodeDistribute(void* it, txNodeCall call, void* param)
586
+ {
587
+ txRestBindingNode* self = it;
588
+ (*call)(self->binding, param);
589
+ }
590
+
591
+ void fxReturnNodeDistribute(void* it, txNodeCall call, void* param)
592
+ {
593
+ txStatementNode* self = it;
594
+ if (self->expression)
595
+ (*call)(self->expression, param);
596
+ }
597
+
598
+ void fxSpreadNodeDistribute(void* it, txNodeCall call, void* param)
599
+ {
600
+ txSpreadNode* self = it;
601
+ (*call)(self->expression, param);
602
+ }
603
+
604
+ void fxStatementNodeDistribute(void* it, txNodeCall call, void* param)
605
+ {
606
+ txStatementNode* self = it;
607
+ (*call)(self->expression, param);
608
+ }
609
+
610
+ void fxStatementsNodeDistribute(void* it, txNodeCall call, void* param)
611
+ {
612
+ txStatementsNode* self = it;
613
+ fxNodeListDistribute(self->items, call, param);
614
+ }
615
+
616
+ void fxSuperNodeDistribute(void* it, txNodeCall call, void* param)
617
+ {
618
+ txSuperNode* self = it;
619
+ (*call)(self->params, param);
620
+ }
621
+
622
+ void fxSwitchNodeDistribute(void* it, txNodeCall call, void* param)
623
+ {
624
+ txSwitchNode* self = it;
625
+ (*call)(self->expression, param);
626
+ fxNodeListDistribute(self->items, call, param);
627
+ }
628
+
629
+ void fxTemplateNodeDistribute(void* it, txNodeCall call, void* param)
630
+ {
631
+ txTemplateNode* self = it;
632
+ if (self->reference)
633
+ (*call)(self->reference, param);
634
+ fxNodeListDistribute(self->items, call, param);
635
+ }
636
+
637
+ void fxTemplateItemNodeDistribute(void* it, txNodeCall call, void* param)
638
+ {
639
+ txTemplateItemNode* self = it;
640
+ (*call)(self->string, param);
641
+ (*call)(self->raw, param);
642
+ }
643
+
644
+ void fxTryNodeDistribute(void* it, txNodeCall call, void* param)
645
+ {
646
+ txTryNode* self = it;
647
+ (*call)(self->tryBlock, param);
648
+ if (self->catchBlock)
649
+ (*call)(self->catchBlock, param);
650
+ if (self->finallyBlock)
651
+ (*call)(self->finallyBlock, param);
652
+ }
653
+
654
+ void fxUnaryExpressionNodeDistribute(void* it, txNodeCall call, void* param)
655
+ {
656
+ txUnaryExpressionNode* self = it;
657
+ (*call)(self->right, param);
658
+ }
659
+
660
+ void fxWhileNodeDistribute(void* it, txNodeCall call, void* param)
661
+ {
662
+ txWhileNode* self = it;
663
+ (*call)(self->expression, param);
664
+ (*call)(self->statement, param);
665
+ }
666
+
667
+ void fxWithNodeDistribute(void* it, txNodeCall call, void* param)
668
+ {
669
+ txWithNode* self = it;
670
+ (*call)(self->expression, param);
671
+ (*call)(self->statement, param);
672
+ }
673
+
674
+ static const txNodeDispatch gxAccessNodeDispatch ICACHE_FLASH_ATTR = {
675
+ fxNodeDistribute,
676
+ fxAccessNodeBind,
677
+ fxNodeHoist,
678
+ fxAccessNodeCode,
679
+ fxAccessNodeCodeAssign,
680
+ fxAccessNodeCodeDelete,
681
+ fxAccessNodeCodeReference,
682
+ fxAccessNodeCodeThis
683
+ };
684
+ static const txNodeDispatch gxAndExpressionNodeDispatch ICACHE_FLASH_ATTR = {
685
+ fxBinaryExpressionNodeDistribute,
686
+ fxNodeBind,
687
+ fxNodeHoist,
688
+ fxAndExpressionNodeCode,
689
+ fxNodeCodeAssign,
690
+ fxNodeCodeDelete,
691
+ fxNodeCodeReference,
692
+ fxNodeCodeThis
693
+ };
694
+ static const txNodeDispatch gxArgumentsNodeDispatch ICACHE_FLASH_ATTR = {
695
+ fxNodeDistribute,
696
+ fxNodeBind,
697
+ fxNodeHoist,
698
+ fxArgumentsNodeCode,
699
+ fxNodeCodeAssign,
700
+ fxNodeCodeDelete,
701
+ fxNodeCodeReference,
702
+ fxNodeCodeThis
703
+ };
704
+ static const txNodeDispatch gxArrayNodeDispatch ICACHE_FLASH_ATTR = {
705
+ fxArrayNodeDistribute,
706
+ fxArrayNodeBind,
707
+ fxNodeHoist,
708
+ fxArrayNodeCode,
709
+ fxNodeCodeAssign,
710
+ fxNodeCodeDelete,
711
+ fxNodeCodeReference,
712
+ fxNodeCodeThis
713
+ };
714
+ static const txNodeDispatch gxArrayBindingNodeDispatch ICACHE_FLASH_ATTR = {
715
+ fxArrayBindingNodeDistribute,
716
+ fxArrayBindingNodeBind,
717
+ fxNodeHoist,
718
+ fxArrayBindingNodeCode,
719
+ fxArrayBindingNodeCodeAssign,
720
+ fxNodeCodeDelete,
721
+ fxNodeCodeReference,
722
+ fxNodeCodeThis
723
+ };
724
+ static const txNodeDispatch gxAssignNodeDispatch ICACHE_FLASH_ATTR = {
725
+ fxAssignNodeDistribute,
726
+ fxAssignNodeBind,
727
+ fxNodeHoist,
728
+ fxAssignNodeCode,
729
+ fxNodeCodeAssign,
730
+ fxNodeCodeDelete,
731
+ fxNodeCodeReference,
732
+ fxNodeCodeThis
733
+ };
734
+ static const txNodeDispatch gxAwaitNodeDispatch ICACHE_FLASH_ATTR = {
735
+ fxStatementNodeDistribute,
736
+ fxNodeBind,
737
+ fxNodeHoist,
738
+ fxAwaitNodeCode,
739
+ fxNodeCodeAssign,
740
+ fxNodeCodeDelete,
741
+ fxNodeCodeReference,
742
+ fxNodeCodeThis
743
+ };
744
+ static const txNodeDispatch gxBigIntNodeDispatch ICACHE_FLASH_ATTR = {
745
+ fxNodeDistribute,
746
+ fxNodeBind,
747
+ fxNodeHoist,
748
+ fxBigIntNodeCode,
749
+ fxNodeCodeAssign,
750
+ fxNodeCodeDelete,
751
+ fxNodeCodeReference,
752
+ fxNodeCodeThis
753
+ };
754
+ static const txNodeDispatch gxBinaryExpressionNodeDispatch ICACHE_FLASH_ATTR = {
755
+ fxBinaryExpressionNodeDistribute,
756
+ fxNodeBind,
757
+ fxNodeHoist,
758
+ fxBinaryExpressionNodeCode,
759
+ fxNodeCodeAssign,
760
+ fxNodeCodeDelete,
761
+ fxNodeCodeReference,
762
+ fxNodeCodeThis
763
+ };
764
+ static const txNodeDispatch gxBindingNodeDispatch ICACHE_FLASH_ATTR = {
765
+ fxBindingNodeDistribute,
766
+ fxBindingNodeBind,
767
+ fxNodeHoist,
768
+ fxBindingNodeCode,
769
+ fxBindingNodeCodeAssign,
770
+ fxNodeCodeDelete,
771
+ fxBindingNodeCodeReference,
772
+ fxNodeCodeThis
773
+ };
774
+ static const txNodeDispatch gxBlockNodeDispatch ICACHE_FLASH_ATTR = {
775
+ fxBlockNodeDistribute,
776
+ fxBlockNodeBind,
777
+ fxBlockNodeHoist,
778
+ fxBlockNodeCode,
779
+ fxNodeCodeAssign,
780
+ fxNodeCodeDelete,
781
+ fxNodeCodeReference,
782
+ fxNodeCodeThis
783
+ };
784
+ static const txNodeDispatch gxBodyNodeDispatch ICACHE_FLASH_ATTR = {
785
+ fxBodyNodeDistribute,
786
+ fxBlockNodeBind,
787
+ fxBodyNodeHoist,
788
+ fxBodyNodeCode,
789
+ fxNodeCodeAssign,
790
+ fxNodeCodeDelete,
791
+ fxNodeCodeReference,
792
+ fxNodeCodeThis
793
+ };
794
+ static const txNodeDispatch gxBreakContinueNodeDispatch ICACHE_FLASH_ATTR = {
795
+ fxNodeDistribute,
796
+ fxNodeBind,
797
+ fxNodeHoist,
798
+ fxBreakContinueNodeCode,
799
+ fxNodeCodeAssign,
800
+ fxNodeCodeDelete,
801
+ fxNodeCodeReference,
802
+ fxNodeCodeThis
803
+ };
804
+ static const txNodeDispatch gxCallNodeDispatch ICACHE_FLASH_ATTR = {
805
+ fxCallNewNodeDistribute,
806
+ fxNodeBind,
807
+ fxCallNodeHoist,
808
+ fxCallNodeCode,
809
+ fxNodeCodeAssign,
810
+ fxNodeCodeDelete,
811
+ fxNodeCodeReference,
812
+ fxNodeCodeThis
813
+ };
814
+ static const txNodeDispatch gxCaseNodeDispatch ICACHE_FLASH_ATTR = {
815
+ fxCaseNodeDistribute,
816
+ fxNodeBind,
817
+ fxNodeHoist,
818
+ fxNodeCode,
819
+ fxNodeCodeAssign,
820
+ fxNodeCodeDelete,
821
+ fxNodeCodeReference,
822
+ fxNodeCodeThis
823
+ };
824
+ static const txNodeDispatch gxCatchNodeDispatch ICACHE_FLASH_ATTR = {
825
+ fxCatchNodeDistribute,
826
+ fxCatchNodeBind,
827
+ fxCatchNodeHoist,
828
+ fxCatchNodeCode,
829
+ fxNodeCodeAssign,
830
+ fxNodeCodeDelete,
831
+ fxNodeCodeReference,
832
+ fxNodeCodeThis
833
+ };
834
+ static const txNodeDispatch gxChainNodeDispatch ICACHE_FLASH_ATTR = {
835
+ fxUnaryExpressionNodeDistribute,
836
+ fxNodeBind,
837
+ fxNodeHoist,
838
+ fxChainNodeCode,
839
+ fxNodeCodeAssign,
840
+ fxNodeCodeDelete,
841
+ fxNodeCodeReference,
842
+ fxChainNodeCodeThis
843
+ };
844
+ static const txNodeDispatch gxClassNodeDispatch ICACHE_FLASH_ATTR = {
845
+ fxClassNodeDistribute,
846
+ fxClassNodeBind,
847
+ fxClassNodeHoist,
848
+ fxClassNodeCode,
849
+ fxNodeCodeAssign,
850
+ fxNodeCodeDelete,
851
+ fxNodeCodeReference,
852
+ fxNodeCodeThis
853
+ };
854
+ static const txNodeDispatch gxCoalesceExpressionNodeDispatch ICACHE_FLASH_ATTR = {
855
+ fxBinaryExpressionNodeDistribute,
856
+ fxNodeBind,
857
+ fxCoalesceExpressionNodeHoist,
858
+ fxCoalesceExpressionNodeCode,
859
+ fxNodeCodeAssign,
860
+ fxNodeCodeDelete,
861
+ fxNodeCodeReference,
862
+ fxNodeCodeThis
863
+ };
864
+ static const txNodeDispatch gxCompoundExpressionNodeDispatch ICACHE_FLASH_ATTR = {
865
+ fxAssignNodeDistribute,
866
+ fxNodeBind,
867
+ fxNodeHoist,
868
+ fxCompoundExpressionNodeCode,
869
+ fxNodeCodeAssign,
870
+ fxNodeCodeDelete,
871
+ fxNodeCodeReference,
872
+ fxNodeCodeThis
873
+ };
874
+ static const txNodeDispatch gxDebuggerNodeDispatch ICACHE_FLASH_ATTR = {
875
+ fxNodeDistribute,
876
+ fxNodeBind,
877
+ fxNodeHoist,
878
+ fxDebuggerNodeCode,
879
+ fxNodeCodeAssign,
880
+ fxNodeCodeDelete,
881
+ fxNodeCodeReference,
882
+ fxNodeCodeThis
883
+ };
884
+ static const txNodeDispatch gxDeclareNodeDispatch ICACHE_FLASH_ATTR = {
885
+ fxNodeDistribute,
886
+ fxDeclareNodeBind,
887
+ fxDeclareNodeHoist,
888
+ fxDeclareNodeCode,
889
+ fxDeclareNodeCodeAssign,
890
+ fxNodeCodeDelete,
891
+ fxDeclareNodeCodeReference,
892
+ fxNodeCodeThis
893
+ };
894
+ static const txNodeDispatch gxDefineNodeDispatch ICACHE_FLASH_ATTR = {
895
+ fxDefineNodeDistribute,
896
+ fxDefineNodeBind,
897
+ fxDefineNodeHoist,
898
+ fxDefineNodeCode,
899
+ fxNodeCodeAssign,
900
+ fxNodeCodeDelete,
901
+ fxNodeCodeReference,
902
+ fxNodeCodeThis
903
+ };
904
+ static const txNodeDispatch gxDelegateNodeDispatch ICACHE_FLASH_ATTR = {
905
+ fxStatementNodeDistribute,
906
+ fxDelegateNodeBind,
907
+ fxNodeHoist,
908
+ fxDelegateNodeCode,
909
+ fxNodeCodeAssign,
910
+ fxNodeCodeDelete,
911
+ fxNodeCodeReference,
912
+ fxNodeCodeThis
913
+ };
914
+ static const txNodeDispatch gxDeleteNodeDispatch ICACHE_FLASH_ATTR = {
915
+ fxDeleteNodeDistribute,
916
+ fxNodeBind,
917
+ fxNodeHoist,
918
+ fxDeleteNodeCode,
919
+ fxNodeCodeAssign,
920
+ fxNodeCodeDelete,
921
+ fxNodeCodeReference,
922
+ fxNodeCodeThis
923
+ };
924
+ static const txNodeDispatch gxDoNodeDispatch ICACHE_FLASH_ATTR = {
925
+ fxDoNodeDistribute,
926
+ fxNodeBind,
927
+ fxNodeHoist,
928
+ fxDoNodeCode,
929
+ fxNodeCodeAssign,
930
+ fxNodeCodeDelete,
931
+ fxNodeCodeReference,
932
+ fxNodeCodeThis
933
+ };
934
+ static const txNodeDispatch gxExportNodeDispatch ICACHE_FLASH_ATTR = {
935
+ fxExportNodeDistribute,
936
+ fxExportNodeBind,
937
+ fxExportNodeHoist,
938
+ fxExportNodeCode,
939
+ fxNodeCodeAssign,
940
+ fxNodeCodeDelete,
941
+ fxNodeCodeReference,
942
+ fxNodeCodeThis
943
+ };
944
+ static const txNodeDispatch gxExpressionsNodeDispatch ICACHE_FLASH_ATTR = {
945
+ fxExpressionsNodeDistribute,
946
+ fxNodeBind,
947
+ fxNodeHoist,
948
+ fxExpressionsNodeCode,
949
+ fxNodeCodeAssign,
950
+ fxExpressionsNodeCodeDelete,
951
+ fxNodeCodeReference,
952
+ fxExpressionsNodeCodeThis
953
+ };
954
+ static const txNodeDispatch gxFieldNodeDispatch ICACHE_FLASH_ATTR = {
955
+ fxFieldNodeDistribute,
956
+ fxFieldNodeBind,
957
+ fxNodeHoist,
958
+ fxFieldNodeCode,
959
+ fxNodeCodeAssign,
960
+ fxNodeCodeDelete,
961
+ fxNodeCodeReference,
962
+ fxNodeCodeThis
963
+ };
964
+ static const txNodeDispatch gxForNodeDispatch ICACHE_FLASH_ATTR = {
965
+ fxForNodeDistribute,
966
+ fxForNodeBind,
967
+ fxForNodeHoist,
968
+ fxForNodeCode,
969
+ fxNodeCodeAssign,
970
+ fxNodeCodeDelete,
971
+ fxNodeCodeReference,
972
+ fxNodeCodeThis
973
+ };
974
+ static const txNodeDispatch gxForInForOfNodeDispatch ICACHE_FLASH_ATTR = {
975
+ fxForInForOfNodeDistribute,
976
+ fxForInForOfNodeBind,
977
+ fxForInForOfNodeHoist,
978
+ fxForInForOfNodeCode,
979
+ fxNodeCodeAssign,
980
+ fxNodeCodeDelete,
981
+ fxNodeCodeReference,
982
+ fxNodeCodeThis
983
+ };
984
+ static const txNodeDispatch gxFunctionNodeDispatch ICACHE_FLASH_ATTR = {
985
+ fxFunctionNodeDistribute,
986
+ fxFunctionNodeBind,
987
+ fxFunctionNodeHoist,
988
+ fxFunctionNodeCode,
989
+ fxNodeCodeAssign,
990
+ fxNodeCodeDelete,
991
+ fxNodeCodeReference,
992
+ fxNodeCodeThis
993
+ };
994
+ static const txNodeDispatch gxHostNodeDispatch ICACHE_FLASH_ATTR = {
995
+ fxNodeDistribute,
996
+ fxHostNodeBind,
997
+ fxHostNodeHoist,
998
+ fxHostNodeCode,
999
+ fxNodeCodeAssign,
1000
+ fxNodeCodeDelete,
1001
+ fxNodeCodeReference,
1002
+ fxNodeCodeThis
1003
+ };
1004
+ static const txNodeDispatch gxIfNodeDispatch ICACHE_FLASH_ATTR = {
1005
+ fxIfNodeDistribute,
1006
+ fxNodeBind,
1007
+ fxNodeHoist,
1008
+ fxIfNodeCode,
1009
+ fxNodeCodeAssign,
1010
+ fxNodeCodeDelete,
1011
+ fxNodeCodeReference,
1012
+ fxNodeCodeThis
1013
+ };
1014
+ static const txNodeDispatch gxImportNodeDispatch ICACHE_FLASH_ATTR = {
1015
+ fxImportNodeDistribute,
1016
+ fxNodeBind,
1017
+ fxImportNodeHoist,
1018
+ fxImportNodeCode,
1019
+ fxNodeCodeAssign,
1020
+ fxNodeCodeDelete,
1021
+ fxNodeCodeReference,
1022
+ fxNodeCodeThis
1023
+ };
1024
+ static const txNodeDispatch gxImportCallNodeDispatch ICACHE_FLASH_ATTR = {
1025
+ fxStatementNodeDistribute,
1026
+ fxNodeBind,
1027
+ fxNodeHoist,
1028
+ fxImportCallNodeCode,
1029
+ fxNodeCodeAssign,
1030
+ fxNodeCodeDelete,
1031
+ fxNodeCodeReference,
1032
+ fxNodeCodeThis
1033
+ };
1034
+ static const txNodeDispatch gxImportMetaNodeDispatch ICACHE_FLASH_ATTR = {
1035
+ fxNodeDistribute,
1036
+ fxNodeBind,
1037
+ fxNodeHoist,
1038
+ fxImportMetaNodeCode,
1039
+ fxNodeCodeAssign,
1040
+ fxNodeCodeDelete,
1041
+ fxNodeCodeReference,
1042
+ fxNodeCodeThis
1043
+ };
1044
+ static const txNodeDispatch gxIncludeNodeDispatch ICACHE_FLASH_ATTR = {
1045
+ fxIncludeNodeDistribute,
1046
+ fxNodeBind,
1047
+ fxNodeHoist,
1048
+ fxIncludeNodeCode,
1049
+ fxNodeCodeAssign,
1050
+ fxNodeCodeDelete,
1051
+ fxNodeCodeReference,
1052
+ fxNodeCodeThis
1053
+ };
1054
+ static const txNodeDispatch gxIntegerNodeDispatch ICACHE_FLASH_ATTR = {
1055
+ fxNodeDistribute,
1056
+ fxNodeBind,
1057
+ fxNodeHoist,
1058
+ fxIntegerNodeCode,
1059
+ fxNodeCodeAssign,
1060
+ fxNodeCodeDelete,
1061
+ fxNodeCodeReference,
1062
+ fxNodeCodeThis
1063
+ };
1064
+ static const txNodeDispatch gxLabelNodeDispatch ICACHE_FLASH_ATTR = {
1065
+ fxLabelNodeDistribute,
1066
+ fxNodeBind,
1067
+ fxNodeHoist,
1068
+ fxLabelNodeCode,
1069
+ fxNodeCodeAssign,
1070
+ fxNodeCodeDelete,
1071
+ fxNodeCodeReference,
1072
+ fxNodeCodeThis
1073
+ };
1074
+ static const txNodeDispatch gxMemberNodeDispatch ICACHE_FLASH_ATTR = {
1075
+ fxMemberNodeDistribute,
1076
+ fxNodeBind,
1077
+ fxNodeHoist,
1078
+ fxMemberNodeCode,
1079
+ fxMemberNodeCodeAssign,
1080
+ fxMemberNodeCodeDelete,
1081
+ fxMemberNodeCodeReference,
1082
+ fxMemberNodeCodeThis
1083
+ };
1084
+ static const txNodeDispatch gxMemberAtNodeDispatch ICACHE_FLASH_ATTR = {
1085
+ fxMemberAtNodeDistribute,
1086
+ fxNodeBind,
1087
+ fxNodeHoist,
1088
+ fxMemberAtNodeCode,
1089
+ fxMemberAtNodeCodeAssign,
1090
+ fxMemberAtNodeCodeDelete,
1091
+ fxMemberAtNodeCodeReference,
1092
+ fxMemberAtNodeCodeThis
1093
+ };
1094
+ static const txNodeDispatch gxModuleNodeDispatch ICACHE_FLASH_ATTR = {
1095
+ fxModuleNodeDistribute,
1096
+ fxModuleNodeBind,
1097
+ fxModuleNodeHoist,
1098
+ fxModuleNodeCode,
1099
+ fxNodeCodeAssign,
1100
+ fxNodeCodeDelete,
1101
+ fxNodeCodeReference,
1102
+ fxNodeCodeThis
1103
+ };
1104
+ static const txNodeDispatch gxNewNodeDispatch ICACHE_FLASH_ATTR = {
1105
+ fxCallNewNodeDistribute,
1106
+ fxNodeBind,
1107
+ fxNodeHoist,
1108
+ fxNewNodeCode,
1109
+ fxNodeCodeAssign,
1110
+ fxNodeCodeDelete,
1111
+ fxNodeCodeReference,
1112
+ fxNodeCodeThis
1113
+ };
1114
+ static const txNodeDispatch gxNumberNodeDispatch ICACHE_FLASH_ATTR = {
1115
+ fxNodeDistribute,
1116
+ fxNodeBind,
1117
+ fxNodeHoist,
1118
+ fxNumberNodeCode,
1119
+ fxNodeCodeAssign,
1120
+ fxNodeCodeDelete,
1121
+ fxNodeCodeReference,
1122
+ fxNodeCodeThis
1123
+ };
1124
+ static const txNodeDispatch gxObjectNodeDispatch ICACHE_FLASH_ATTR = {
1125
+ fxObjectNodeDistribute,
1126
+ fxObjectNodeBind,
1127
+ fxNodeHoist,
1128
+ fxObjectNodeCode,
1129
+ fxNodeCodeAssign,
1130
+ fxNodeCodeDelete,
1131
+ fxNodeCodeReference,
1132
+ fxNodeCodeThis
1133
+ };
1134
+ static const txNodeDispatch gxObjectBindingNodeDispatch ICACHE_FLASH_ATTR = {
1135
+ fxObjectBindingNodeDistribute,
1136
+ fxObjectBindingNodeBind,
1137
+ fxNodeHoist,
1138
+ fxObjectBindingNodeCode,
1139
+ fxObjectBindingNodeCodeAssign,
1140
+ fxNodeCodeDelete,
1141
+ fxNodeCodeReference,
1142
+ fxNodeCodeThis
1143
+ };
1144
+ static const txNodeDispatch gxOptionNodeDispatch ICACHE_FLASH_ATTR = {
1145
+ fxUnaryExpressionNodeDistribute,
1146
+ fxNodeBind,
1147
+ fxNodeHoist,
1148
+ fxOptionNodeCode,
1149
+ fxNodeCodeAssign,
1150
+ fxNodeCodeDelete,
1151
+ fxNodeCodeReference,
1152
+ fxOptionNodeCodeThis
1153
+ };
1154
+ static const txNodeDispatch gxOrExpressionNodeDispatch ICACHE_FLASH_ATTR = {
1155
+ fxBinaryExpressionNodeDistribute,
1156
+ fxNodeBind,
1157
+ fxNodeHoist,
1158
+ fxOrExpressionNodeCode,
1159
+ fxNodeCodeAssign,
1160
+ fxNodeCodeDelete,
1161
+ fxNodeCodeReference,
1162
+ fxNodeCodeThis
1163
+ };
1164
+ static const txNodeDispatch gxParamsNodeDispatch ICACHE_FLASH_ATTR = {
1165
+ fxParamsNodeDistribute,
1166
+ fxParamsNodeBind,
1167
+ fxNodeHoist,
1168
+ fxParamsNodeCode,
1169
+ fxNodeCodeAssign,
1170
+ fxNodeCodeDelete,
1171
+ fxNodeCodeReference,
1172
+ fxNodeCodeThis
1173
+ };
1174
+ static const txNodeDispatch gxParamsBindingNodeDispatch ICACHE_FLASH_ATTR = {
1175
+ fxParamsBindingNodeDistribute,
1176
+ fxParamsBindingNodeBind,
1177
+ fxParamsBindingNodeHoist,
1178
+ fxParamsBindingNodeCode,
1179
+ fxNodeCodeAssign,
1180
+ fxNodeCodeDelete,
1181
+ fxNodeCodeReference,
1182
+ fxNodeCodeThis
1183
+ };
1184
+ static const txNodeDispatch gxPostfixExpressionNodeDispatch ICACHE_FLASH_ATTR = {
1185
+ fxPostfixExpressionNodeDistribute,
1186
+ fxPostfixExpressionNodeBind,
1187
+ fxNodeHoist,
1188
+ fxPostfixExpressionNodeCode,
1189
+ fxNodeCodeAssign,
1190
+ fxNodeCodeDelete,
1191
+ fxNodeCodeReference,
1192
+ fxNodeCodeThis
1193
+ };
1194
+ static const txNodeDispatch gxPrivateIdentifierNodeDispatch ICACHE_FLASH_ATTR = {
1195
+ fxPrivateMemberNodeDistribute,
1196
+ fxPrivateMemberNodeBind,
1197
+ fxNodeHoist,
1198
+ fxPrivateIdentifierNodeCode,
1199
+ fxNodeCodeAssign,
1200
+ fxNodeCodeDelete,
1201
+ fxNodeCodeReference,
1202
+ fxNodeCodeThis
1203
+ };
1204
+ static const txNodeDispatch gxPrivateMemberNodeDispatch ICACHE_FLASH_ATTR = {
1205
+ fxPrivateMemberNodeDistribute,
1206
+ fxPrivateMemberNodeBind,
1207
+ fxNodeHoist,
1208
+ fxPrivateMemberNodeCode,
1209
+ fxPrivateMemberNodeCodeAssign,
1210
+ fxPrivateMemberNodeCodeDelete,
1211
+ fxPrivateMemberNodeCodeReference,
1212
+ fxPrivateMemberNodeCodeThis
1213
+ };
1214
+ static const txNodeDispatch gxPrivatePropertyNodeDispatch ICACHE_FLASH_ATTR = {
1215
+ fxPrivatePropertyNodeDistribute,
1216
+ fxNodeBind,
1217
+ fxNodeHoist,
1218
+ fxNodeCode,
1219
+ fxNodeCodeAssign,
1220
+ fxNodeCodeDelete,
1221
+ fxNodeCodeReference,
1222
+ fxNodeCodeThis
1223
+ };
1224
+ static const txNodeDispatch gxProgramNodeDispatch ICACHE_FLASH_ATTR = {
1225
+ fxProgramNodeDistribute,
1226
+ fxProgramNodeBind,
1227
+ fxProgramNodeHoist,
1228
+ fxProgramNodeCode,
1229
+ fxNodeCodeAssign,
1230
+ fxNodeCodeDelete,
1231
+ fxNodeCodeReference,
1232
+ fxNodeCodeThis
1233
+ };
1234
+ static const txNodeDispatch gxPropertyNodeDispatch ICACHE_FLASH_ATTR = {
1235
+ fxPropertyNodeDistribute,
1236
+ fxNodeBind,
1237
+ fxPropertyNodeHoist,
1238
+ fxNodeCode,
1239
+ fxNodeCodeAssign,
1240
+ fxNodeCodeDelete,
1241
+ fxNodeCodeReference,
1242
+ fxNodeCodeThis
1243
+ };
1244
+ static const txNodeDispatch gxPropertyAtNodeDispatch ICACHE_FLASH_ATTR = {
1245
+ fxPropertyAtNodeDistribute,
1246
+ fxNodeBind,
1247
+ fxNodeHoist,
1248
+ fxNodeCode,
1249
+ fxNodeCodeAssign,
1250
+ fxNodeCodeDelete,
1251
+ fxNodeCodeReference,
1252
+ fxNodeCodeThis
1253
+ };
1254
+ static const txNodeDispatch gxPropertyBindingNodeDispatch ICACHE_FLASH_ATTR = {
1255
+ fxPropertyBindingNodeDistribute,
1256
+ fxNodeBind,
1257
+ fxNodeHoist,
1258
+ fxNodeCode,
1259
+ fxNodeCodeAssign,
1260
+ fxNodeCodeDelete,
1261
+ fxNodeCodeReference,
1262
+ fxNodeCodeThis
1263
+ };
1264
+ static const txNodeDispatch gxPropertyBindingAtNodeDispatch ICACHE_FLASH_ATTR = {
1265
+ fxPropertyBindingAtNodeDistribute,
1266
+ fxNodeBind,
1267
+ fxNodeHoist,
1268
+ fxNodeCode,
1269
+ fxNodeCodeAssign,
1270
+ fxNodeCodeDelete,
1271
+ fxNodeCodeReference,
1272
+ fxNodeCodeThis
1273
+ };
1274
+ static const txNodeDispatch gxQuestionMarkNodeDispatch ICACHE_FLASH_ATTR = {
1275
+ fxQuestionMarkNodeDistribute,
1276
+ fxNodeBind,
1277
+ fxNodeHoist,
1278
+ fxQuestionMarkNodeCode,
1279
+ fxNodeCodeAssign,
1280
+ fxNodeCodeDelete,
1281
+ fxNodeCodeReference,
1282
+ fxNodeCodeThis
1283
+ };
1284
+ static const txNodeDispatch gxRegexpNodeDispatch ICACHE_FLASH_ATTR = {
1285
+ fxRegexpNodeDistribute,
1286
+ fxNodeBind,
1287
+ fxNodeHoist,
1288
+ fxRegexpNodeCode,
1289
+ fxNodeCodeAssign,
1290
+ fxNodeCodeDelete,
1291
+ fxNodeCodeReference,
1292
+ fxNodeCodeThis
1293
+ };
1294
+ static const txNodeDispatch gxRestBindingNodeDispatch ICACHE_FLASH_ATTR = {
1295
+ fxRestBindingNodeDistribute,
1296
+ fxNodeBind,
1297
+ fxNodeHoist,
1298
+ fxNodeCode,
1299
+ fxNodeCodeAssign,
1300
+ fxNodeCodeDelete,
1301
+ fxNodeCodeReference,
1302
+ fxNodeCodeThis
1303
+ };
1304
+ static const txNodeDispatch gxReturnNodeDispatch ICACHE_FLASH_ATTR = {
1305
+ fxReturnNodeDistribute,
1306
+ fxNodeBind,
1307
+ fxNodeHoist,
1308
+ fxReturnNodeCode,
1309
+ fxNodeCodeAssign,
1310
+ fxNodeCodeDelete,
1311
+ fxNodeCodeReference,
1312
+ fxNodeCodeThis
1313
+ };
1314
+ static const txNodeDispatch gxSkipBindingNodeDispatch ICACHE_FLASH_ATTR = {
1315
+ fxNodeDistribute,
1316
+ fxNodeBind,
1317
+ fxNodeHoist,
1318
+ fxNodeCode,
1319
+ fxNodeCodeAssign,
1320
+ fxNodeCodeDelete,
1321
+ fxNodeCodeReference,
1322
+ fxNodeCodeThis
1323
+ };
1324
+ static const txNodeDispatch gxSpecifierNodeDispatch ICACHE_FLASH_ATTR = {
1325
+ fxNodeDistribute,
1326
+ fxNodeBind,
1327
+ fxNodeHoist,
1328
+ fxNodeCode,
1329
+ fxNodeCodeAssign,
1330
+ fxNodeCodeDelete,
1331
+ fxNodeCodeReference,
1332
+ fxNodeCodeThis
1333
+ };
1334
+ static const txNodeDispatch gxSpreadNodeDispatch ICACHE_FLASH_ATTR = {
1335
+ fxSpreadNodeDistribute,
1336
+ fxSpreadNodeBind,
1337
+ fxNodeHoist,
1338
+ fxNodeCode,
1339
+ fxNodeCodeAssign,
1340
+ fxNodeCodeDelete,
1341
+ fxNodeCodeReference,
1342
+ fxNodeCodeThis
1343
+ };
1344
+ static const txNodeDispatch gxStatementNodeDispatch ICACHE_FLASH_ATTR = {
1345
+ fxStatementNodeDistribute,
1346
+ fxNodeBind,
1347
+ fxStatementNodeHoist,
1348
+ fxStatementNodeCode,
1349
+ fxNodeCodeAssign,
1350
+ fxNodeCodeDelete,
1351
+ fxNodeCodeReference,
1352
+ fxNodeCodeThis
1353
+ };
1354
+ static const txNodeDispatch gxStatementsNodeDispatch ICACHE_FLASH_ATTR = {
1355
+ fxStatementsNodeDistribute,
1356
+ fxNodeBind,
1357
+ fxNodeHoist,
1358
+ fxStatementsNodeCode,
1359
+ fxNodeCodeAssign,
1360
+ fxNodeCodeDelete,
1361
+ fxNodeCodeReference,
1362
+ fxNodeCodeThis
1363
+ };
1364
+ static const txNodeDispatch gxStringNodeDispatch ICACHE_FLASH_ATTR = {
1365
+ fxNodeDistribute,
1366
+ fxNodeBind,
1367
+ fxStringNodeHoist,
1368
+ fxStringNodeCode,
1369
+ fxNodeCodeAssign,
1370
+ fxNodeCodeDelete,
1371
+ fxNodeCodeReference,
1372
+ fxNodeCodeThis
1373
+ };
1374
+ static const txNodeDispatch gxSuperNodeDispatch ICACHE_FLASH_ATTR = {
1375
+ fxSuperNodeDistribute,
1376
+ fxSuperNodeBind,
1377
+ fxNodeHoist,
1378
+ fxSuperNodeCode,
1379
+ fxNodeCodeAssign,
1380
+ fxNodeCodeDelete,
1381
+ fxNodeCodeReference,
1382
+ fxNodeCodeThis
1383
+ };
1384
+ static const txNodeDispatch gxSwitchNodeDispatch ICACHE_FLASH_ATTR = {
1385
+ fxSwitchNodeDistribute,
1386
+ fxSwitchNodeBind,
1387
+ fxSwitchNodeHoist,
1388
+ fxSwitchNodeCode,
1389
+ fxNodeCodeAssign,
1390
+ fxNodeCodeDelete,
1391
+ fxNodeCodeReference,
1392
+ fxNodeCodeThis
1393
+ };
1394
+ static const txNodeDispatch gxTemplateNodeDispatch ICACHE_FLASH_ATTR = {
1395
+ fxTemplateNodeDistribute,
1396
+ fxTemplateNodeBind,
1397
+ fxNodeHoist,
1398
+ fxTemplateNodeCode,
1399
+ fxNodeCodeAssign,
1400
+ fxNodeCodeDelete,
1401
+ fxNodeCodeReference,
1402
+ fxNodeCodeThis
1403
+ };
1404
+ static const txNodeDispatch gxTemplateItemNodeDispatch ICACHE_FLASH_ATTR = {
1405
+ fxTemplateItemNodeDistribute,
1406
+ fxNodeBind,
1407
+ fxNodeHoist,
1408
+ fxNodeCode,
1409
+ fxNodeCodeAssign,
1410
+ fxNodeCodeDelete,
1411
+ fxNodeCodeReference,
1412
+ fxNodeCodeThis
1413
+ };
1414
+ static const txNodeDispatch gxThisNodeDispatch ICACHE_FLASH_ATTR = {
1415
+ fxNodeDistribute,
1416
+ fxNodeBind,
1417
+ fxNodeHoist,
1418
+ fxThisNodeCode,
1419
+ fxNodeCodeAssign,
1420
+ fxNodeCodeDelete,
1421
+ fxNodeCodeReference,
1422
+ fxNodeCodeThis
1423
+ };
1424
+ static const txNodeDispatch gxThrowNodeDispatch ICACHE_FLASH_ATTR = {
1425
+ fxStatementNodeDistribute,
1426
+ fxNodeBind,
1427
+ fxNodeHoist,
1428
+ fxThrowNodeCode,
1429
+ fxNodeCodeAssign,
1430
+ fxNodeCodeDelete,
1431
+ fxNodeCodeReference,
1432
+ fxNodeCodeThis
1433
+ };
1434
+ static const txNodeDispatch gxTryNodeDispatch ICACHE_FLASH_ATTR = {
1435
+ fxTryNodeDistribute,
1436
+ fxTryNodeBind,
1437
+ fxNodeHoist,
1438
+ fxTryNodeCode,
1439
+ fxNodeCodeAssign,
1440
+ fxNodeCodeDelete,
1441
+ fxNodeCodeReference,
1442
+ fxNodeCodeThis
1443
+ };
1444
+ static const txNodeDispatch gxUnaryExpressionNodeDispatch ICACHE_FLASH_ATTR = {
1445
+ fxUnaryExpressionNodeDistribute,
1446
+ fxNodeBind,
1447
+ fxNodeHoist,
1448
+ fxUnaryExpressionNodeCode,
1449
+ fxNodeCodeAssign,
1450
+ fxNodeCodeDelete,
1451
+ fxNodeCodeReference,
1452
+ fxNodeCodeThis
1453
+ };
1454
+ static const txNodeDispatch gxUndefinedNodeDispatch ICACHE_FLASH_ATTR = {
1455
+ fxNodeDistribute,
1456
+ fxNodeBind,
1457
+ fxNodeHoist,
1458
+ fxValueNodeCode,
1459
+ fxUndefinedNodeCodeAssign,
1460
+ fxUndefinedNodeCodeDelete,
1461
+ fxUndefinedNodeCodeReference,
1462
+ fxNodeCodeThis
1463
+ };
1464
+ static const txNodeDispatch gxValueNodeDispatch ICACHE_FLASH_ATTR = {
1465
+ fxNodeDistribute,
1466
+ fxNodeBind,
1467
+ fxNodeHoist,
1468
+ fxValueNodeCode,
1469
+ fxNodeCodeAssign,
1470
+ fxNodeCodeDelete,
1471
+ fxNodeCodeReference,
1472
+ fxNodeCodeThis
1473
+ };
1474
+ static const txNodeDispatch gxWhileNodeDispatch ICACHE_FLASH_ATTR = {
1475
+ fxWhileNodeDistribute,
1476
+ fxNodeBind,
1477
+ fxNodeHoist,
1478
+ fxWhileNodeCode,
1479
+ fxNodeCodeAssign,
1480
+ fxNodeCodeDelete,
1481
+ fxNodeCodeReference,
1482
+ fxNodeCodeThis
1483
+ };
1484
+ static const txNodeDispatch gxWithNodeDispatch ICACHE_FLASH_ATTR = {
1485
+ fxWithNodeDistribute,
1486
+ fxWithNodeBind,
1487
+ fxWithNodeHoist,
1488
+ fxWithNodeCode,
1489
+ fxNodeCodeAssign,
1490
+ fxNodeCodeDelete,
1491
+ fxNodeCodeReference,
1492
+ fxNodeCodeThis
1493
+ };
1494
+ static const txNodeDispatch gxYieldNodeDispatch ICACHE_FLASH_ATTR = {
1495
+ fxStatementNodeDistribute,
1496
+ fxNodeBind,
1497
+ fxNodeHoist,
1498
+ fxYieldNodeCode,
1499
+ fxNodeCodeAssign,
1500
+ fxNodeCodeDelete,
1501
+ fxNodeCodeReference,
1502
+ fxNodeCodeThis
1503
+ };
1504
+
1505
+ const txNodeDescription gxTokenDescriptions[XS_TOKEN_COUNT] ICACHE_FLASH_ATTR = {
1506
+ { XS_NO_CODE, XS_NO_TOKEN, "", 0, NULL },
1507
+ { XS_NO_CODE, XS_TOKEN_ACCESS, "Access", sizeof(txAccessNode), &gxAccessNodeDispatch },
1508
+ { XS_CODE_ADD, XS_TOKEN_ADD, "Add", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1509
+ { XS_CODE_ADD, XS_TOKEN_ADD_ASSIGN, "AddAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1510
+ { XS_NO_CODE, XS_TOKEN_AND, "And", sizeof(txBinaryExpressionNode), &gxAndExpressionNodeDispatch },
1511
+ { XS_NO_CODE, XS_TOKEN_AND_ASSIGN, "AndAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1512
+ { XS_NO_CODE, XS_TOKEN_ARG, "Arg", sizeof(txDeclareNode), &gxDeclareNodeDispatch },
1513
+ { XS_NO_CODE, XS_TOKEN_ARGUMENTS, "Arguments", sizeof(txNode), &gxArgumentsNodeDispatch },
1514
+ { XS_CODE_ARGUMENTS_SLOPPY, XS_TOKEN_ARGUMENTS_SLOPPY, "Arguments", sizeof(txNode), &gxValueNodeDispatch },
1515
+ { XS_CODE_ARGUMENTS_STRICT, XS_TOKEN_ARGUMENTS_STRICT, "Arguments", sizeof(txNode), &gxValueNodeDispatch },
1516
+ { XS_NO_CODE, XS_TOKEN_ARRAY, "Array", sizeof(txArrayNode), &gxArrayNodeDispatch },
1517
+ { XS_NO_CODE, XS_TOKEN_ARRAY_BINDING, "ArrayBinding", sizeof(txArrayBindingNode), &gxArrayBindingNodeDispatch },
1518
+ { XS_NO_CODE, XS_TOKEN_ARROW, "", 0, NULL },
1519
+ { XS_NO_CODE, XS_TOKEN_ASSIGN, "Assign", sizeof(txAssignNode), &gxAssignNodeDispatch },
1520
+ { XS_NO_CODE, XS_TOKEN_AWAIT, "Await", sizeof(txStatementNode), &gxAwaitNodeDispatch },
1521
+ { XS_NO_CODE, XS_TOKEN_BIGINT, "BigInt", sizeof(txBigIntNode), &gxBigIntNodeDispatch },
1522
+ { XS_NO_CODE, XS_TOKEN_BINDING, "Binding", sizeof(txBindingNode), &gxBindingNodeDispatch },
1523
+ { XS_CODE_BIT_AND, XS_TOKEN_BIT_AND, "BitAnd", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1524
+ { XS_CODE_BIT_AND, XS_TOKEN_BIT_AND_ASSIGN, "BitAndAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1525
+ { XS_CODE_BIT_NOT, XS_TOKEN_BIT_NOT, "BitNot", sizeof(txUnaryExpressionNode), &gxUnaryExpressionNodeDispatch },
1526
+ { XS_CODE_BIT_OR, XS_TOKEN_BIT_OR, "BitOr", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1527
+ { XS_CODE_BIT_OR, XS_TOKEN_BIT_OR_ASSIGN, "BitOrAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1528
+ { XS_CODE_BIT_XOR, XS_TOKEN_BIT_XOR, "BitXor", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1529
+ { XS_CODE_BIT_XOR, XS_TOKEN_BIT_XOR_ASSIGN, "BitXorAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1530
+ { XS_NO_CODE, XS_TOKEN_BLOCK, "Block", sizeof(txBlockNode), &gxBlockNodeDispatch },
1531
+ { XS_NO_CODE, XS_TOKEN_BODY, "Body", sizeof(txBodyNode), &gxBodyNodeDispatch },
1532
+ { XS_NO_CODE, XS_TOKEN_BREAK, "Break", sizeof(txBreakContinueNode), &gxBreakContinueNodeDispatch },
1533
+ { XS_CODE_CALL, XS_TOKEN_CALL, "Call", sizeof(txCallNewNode), &gxCallNodeDispatch },
1534
+ { XS_NO_CODE, XS_TOKEN_CASE, "Case", sizeof(txCaseNode), &gxCaseNodeDispatch },
1535
+ { XS_NO_CODE, XS_TOKEN_CATCH, "Catch", sizeof(txCatchNode), &gxCatchNodeDispatch },
1536
+ { XS_NO_CODE, XS_TOKEN_CHAIN, "Chain", sizeof(txUnaryExpressionNode), &gxChainNodeDispatch },
1537
+ { XS_NO_CODE, XS_TOKEN_CLASS, "Class", sizeof(txClassNode), &gxClassNodeDispatch },
1538
+ { XS_NO_CODE, XS_TOKEN_COALESCE, "Coalesce", sizeof(txBinaryExpressionNode), &gxCoalesceExpressionNodeDispatch },
1539
+ { XS_NO_CODE, XS_TOKEN_COALESCE_ASSIGN, "CoalesceAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1540
+ { XS_NO_CODE, XS_TOKEN_COLON, "", 0, NULL },
1541
+ { XS_NO_CODE, XS_TOKEN_COMMA, "", 0, NULL },
1542
+ { XS_NO_CODE, XS_TOKEN_CONST, "Const", sizeof(txDeclareNode), &gxDeclareNodeDispatch },
1543
+ { XS_NO_CODE, XS_TOKEN_CONTINUE, "Continue", sizeof(txBreakContinueNode), &gxBreakContinueNodeDispatch },
1544
+ { XS_CODE_CURRENT, XS_TOKEN_CURRENT, "Current", sizeof(txNode), &gxValueNodeDispatch },
1545
+ { XS_CODE_DEBUGGER, XS_TOKEN_DEBUGGER, "Debugger", sizeof(txNode), &gxDebuggerNodeDispatch },
1546
+ { XS_CODE_DECREMENT, XS_TOKEN_DECREMENT, "Decrement", sizeof(txPostfixExpressionNode), &gxPostfixExpressionNodeDispatch },
1547
+ { XS_NO_CODE, XS_TOKEN_DEFAULT, "", 0, NULL },
1548
+ { XS_NO_CODE, XS_TOKEN_DEFINE, "Define", sizeof(txDefineNode), &gxDefineNodeDispatch },
1549
+ { XS_NO_CODE, XS_TOKEN_DELEGATE, "Delegate", sizeof(txStatementNode), &gxDelegateNodeDispatch },
1550
+ { XS_NO_CODE, XS_TOKEN_DELETE, "Delete", sizeof(txDeleteNode), &gxDeleteNodeDispatch },
1551
+ { XS_CODE_DIVIDE, XS_TOKEN_DIVIDE, "Divide", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1552
+ { XS_CODE_DIVIDE, XS_TOKEN_DIVIDE_ASSIGN, "DivideAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1553
+ { XS_NO_CODE, XS_TOKEN_DO, "Do", sizeof(txDoNode), &gxDoNodeDispatch },
1554
+ { XS_NO_CODE, XS_TOKEN_DOT, "", 0, NULL },
1555
+ { XS_CODE_UNDEFINED, XS_TOKEN_ELISION, "Elision", sizeof(txNode), &gxValueNodeDispatch },
1556
+ { XS_NO_CODE, XS_TOKEN_ELSE, "", 0, NULL },
1557
+ { XS_NO_CODE, XS_TOKEN_ENUM, "", 0, NULL },
1558
+ { XS_NO_CODE, XS_TOKEN_EOF, "", 0, NULL },
1559
+ { XS_CODE_EQUAL, XS_TOKEN_EQUAL, "Equal", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1560
+ { XS_CODE_EVAL, XS_TOKEN_EVAL, "", 0, NULL },
1561
+ { XS_CODE_EXPONENTIATION, XS_TOKEN_EXPONENTIATION, "Exponent", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1562
+ { XS_CODE_EXPONENTIATION, XS_TOKEN_EXPONENTIATION_ASSIGN, "ExponentAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1563
+ { XS_NO_CODE, XS_TOKEN_EXPORT, "Export", sizeof(txExportNode), &gxExportNodeDispatch },
1564
+ { XS_NO_CODE, XS_TOKEN_EXPRESSIONS, "Expressions", sizeof(txExpressionsNode), &gxExpressionsNodeDispatch },
1565
+ { XS_NO_CODE, XS_TOKEN_EXTENDS, "", 0, NULL },
1566
+ { XS_CODE_FALSE, XS_TOKEN_FALSE, "False", sizeof(txNode), &gxValueNodeDispatch },
1567
+ { XS_NO_CODE, XS_TOKEN_FIELD, "Field", sizeof(txFieldNode), &gxFieldNodeDispatch },
1568
+ { XS_NO_CODE, XS_TOKEN_FINALLY, "", 0, NULL },
1569
+ { XS_NO_CODE, XS_TOKEN_FOR, "For", sizeof(txForNode), &gxForNodeDispatch },
1570
+ { XS_CODE_FOR_AWAIT_OF, XS_TOKEN_FOR_AWAIT_OF, "ForAwaitOf", sizeof(txForInForOfNode), &gxForInForOfNodeDispatch },
1571
+ { XS_CODE_FOR_IN, XS_TOKEN_FOR_IN, "ForIn", sizeof(txForInForOfNode), &gxForInForOfNodeDispatch },
1572
+ { XS_CODE_FOR_OF, XS_TOKEN_FOR_OF, "ForOf", sizeof(txForInForOfNode), &gxForInForOfNodeDispatch },
1573
+ { XS_NO_CODE, XS_TOKEN_FUNCTION, "Function", sizeof(txFunctionNode), &gxFunctionNodeDispatch },
1574
+ { XS_NO_CODE, XS_TOKEN_GENERATOR, "Generator", sizeof(txFunctionNode), &gxFunctionNodeDispatch },
1575
+ { XS_NO_CODE, XS_TOKEN_GETTER, "Getter", sizeof(txFunctionNode), &gxFunctionNodeDispatch },
1576
+ { XS_NO_CODE, XS_TOKEN_HOST, "Host", sizeof(txHostNode), &gxHostNodeDispatch },
1577
+ { XS_NO_CODE, XS_TOKEN_IDENTIFIER, "", 0, NULL },
1578
+ { XS_NO_CODE, XS_TOKEN_IF, "If", sizeof(txIfNode), &gxIfNodeDispatch },
1579
+ { XS_NO_CODE, XS_TOKEN_IMPLEMENTS, "", 0, NULL },
1580
+ { XS_NO_CODE, XS_TOKEN_IMPORT, "Import", sizeof(txImportNode), &gxImportNodeDispatch },
1581
+ { XS_NO_CODE, XS_TOKEN_IMPORT_CALL, "ImportCall", sizeof(txStatementNode), &gxImportCallNodeDispatch },
1582
+ { XS_NO_CODE, XS_TOKEN_IMPORT_META, "ImportMeta", sizeof(txNode), &gxImportMetaNodeDispatch },
1583
+ { XS_CODE_IN, XS_TOKEN_IN, "In", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1584
+ { XS_NO_CODE, XS_TOKEN_INCLUDE, "include", sizeof(txIncludeNode), &gxIncludeNodeDispatch },
1585
+ { XS_CODE_INCREMENT, XS_TOKEN_INCREMENT, "Increment", sizeof(txPostfixExpressionNode), &gxPostfixExpressionNodeDispatch },
1586
+ { XS_CODE_INSTANCEOF, XS_TOKEN_INSTANCEOF, "Instanceof", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1587
+ { XS_NO_CODE, XS_TOKEN_INTEGER, "Integer", sizeof(txIntegerNode), &gxIntegerNodeDispatch },
1588
+ { XS_NO_CODE, XS_TOKEN_INTERFACE, "", 0, NULL },
1589
+ { XS_NO_CODE, XS_TOKEN_ITEMS, "Items", 0, NULL },
1590
+ { XS_NO_CODE, XS_TOKEN_LABEL, "Label", sizeof(txLabelNode), &gxLabelNodeDispatch },
1591
+ { XS_NO_CODE, XS_TOKEN_LEFT_BRACE, "", 0, NULL },
1592
+ { XS_NO_CODE, XS_TOKEN_LEFT_BRACKET, "", 0, NULL },
1593
+ { XS_NO_CODE, XS_TOKEN_LEFT_PARENTHESIS, "", 0, NULL },
1594
+ { XS_CODE_LEFT_SHIFT, XS_TOKEN_LEFT_SHIFT, "LeftShift", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1595
+ { XS_CODE_LEFT_SHIFT, XS_TOKEN_LEFT_SHIFT_ASSIGN, "LeftShiftAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1596
+ { XS_CODE_LESS, XS_TOKEN_LESS, "Less", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1597
+ { XS_CODE_LESS_EQUAL, XS_TOKEN_LESS_EQUAL, "LessEqual", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1598
+ { XS_NO_CODE, XS_TOKEN_LET, "Let", sizeof(txDeclareNode), &gxDeclareNodeDispatch },
1599
+ { XS_NO_CODE, XS_TOKEN_MEMBER, "Member", sizeof(txMemberNode), &gxMemberNodeDispatch },
1600
+ { XS_NO_CODE, XS_TOKEN_MEMBER_AT, "MemberAt", sizeof(txMemberAtNode), &gxMemberAtNodeDispatch },
1601
+ { XS_CODE_MINUS, XS_TOKEN_MINUS, "Minus", sizeof(txUnaryExpressionNode), &gxUnaryExpressionNodeDispatch },
1602
+ { XS_NO_CODE, XS_TOKEN_MODULE, "Module", sizeof(txModuleNode), &gxModuleNodeDispatch },
1603
+ { XS_CODE_MODULO, XS_TOKEN_MODULO, "Modulo", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1604
+ { XS_CODE_MODULO, XS_TOKEN_MODULO_ASSIGN, "ModuloAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1605
+ { XS_CODE_MORE, XS_TOKEN_MORE, "More", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1606
+ { XS_CODE_MORE_EQUAL, XS_TOKEN_MORE_EQUAL, "MoreEqual", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1607
+ { XS_CODE_MULTIPLY, XS_TOKEN_MULTIPLY, "Multiply", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1608
+ { XS_CODE_MULTIPLY, XS_TOKEN_MULTIPLY_ASSIGN, "MultiplyAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1609
+ { XS_CODE_NEW, XS_TOKEN_NEW, "New", sizeof(txCallNewNode), &gxNewNodeDispatch },
1610
+ { XS_CODE_NOT, XS_TOKEN_NOT, "Not", sizeof(txUnaryExpressionNode), &gxUnaryExpressionNodeDispatch },
1611
+ { XS_CODE_NOT_EQUAL, XS_TOKEN_NOT_EQUAL, "NotEqual", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1612
+ { XS_CODE_NULL, XS_TOKEN_NULL, "Null", sizeof(txNode), &gxValueNodeDispatch },
1613
+ { XS_NO_CODE, XS_TOKEN_NUMBER, "Number", sizeof(txNumberNode), &gxNumberNodeDispatch },
1614
+ { XS_NO_CODE, XS_TOKEN_OBJECT, "Object", sizeof(txObjectNode), &gxObjectNodeDispatch },
1615
+ { XS_NO_CODE, XS_TOKEN_OBJECT_BINDING, "ObjectBinding", sizeof(txObjectBindingNode), &gxObjectBindingNodeDispatch },
1616
+ { XS_NO_CODE, XS_TOKEN_OPTION, "Option", sizeof(txUnaryExpressionNode), &gxOptionNodeDispatch },
1617
+ { XS_NO_CODE, XS_TOKEN_OR, "Or", sizeof(txBinaryExpressionNode), &gxOrExpressionNodeDispatch },
1618
+ { XS_NO_CODE, XS_TOKEN_OR_ASSIGN, "OrAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1619
+ { XS_NO_CODE, XS_TOKEN_PACKAGE, "", 0, NULL },
1620
+ { XS_NO_CODE, XS_TOKEN_PARAMS, "Params", sizeof(txParamsNode), &gxParamsNodeDispatch },
1621
+ { XS_NO_CODE, XS_TOKEN_PARAMS_BINDING, "ParamsBinding", sizeof(txParamsBindingNode), &gxParamsBindingNodeDispatch },
1622
+ { XS_CODE_PLUS, XS_TOKEN_PLUS, "Plus", sizeof(txUnaryExpressionNode), &gxUnaryExpressionNodeDispatch },
1623
+ { XS_NO_CODE, XS_TOKEN_PRIVATE, "", 0, NULL },
1624
+ { XS_NO_CODE, XS_TOKEN_PRIVATE_IDENTIFIER, "PrivateIdenfifier", sizeof(txPrivateMemberNode), &gxPrivateIdentifierNodeDispatch },
1625
+ { XS_NO_CODE, XS_TOKEN_PRIVATE_MEMBER, "PrivateMember", sizeof(txPrivateMemberNode), &gxPrivateMemberNodeDispatch },
1626
+ { XS_NO_CODE, XS_TOKEN_PRIVATE_PROPERTY, "PrivateProperty", sizeof(txPrivatePropertyNode), &gxPrivatePropertyNodeDispatch },
1627
+ { XS_NO_CODE, XS_TOKEN_PROGRAM, "Program", sizeof(txProgramNode), &gxProgramNodeDispatch },
1628
+ { XS_NO_CODE, XS_TOKEN_PROPERTY, "Property", sizeof(txPropertyNode), &gxPropertyNodeDispatch },
1629
+ { XS_NO_CODE, XS_TOKEN_PROPERTY_AT, "PropertyAt", sizeof(txPropertyAtNode), &gxPropertyAtNodeDispatch },
1630
+ { XS_NO_CODE, XS_TOKEN_PROPERTY_BINDING, "PropertyBinding", sizeof(txPropertyBindingNode), &gxPropertyBindingNodeDispatch },
1631
+ { XS_NO_CODE, XS_TOKEN_PROPERTY_BINDING_AT, "PropertyBindingAt", sizeof(txPropertyBindingAtNode), &gxPropertyBindingAtNodeDispatch },
1632
+ { XS_NO_CODE, XS_TOKEN_PROTECTED, "", 0, NULL },
1633
+ { XS_NO_CODE, XS_TOKEN_PUBLIC, "", 0, NULL },
1634
+ { XS_NO_CODE, XS_TOKEN_QUESTION_MARK, "QuestionMark", sizeof(txQuestionMarkNode), &gxQuestionMarkNodeDispatch },
1635
+ { XS_NO_CODE, XS_TOKEN_REGEXP, "Regexp", sizeof(txRegexpNode), &gxRegexpNodeDispatch },
1636
+ { XS_NO_CODE, XS_TOKEN_REST_BINDING, "RestBinding", sizeof(txRestBindingNode), &gxRestBindingNodeDispatch },
1637
+ { XS_NO_CODE, XS_TOKEN_RETURN, "Return", sizeof(txStatementNode), &gxReturnNodeDispatch },
1638
+ { XS_NO_CODE, XS_TOKEN_RIGHT_BRACE, "", 0, NULL },
1639
+ { XS_NO_CODE, XS_TOKEN_RIGHT_BRACKET, "", 0, NULL },
1640
+ { XS_NO_CODE, XS_TOKEN_RIGHT_PARENTHESIS, "", 0, NULL },
1641
+ { XS_NO_CODE, XS_TOKEN_SEMICOLON, "", 0, NULL },
1642
+ { XS_NO_CODE, XS_TOKEN_SETTER, "Setter", sizeof(txFunctionNode), &gxFunctionNodeDispatch },
1643
+ { XS_NO_CODE, XS_TOKEN_SHORT, "", 0, NULL },
1644
+ { XS_CODE_SIGNED_RIGHT_SHIFT, XS_TOKEN_SIGNED_RIGHT_SHIFT, "SignedRightShift", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1645
+ { XS_CODE_SIGNED_RIGHT_SHIFT, XS_TOKEN_SIGNED_RIGHT_SHIFT_ASSIGN, "SignedRightShiftAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1646
+ { XS_NO_CODE, XS_TOKEN_SKIP_BINDING, "SkipBinding", sizeof(txSkipBindingNode), &gxSkipBindingNodeDispatch },
1647
+ { XS_NO_CODE, XS_TOKEN_SPECIFIER, "Specifier", sizeof(txSpecifierNode), &gxSpecifierNodeDispatch },
1648
+ { XS_NO_CODE, XS_TOKEN_SPREAD, "Spread", sizeof(txSpreadNode), &gxSpreadNodeDispatch },
1649
+ { XS_NO_CODE, XS_TOKEN_STATEMENT, "Statement", sizeof(txStatementNode), &gxStatementNodeDispatch },
1650
+ { XS_NO_CODE, XS_TOKEN_STATEMENTS, "Statements", sizeof(txStatementsNode), &gxStatementsNodeDispatch },
1651
+ { XS_NO_CODE, XS_TOKEN_STATIC, "", 0, NULL },
1652
+ { XS_CODE_STRICT_EQUAL, XS_TOKEN_STRICT_EQUAL, "StrictEqual", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1653
+ { XS_CODE_STRICT_NOT_EQUAL, XS_TOKEN_STRICT_NOT_EQUAL, "StrictNotEqual", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1654
+ { XS_NO_CODE, XS_TOKEN_STRING, "String", sizeof(txStringNode), &gxStringNodeDispatch },
1655
+ { XS_CODE_SUBTRACT, XS_TOKEN_SUBTRACT, "Subtract", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1656
+ { XS_CODE_SUBTRACT, XS_TOKEN_SUBTRACT_ASSIGN, "SubtractAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1657
+ { XS_CODE_SUPER, XS_TOKEN_SUPER, "Super", sizeof(txSuperNode), &gxSuperNodeDispatch },
1658
+ { XS_NO_CODE, XS_TOKEN_SWITCH, "Switch", sizeof(txSwitchNode), &gxSwitchNodeDispatch },
1659
+ { XS_CODE_TARGET, XS_TOKEN_TARGET, "Target", sizeof(txNode), &gxValueNodeDispatch },
1660
+ { XS_NO_CODE, XS_TOKEN_TEMPLATE, "Template", sizeof(txTemplateNode), &gxTemplateNodeDispatch },
1661
+ { XS_NO_CODE, XS_TOKEN_TEMPLATE_HEAD, "", 0, NULL },
1662
+ { XS_NO_CODE, XS_TOKEN_TEMPLATE_MIDDLE, "TemplateItem", sizeof(txTemplateItemNode), &gxTemplateItemNodeDispatch },
1663
+ { XS_NO_CODE, XS_TOKEN_TEMPLATE_TAIL, "", 0, NULL },
1664
+ { XS_CODE_THIS, XS_TOKEN_THIS, "This", sizeof(txNode), &gxThisNodeDispatch },
1665
+ { XS_NO_CODE, XS_TOKEN_THROW, "Throw", sizeof(txStatementNode), &gxThrowNodeDispatch },
1666
+ { XS_CODE_TRUE, XS_TOKEN_TRUE, "True", sizeof(txNode), &gxValueNodeDispatch },
1667
+ { XS_NO_CODE, XS_TOKEN_TRY, "Try", sizeof(txTryNode), &gxTryNodeDispatch },
1668
+ { XS_CODE_TYPEOF, XS_TOKEN_TYPEOF, "Typeof", sizeof(txUnaryExpressionNode), &gxUnaryExpressionNodeDispatch },
1669
+ { XS_CODE_UNDEFINED, XS_TOKEN_UNDEFINED, "Undefined", sizeof(txNode), &gxUndefinedNodeDispatch },
1670
+ { XS_CODE_UNSIGNED_RIGHT_SHIFT, XS_TOKEN_UNSIGNED_RIGHT_SHIFT, "UnsignedRightShift", sizeof(txBinaryExpressionNode), &gxBinaryExpressionNodeDispatch },
1671
+ { XS_CODE_UNSIGNED_RIGHT_SHIFT, XS_TOKEN_UNSIGNED_RIGHT_SHIFT_ASSIGN, "UnsignedRightShiftAssign", sizeof(txAssignNode), &gxCompoundExpressionNodeDispatch },
1672
+ { XS_NO_CODE, XS_TOKEN_VAR, "Var", sizeof(txDeclareNode), &gxDeclareNodeDispatch },
1673
+ { XS_CODE_VOID, XS_TOKEN_VOID, "Void", sizeof(txUnaryExpressionNode), &gxUnaryExpressionNodeDispatch },
1674
+ { XS_NO_CODE, XS_TOKEN_WHILE, "While", sizeof(txWhileNode), &gxWhileNodeDispatch },
1675
+ { XS_NO_CODE, XS_TOKEN_WITH, "With", sizeof(txWithNode), &gxWithNodeDispatch },
1676
+ { XS_NO_CODE, XS_TOKEN_YIELD, "Yield", sizeof(txStatementNode), &gxYieldNodeDispatch },
1677
+ };
1678
+
1679
+ #ifdef mxTreePrint
1680
+
1681
+ void fxTreePrint(txParser* parser, txNode* node)
1682
+ {
1683
+ txPrinter printer;
1684
+ printer.tabs = 0;
1685
+ fxNodePrintTree(node, &printer);
1686
+ fprintf(stderr, "\n");
1687
+ }
1688
+
1689
+ void fxNodePrintTree(void* it, void* param)
1690
+ {
1691
+ txNode* node = it;
1692
+ txPrinter* printer = param;
1693
+ txInteger tabs = printer->tabs;
1694
+ fprintf(stderr, "\n");
1695
+ while (tabs) {
1696
+ fprintf(stderr, "\t");
1697
+ tabs--;
1698
+ }
1699
+ if (node) {
1700
+ switch (node->description->token) {
1701
+ case XS_TOKEN_ACCESS:
1702
+ fxAccessNodePrintNode(it);
1703
+ break;
1704
+ case XS_TOKEN_ARG:
1705
+ case XS_TOKEN_CONST:
1706
+ case XS_TOKEN_DEFINE:
1707
+ case XS_TOKEN_LET:
1708
+ case XS_TOKEN_VAR:
1709
+ fxDeclareDefineNodePrintNode(it);
1710
+ break;
1711
+ case XS_TOKEN_EXPORT:
1712
+ fxExportNodePrintNode(it);
1713
+ break;
1714
+ case XS_TOKEN_IMPORT:
1715
+ fxImportNodePrintNode(it);
1716
+ break;
1717
+ case XS_TOKEN_INTEGER:
1718
+ fxIntegerNodePrintNode(it);
1719
+ break;
1720
+ case XS_TOKEN_FUNCTION:
1721
+ fxFunctionNodePrintNode(it);
1722
+ break;
1723
+ case XS_TOKEN_LABEL:
1724
+ fxLabelNodePrintNode(it);
1725
+ break;
1726
+ case XS_TOKEN_MEMBER:
1727
+ fxMemberNodePrintNode(it);
1728
+ break;
1729
+ case XS_TOKEN_NUMBER:
1730
+ fxNumberNodePrintNode(it);
1731
+ break;
1732
+ case XS_TOKEN_PROPERTY:
1733
+ fxPropertyNodePrintNode(it);
1734
+ break;
1735
+ case XS_TOKEN_PROPERTY_BINDING:
1736
+ fxPropertyBindingNodePrintNode(it);
1737
+ break;
1738
+ case XS_TOKEN_SPECIFIER:
1739
+ fxSpecifierNodePrintNode(it);
1740
+ break;
1741
+ case XS_TOKEN_STRING:
1742
+ fxStringNodePrintNode(it);
1743
+ break;
1744
+ default:
1745
+ fxNodePrintNode(it);
1746
+ break;
1747
+ }
1748
+ if (node->flags) {
1749
+ fprintf(stderr, " [");
1750
+ if (node->flags & mxArgumentsFlag)
1751
+ fprintf(stderr, " arguments");
1752
+ if (node->flags & mxArrowFlag)
1753
+ fprintf(stderr, " arrow");
1754
+ if (node->flags & mxAsyncFlag)
1755
+ fprintf(stderr, " async");
1756
+ if (node->flags & mxAwaitingFlag)
1757
+ fprintf(stderr, " await");
1758
+ if (node->flags & mxBaseFlag)
1759
+ fprintf(stderr, " base");
1760
+ if (node->flags & mxDerivedFlag)
1761
+ fprintf(stderr, " derived");
1762
+ if (node->flags & mxEvalFlag)
1763
+ fprintf(stderr, " eval");
1764
+ if (node->flags & mxFieldFlag)
1765
+ fprintf(stderr, " field");
1766
+ if (node->flags & mxTargetFlag)
1767
+ fprintf(stderr, " function");
1768
+ if (node->flags & mxGeneratorFlag)
1769
+ fprintf(stderr, " generator");
1770
+ if (node->flags & mxGetterFlag)
1771
+ fprintf(stderr, " getter");
1772
+ if (node->flags & mxMethodFlag)
1773
+ fprintf(stderr, " method");
1774
+ if (node->flags & mxSetterFlag)
1775
+ fprintf(stderr, " setter");
1776
+ if (node->flags & mxStaticFlag)
1777
+ fprintf(stderr, " static");
1778
+ if (node->flags & mxStrictFlag)
1779
+ fprintf(stderr, " strict");
1780
+ if (node->flags & mxSuperFlag)
1781
+ fprintf(stderr, " super");
1782
+ fprintf(stderr, " ]");
1783
+ }
1784
+ printer->tabs++;
1785
+ (*node->description->dispatch->distribute)(node, fxNodePrintTree, param);
1786
+ printer->tabs--;
1787
+ }
1788
+ else
1789
+ fprintf(stderr, "NULL");
1790
+ }
1791
+
1792
+
1793
+ void fxNodePrintNode(void* it)
1794
+ {
1795
+ txNode* node = it;
1796
+ fprintf(stderr, "%s", node->description->name);
1797
+ }
1798
+
1799
+ void fxAccessNodePrintNode(void* it)
1800
+ {
1801
+ txAccessNode* node = it;
1802
+ fprintf(stderr, "%s %s", node->description->name, node->symbol->string);
1803
+ }
1804
+
1805
+ void fxDeclareDefineNodePrintNode(void* it)
1806
+ {
1807
+ txDeclareNode* node = it;
1808
+ fprintf(stderr, "%s %s", node->description->name, node->symbol->string);
1809
+ }
1810
+
1811
+ void fxExportNodePrintNode(void* it)
1812
+ {
1813
+ txExportNode* node = it;
1814
+ fprintf(stderr, "%s ", node->description->name);
1815
+ if (node->from)
1816
+ fprintf(stderr, "\"%s\" ", ((txStringNode*)node->from)->value);
1817
+ if (!node->specifiers)
1818
+ fprintf(stderr, "* ");
1819
+ }
1820
+
1821
+ void fxFunctionNodePrintNode(void* it)
1822
+ {
1823
+ txFunctionNode* node = it;
1824
+ fprintf(stderr, "%s", node->description->name);
1825
+ if (node->symbol)
1826
+ fprintf(stderr, " %s", node->symbol->string);
1827
+ }
1828
+
1829
+ void fxImportNodePrintNode(void* it)
1830
+ {
1831
+ txImportNode* node = it;
1832
+ fprintf(stderr, "%s ", node->description->name);
1833
+ if (node->from)
1834
+ fprintf(stderr, "\"%s\" ", ((txStringNode*)node->from)->value);
1835
+ else
1836
+ fprintf(stderr, "\"?\" ");
1837
+ }
1838
+
1839
+ void fxIntegerNodePrintNode(void* it)
1840
+ {
1841
+ txIntegerNode* node = it;
1842
+ fprintf(stderr, "%s %d", node->description->name, node->value);
1843
+ }
1844
+
1845
+ void fxLabelNodePrintNode(void* it)
1846
+ {
1847
+ txLabelNode* node = it;
1848
+ fprintf(stderr, "%s", node->description->name);
1849
+ if (node->symbol)
1850
+ fprintf(stderr, " %s", node->symbol->string);
1851
+ }
1852
+
1853
+ void fxMemberNodePrintNode(void* it)
1854
+ {
1855
+ txMemberNode* node = it;
1856
+ fprintf(stderr, "%s %s", node->description->name, node->symbol->string);
1857
+ }
1858
+
1859
+ void fxNumberNodePrintNode(void* it)
1860
+ {
1861
+ txNumberNode* node = it;
1862
+ fprintf(stderr, "%s %lf", node->description->name, node->value);
1863
+ }
1864
+
1865
+ void fxPropertyNodePrintNode(void* it)
1866
+ {
1867
+ txPropertyNode* node = it;
1868
+ fprintf(stderr, "%s %s", node->description->name, node->symbol->string);
1869
+ }
1870
+
1871
+ void fxPropertyBindingNodePrintNode(void* it)
1872
+ {
1873
+ txPropertyBindingNode* node = it;
1874
+ fprintf(stderr, "%s %s", node->description->name, node->symbol->string);
1875
+ }
1876
+
1877
+ void fxSpecifierNodePrintNode(void* it)
1878
+ {
1879
+ txSpecifierNode* node = it;
1880
+ fprintf(stderr, "%s", node->description->name);
1881
+ if (node->symbol)
1882
+ fprintf(stderr, " %s", node->symbol->string);
1883
+ if (node->asSymbol)
1884
+ fprintf(stderr, " as %s", node->asSymbol->string);
1885
+ }
1886
+
1887
+ void fxStringNodePrintNode(void* it)
1888
+ {
1889
+ txStringNode* node = it;
1890
+ fprintf(stderr, "%s \"%s\"", node->description->name, node->value);
1891
+ }
1892
+
1893
+ #endif