grammar-composer 0.1.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 (57) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +387 -0
  3. package/dist/Exports.d.ts +1 -0
  4. package/dist/Exports.js +2 -0
  5. package/dist/Exports.js.map +1 -0
  6. package/dist/Grammar.d.ts +62 -0
  7. package/dist/Grammar.js +376 -0
  8. package/dist/Grammar.js.map +1 -0
  9. package/dist/GrammarComposer.d.ts +61 -0
  10. package/dist/GrammarComposer.js +383 -0
  11. package/dist/GrammarComposer.js.map +1 -0
  12. package/dist/Grammars/JsonGrammar.d.ts +16 -0
  13. package/dist/Grammars/JsonGrammar.js +74 -0
  14. package/dist/Grammars/JsonGrammar.js.map +1 -0
  15. package/dist/Grammars/XmlGrammar.d.ts +13 -0
  16. package/dist/Grammars/XmlGrammar.js +74 -0
  17. package/dist/Grammars/XmlGrammar.js.map +1 -0
  18. package/dist/ParserTest.d.ts +1 -0
  19. package/dist/ParserTest.js +37 -0
  20. package/dist/ParserTest.js.map +1 -0
  21. package/dist/Test.d.ts +1 -0
  22. package/dist/Test.js +74 -0
  23. package/dist/Test.js.map +1 -0
  24. package/dist/TestData.d.ts +5 -0
  25. package/dist/TestData.js +466 -0
  26. package/dist/TestData.js.map +1 -0
  27. package/dist/TopDownParser.d.ts +13 -0
  28. package/dist/TopDownParser.js +229 -0
  29. package/dist/TopDownParser.js.map +1 -0
  30. package/dist/data/TestData.d.ts +5 -0
  31. package/dist/data/TestData.js +466 -0
  32. package/dist/data/TestData.js.map +1 -0
  33. package/dist/test-data/TestData.d.ts +5 -0
  34. package/dist/test-data/TestData.js +466 -0
  35. package/dist/test-data/TestData.js.map +1 -0
  36. package/dist/test-grammars/JsonGrammar.d.ts +17 -0
  37. package/dist/test-grammars/JsonGrammar.js +74 -0
  38. package/dist/test-grammars/JsonGrammar.js.map +1 -0
  39. package/dist/test-grammars/XmlGrammar.d.ts +14 -0
  40. package/dist/test-grammars/XmlGrammar.js +74 -0
  41. package/dist/test-grammars/XmlGrammar.js.map +1 -0
  42. package/dist/utilities/Timer.d.ts +13 -0
  43. package/dist/utilities/Timer.js +70 -0
  44. package/dist/utilities/Timer.js.map +1 -0
  45. package/dist/utilities/utilities.d.ts +8 -0
  46. package/dist/utilities/utilities.js +26 -0
  47. package/dist/utilities/utilities.js.map +1 -0
  48. package/package.json +40 -0
  49. package/src/GrammarComposer.ts +541 -0
  50. package/src/Test.ts +101 -0
  51. package/src/TopDownParser.ts +304 -0
  52. package/src/test-data/TestData.ts +470 -0
  53. package/src/test-grammars/JsonGrammar.ts +118 -0
  54. package/src/test-grammars/XmlGrammar.ts +141 -0
  55. package/src/utilities/Timer.ts +95 -0
  56. package/src/utilities/Utilities.ts +33 -0
  57. package/tsconfig.json +105 -0
@@ -0,0 +1,466 @@
1
+ export const jsonSample1 = JSON.stringify([
2
+ {
3
+ "yo": 23,
4
+ "man": "hey"
5
+ }
6
+ ], undefined, 4);
7
+ export const jsonSample2 = JSON.stringify({
8
+ "web-app": {
9
+ "servlet": [
10
+ {
11
+ "servlet-name": "cofaxCDS",
12
+ "servlet-class": "org.cofax.cds.CDSServlet",
13
+ "init-param": {
14
+ "configGlossary:installationAt": "Philadelphia, PA",
15
+ "configGlossary:adminEmail": "ksm@pobox.com",
16
+ "configGlossary:poweredBy": "Cofax",
17
+ "configGlossary:poweredByIcon": "/images/cofax.gif",
18
+ "configGlossary:staticPath": "/content/static",
19
+ "templateProcessorClass": "org.cofax.WysiwygTemplate",
20
+ "templateLoaderClass": "org.cofax.FilesTemplateLoader",
21
+ "templatePath": "templates",
22
+ "templateOverridePath": "",
23
+ "defaultListTemplate": "listTemplate.htm",
24
+ "defaultFileTemplate": "articleTemplate.htm",
25
+ "useJSP": false,
26
+ "jspListTemplate": "listTemplate.jsp",
27
+ "jspFileTemplate": "articleTemplate.jsp",
28
+ "cachePackageTagsTrack": 200,
29
+ "cachePackageTagsStore": 200,
30
+ "cachePackageTagsRefresh": 60,
31
+ "cacheTemplatesTrack": 100,
32
+ "cacheTemplatesStore": 50,
33
+ "cacheTemplatesRefresh": 15,
34
+ "cachePagesTrack": 200,
35
+ "cachePagesStore": 100,
36
+ "cachePagesRefresh": 10,
37
+ "cachePagesDirtyRead": 10,
38
+ "searchEngineListTemplate": "forSearchEnginesList.htm",
39
+ "searchEngineFileTemplate": "forSearchEngines.htm",
40
+ "searchEngineRobotsDb": "WEB-INF/robots.db",
41
+ "useDataStore": true,
42
+ "dataStoreClass": "org.cofax.SqlDataStore",
43
+ "redirectionClass": "org.cofax.SqlRedirection",
44
+ "dataStoreName": "cofax",
45
+ "dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",
46
+ "dataStoreUrl": "jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",
47
+ "dataStoreUser": "sa",
48
+ "dataStorePassword": "dataStoreTestQuery",
49
+ "dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",
50
+ "dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",
51
+ "dataStoreInitConns": 10,
52
+ "dataStoreMaxConns": 100,
53
+ "dataStoreConnUsageLimit": 100,
54
+ "dataStoreLogLevel": "debug",
55
+ "maxUrlLength": 500
56
+ }
57
+ },
58
+ {
59
+ "servlet-name": "cofaxEmail",
60
+ "servlet-class": "org.cofax.cds.EmailServlet",
61
+ "init-param": {
62
+ "mailHost": "mail1",
63
+ "mailHostOverride": "mail2"
64
+ }
65
+ },
66
+ {
67
+ "servlet-name": "cofaxAdmin",
68
+ "servlet-class": "org.cofax.cds.AdminServlet"
69
+ },
70
+ {
71
+ "servlet-name": "fileServlet",
72
+ "servlet-class": "org.cofax.cds.FileServlet"
73
+ },
74
+ {
75
+ "servlet-name": "cofaxTools",
76
+ "servlet-class": "org.cofax.cms.CofaxToolsServlet",
77
+ "init-param": {
78
+ "templatePath": "toolstemplates/",
79
+ "log": 1,
80
+ "logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
81
+ "logMaxSize": "",
82
+ "dataLog": 1,
83
+ "dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",
84
+ "dataLogMaxSize": "",
85
+ "removePageCache": "/content/admin/remove?cache=pages&id=",
86
+ "removeTemplateCache": "/content/admin/remove?cache=templates&id=",
87
+ "fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",
88
+ "lookInContext": 1,
89
+ "adminGroupID": 4,
90
+ "betaServer": true
91
+ }
92
+ }
93
+ ],
94
+ "servlet-mapping": {
95
+ "cofaxCDS": "/",
96
+ "cofaxEmail": "/cofaxutil/aemail/*",
97
+ "cofaxAdmin": "/admin/*",
98
+ "fileServlet": "/static/*",
99
+ "cofaxTools": "/tools/*"
100
+ },
101
+ "taglib": {
102
+ "taglib-uri": "cofax.tld",
103
+ "taglib-location": "/WEB-INF/tlds/cofax.tld"
104
+ }
105
+ }
106
+ }, undefined, 4);
107
+ export const xmlSample1 = `
108
+
109
+ <menu>
110
+ <popup>
111
+ <test value='New'>
112
+ <!--<menuitem value="New" onclick="CreateNewDoc()" />-->
113
+ <menuitem value="Open" onclick="OpenDoc()" />
114
+ <menuitem value="Close" onclick="CloseDoc()" />
115
+ </popup>
116
+ </menu>`;
117
+ export const xmlSample2 = `
118
+ <!DOCTYPE web-app
119
+ PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
120
+ "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
121
+
122
+ <menu>
123
+ <header>Adobe SVG Viewer</header>
124
+ <item action="Open" id="Open">Open</item>
125
+ <item action="OpenNew" id="OpenNew">Open New</item>
126
+ <separator/>
127
+ <item action="ZoomIn" id="ZoomIn">Zoom In</item>
128
+ <item action="ZoomOut" id="ZoomOut">Zoom Out</item>
129
+ <item action="OriginalView" id="OriginalView">Original View</item>
130
+ <separator/>
131
+ <item action="Quality" id="Quality">Quality</item>
132
+ <item action="Pause" id="Pause">Pause</item>
133
+ <item action="Mute" id="Mute">Mute</item>
134
+ <separator/>
135
+ <item action="Find" id="Find">Find...</item>
136
+ <item action="FindAgain" id="FindAgain">Find Again</item>
137
+ <item action="Copy" id="Copy">Copy</item>
138
+ <item action="CopyAgain" id="CopyAgain">Copy Again</item>
139
+ <item action="CopySVG" id="CopySVG">Copy SVG</item>
140
+ <item action="ViewSVG" id="ViewSVG">View SVG</item>
141
+ <item action="ViewSource" id="ViewSource">View Source</item>
142
+ <item action="SaveAs" id="SaveAs">Save As</item>
143
+ <separator/>
144
+ <item action="Help" id="Help">Help</item>
145
+ <item action="About" id="About">About Adobe CVG Viewer...</item>
146
+ </menu>`;
147
+ export const xmlSample3 = `
148
+ <!DOCTYPE web-app
149
+ PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
150
+ "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
151
+ <web-app>
152
+ <servlet>
153
+ <servlet-name>
154
+ cofaxCDS
155
+ </servlet-name>
156
+ <servlet-class>
157
+ org.cofax.cds.CDSServlet
158
+ </servlet-class>
159
+ <init-param>
160
+ <param-name>configGlossary:installationAt</param-name>
161
+ <param-value>Philadelphia, PA</param-value>
162
+ </init-param>
163
+ <init-param>
164
+ <param-name>configGlossary:adminEmail</param-name>
165
+ <param-value>ksm@pobox.com</param-value>
166
+ </init-param>
167
+ <init-param>
168
+ <param-name>configGlossary:poweredBy</param-name>
169
+ <param-value>Cofax</param-value>
170
+ </init-param>
171
+ <init-param>
172
+ <param-name>configGlossary:poweredByIcon</param-name>
173
+ <param-value>/images/cofax.gif</param-value>
174
+ </init-param>
175
+ <init-param>
176
+ <param-name>configGlossary:staticPath</param-name>
177
+ <param-value>/content/static</param-value>
178
+ </init-param>
179
+ <init-param>
180
+ <param-name>templateProcessorClass</param-name>
181
+ <param-value>org.cofax.WysiwygTemplate</param-value>
182
+ </init-param>
183
+ <init-param>
184
+ <param-name>templateLoaderClass</param-name>
185
+ <param-value>org.cofax.FilesTemplateLoader</param-value>
186
+ </init-param>
187
+ <init-param>
188
+ <param-name>templatePath</param-name>
189
+ <param-value>templates</param-value>
190
+ </init-param>
191
+ <init-param>
192
+ <param-name>templateOverridePath</param-name>
193
+ <param-value></param-value>
194
+ </init-param>
195
+ <init-param>
196
+ <param-name>defaultListTemplate</param-name>
197
+ <param-value>listTemplate.htm</param-value>
198
+ </init-param>
199
+ <init-param>
200
+ <param-name>defaultFileTemplate</param-name>
201
+ <param-value>articleTemplate.htm</param-value>
202
+ </init-param>
203
+ <init-param>
204
+ <param-name>useJSP</param-name>
205
+ <param-value>false</param-value>
206
+ </init-param>
207
+ <init-param>
208
+ <param-name>jspListTemplate</param-name>
209
+ <param-value>listTemplate.jsp</param-value>
210
+ </init-param>
211
+ <init-param>
212
+ <param-name>jspFileTemplate</param-name>
213
+ <param-value>articleTemplate.jsp</param-value>
214
+ </init-param>
215
+ <init-param>
216
+ <param-name>cachePackageTagsTrack</param-name>
217
+ <param-value>200</param-value>
218
+ </init-param>
219
+ <init-param>
220
+ <param-name>cachePackageTagsStore</param-name>
221
+ <param-value>200</param-value>
222
+ </init-param>
223
+ <init-param>
224
+ <param-name>cachePackageTagsRefresh</param-name>
225
+ <param-value>60</param-value>
226
+ </init-param>
227
+ <init-param>
228
+ <param-name>cacheTemplatesTrack</param-name>
229
+ <param-value>100</param-value>
230
+ </init-param>
231
+ <init-param>
232
+ <param-name>cacheTemplatesStore</param-name>
233
+ <param-value>50</param-value>
234
+ </init-param>
235
+ <init-param>
236
+ <param-name>cacheTemplatesRefresh</param-name>
237
+ <param-value>15</param-value>
238
+ </init-param>
239
+ <init-param>
240
+ <param-name>cachePagesTrack</param-name>
241
+ <param-value>200</param-value>
242
+ </init-param>
243
+ <init-param>
244
+ <param-name>cachePagesStore</param-name>
245
+ <param-value>100</param-value>
246
+ </init-param>
247
+ <init-param>
248
+ <param-name>cachePagesRefresh</param-name>
249
+ <param-value>10</param-value>
250
+ </init-param>
251
+ <init-param>
252
+ <param-name>cachePagesDirtyRead</param-name>
253
+ <param-value>10</param-value>
254
+ </init-param>
255
+ <init-param>
256
+ <param-name>searchEngineListTemplate</param-name>
257
+ <param-value>forSearchEnginesList.htm</param-value>
258
+ </init-param>
259
+ <init-param>
260
+ <param-name>searchEngineFileTemplate</param-name>
261
+ <param-value>forSearchEngines.htm</param-value>
262
+ </init-param>
263
+ <init-param>
264
+ <param-name>searchEngineRobotsDb</param-name>
265
+ <param-value>WEB-INF/robots.db</param-value>
266
+ </init-param>
267
+ <init-param>
268
+ <param-name>useDataStore</param-name>
269
+ <param-value>true</param-value>
270
+ </init-param>
271
+ <init-param>
272
+ <param-name>dataStoreClass</param-name>
273
+ <param-value>org.cofax.SqlDataStore</param-value>
274
+ </init-param>
275
+ <init-param>
276
+ <param-name>redirectionClass</param-name>
277
+ <param-value>org.cofax.SqlRedirection</param-value>
278
+ </init-param>
279
+ <init-param>
280
+ <param-name>dataStoreName</param-name>
281
+ <param-value>cofax</param-value>
282
+ </init-param>
283
+ <init-param>
284
+ <param-name>dataStoreDriver</param-name>
285
+ <param-value>com.microsoft.jdbc.sqlserver.SQLServerDriver</param-value>
286
+ </init-param>
287
+ <init-param>
288
+ <param-name>dataStoreUrl</param-name>
289
+ <param-value>jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon</param-value>
290
+ </init-param>
291
+ <init-param>
292
+ <param-name>dataStoreUser</param-name>
293
+ <param-value>sa</param-value>
294
+ </init-param>
295
+ <init-param>
296
+ <param-name>dataStorePassword</param-name>
297
+ <param-value></param-value>
298
+ </init-param>
299
+ <init-param>
300
+ <param-name>dataStoreTestQuery</param-name>
301
+ <param-value>SET NOCOUNT ON;select test='test';</param-value>
302
+ </init-param>
303
+ <init-param>
304
+ <param-name>dataStoreLogFile</param-name>
305
+ <param-value>/usr/local/tomcat/logs/datastore.log</param-value>
306
+ </init-param>
307
+ <init-param>
308
+ <param-name>dataStoreInitConns</param-name>
309
+ <param-value>10</param-value>
310
+ </init-param>
311
+ <init-param>
312
+ <param-name>dataStoreMaxConns</param-name>
313
+ <param-value>100</param-value>
314
+ </init-param>
315
+ <init-param>
316
+ <param-name>dataStoreConnUsageLimit</param-name>
317
+ <param-value>100</param-value>
318
+ </init-param>
319
+ <init-param>
320
+ <param-name>dataStoreLogLevel</param-name>
321
+ <param-value>debug</param-value>
322
+ </init-param>
323
+ <init-param>
324
+ <param-name>maxUrlLength</param-name>
325
+ <param-value>500</param-value>
326
+ </init-param>
327
+ </servlet>
328
+ <servlet>
329
+ <servlet-name>
330
+ cofaxEmail
331
+ </servlet-name>
332
+ <servlet-class>
333
+ org.cofax.cds.EmailServlet
334
+ </servlet-class>
335
+ <init-param>
336
+ <param-name>mailHost</param-name>
337
+ <param-value>mail1</param-value>
338
+ </init-param>
339
+ <init-param>
340
+ <param-name>mailHostOverride</param-name>
341
+ <param-value>mail2</param-value>
342
+ </init-param>
343
+ </servlet>
344
+ <servlet>
345
+ <servlet-name>
346
+ cofaxAdmin
347
+ </servlet-name>
348
+ <servlet-class>
349
+ org.cofax.cds.AdminServlet
350
+ </servlet-class>
351
+ </servlet>
352
+ <servlet>
353
+ <servlet-name>
354
+ fileServlet
355
+ </servlet-name>
356
+ <servlet-class>
357
+ org.cofax.cds.FileServlet
358
+ </servlet-class>
359
+ </servlet>
360
+ <servlet>
361
+ <servlet-name>
362
+ cofaxTools
363
+ </servlet-name>
364
+ <servlet-class>
365
+ org.cofax.cms.CofaxToolsServlet
366
+ </servlet-class>
367
+ <init-param>
368
+ <param-name>templatePath</param-name>
369
+ <param-value>toolstemplates/</param-value>
370
+ </init-param>
371
+ <init-param>
372
+ <param-name>log</param-name>
373
+ <param-value>1</param-value>
374
+ </init-param>
375
+ <init-param>
376
+ <param-name>logLocation</param-name>
377
+ <param-value>/usr/local/tomcat/logs/CofaxTools.log</param-value>
378
+ </init-param>
379
+ <init-param>
380
+ <param-name>logMaxSize</param-name>
381
+ <param-value></param-value>
382
+ </init-param>
383
+ <init-param>
384
+ <param-name>dataLog</param-name>
385
+ <param-value>1</param-value>
386
+ </init-param>
387
+ <init-param>
388
+ <param-name>dataLogLocation</param-name>
389
+ <param-value>/usr/local/tomcat/logs/dataLog.log</param-value>
390
+ </init-param>
391
+ <init-param>
392
+ <param-name>dataLogMaxSize</param-name>
393
+ <param-value></param-value>
394
+ </init-param>
395
+ <init-param>
396
+ <param-name>removePageCache</param-name>
397
+ <param-value>/content/admin/remove?cache=pages&id=</param-value>
398
+ </init-param>
399
+ <init-param>
400
+ <param-name>removeTemplateCache</param-name>
401
+ <param-value>/content/admin/remove?cache=templates&id=</param-value>
402
+ </init-param>
403
+ <init-param>
404
+ <param-name>fileTransferFolder</param-name>
405
+ <param-value>/usr/local/tomcat/webapps/content/fileTransferFolder</param-value>
406
+ </init-param>
407
+ <init-param>
408
+ <param-name>lookInContext</param-name>
409
+ <param-value>1</param-value>
410
+ </init-param>
411
+ <init-param>
412
+ <param-name>adminGroupID</param-name>
413
+ <param-value>4</param-value>
414
+ </init-param>
415
+ <init-param>
416
+ <param-name>betaServer</param-name>
417
+ <param-value>true</param-value>
418
+ </init-param>
419
+ </servlet>
420
+ <servlet-mapping>
421
+ <servlet-name>
422
+ cofaxCDS
423
+ </servlet-name>
424
+ <url-pattern>
425
+ /
426
+ </url-pattern>
427
+ </servlet-mapping>
428
+ <servlet-mapping>
429
+ <servlet-name>
430
+ cofaxEmail
431
+ </servlet-name>
432
+ <url-pattern>
433
+ /cofaxutil/aemail/*
434
+ </url-pattern>
435
+ </servlet-mapping>
436
+ <servlet-mapping>
437
+ <servlet-name>
438
+ cofaxAdmin
439
+ </servlet-name>
440
+ <url-pattern>
441
+ /admin/*
442
+ </url-pattern>
443
+ </servlet-mapping>
444
+ <servlet-mapping>
445
+ <servlet-name>
446
+ fileServlet
447
+ </servlet-name>
448
+ <url-pattern>
449
+ /static/*
450
+ </url-pattern>
451
+ </servlet-mapping>
452
+ <servlet-mapping>
453
+ <servlet-name>
454
+ cofaxTools
455
+ </servlet-name>
456
+ <url-pattern>
457
+ /tools/*
458
+ </url-pattern>
459
+ </servlet-mapping>
460
+ <taglib>
461
+ <taglib-uri>cofax.tld</taglib-uri>
462
+ <taglib-location>/WEB-INF/tlds/cofax.tld</taglib-location>
463
+ </taglib>
464
+ </web-app>
465
+ `;
466
+ //# sourceMappingURL=TestData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestData.js","sourceRoot":"","sources":["../../src/test-data/TestData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import * as G from "../GrammarComposer.js";
2
+ export declare class JsonGrammar {
3
+ expression: () => G.Choice;
4
+ objectExpression: () => G.Production[];
5
+ objectPropertyExpression: () => (G.PatternTerminal | (() => G.Choice))[];
6
+ arrayExpression: () => G.Production[];
7
+ openingCurlyBrace: G.PatternTerminal;
8
+ closingCurlyBrace: G.PatternTerminal;
9
+ openingSquareBracket: G.PatternTerminal;
10
+ closingSquareBracket: G.PatternTerminal;
11
+ comma: G.PatternTerminal;
12
+ colons: G.PatternTerminal;
13
+ stringLiteral: G.PatternTerminal;
14
+ numberLiteral: G.PatternTerminal;
15
+ booleanLiteral: G.PatternTerminal;
16
+ nullLiteral: G.PatternTerminal;
17
+ }
@@ -0,0 +1,74 @@
1
+ import * as G from "../GrammarComposer.js";
2
+ import * as R from 'regexp-composer';
3
+ export class JsonGrammar {
4
+ expression = () => G.anyOf(this.stringLiteral, this.numberLiteral, this.booleanLiteral, this.nullLiteral, this.objectExpression, this.arrayExpression);
5
+ objectExpression = () => [
6
+ this.openingCurlyBrace,
7
+ G.possibly([
8
+ this.objectPropertyExpression,
9
+ G.zeroOrMore([this.comma, this.objectPropertyExpression])
10
+ ]),
11
+ this.closingCurlyBrace,
12
+ ];
13
+ objectPropertyExpression = () => [
14
+ this.stringLiteral,
15
+ this.colons,
16
+ this.expression,
17
+ ];
18
+ arrayExpression = () => [
19
+ this.openingSquareBracket,
20
+ G.possibly([
21
+ this.expression,
22
+ G.zeroOrMore([this.comma, this.expression])
23
+ ]),
24
+ this.closingSquareBracket
25
+ ];
26
+ openingCurlyBrace = createPatternWithClearedWhitespace('{');
27
+ closingCurlyBrace = createPatternWithClearedWhitespace('}');
28
+ openingSquareBracket = createPatternWithClearedWhitespace('[');
29
+ closingSquareBracket = createPatternWithClearedWhitespace(']');
30
+ comma = createPatternWithClearedWhitespace(',');
31
+ colons = createPatternWithClearedWhitespace(':');
32
+ stringLiteral = G.pattern([
33
+ zeroOrMoreWhitespace,
34
+ '"',
35
+ R.matches(R.captureAs('value', R.zeroOrMoreNonGreedy(R.anyChar)), {
36
+ ifNotPrecededBy: '\\'
37
+ }),
38
+ '"',
39
+ zeroOrMoreWhitespace,
40
+ ]);
41
+ numberLiteral = G.pattern([
42
+ zeroOrMoreWhitespace,
43
+ R.captureAs('value', [
44
+ R.possibly('-'), // Sign
45
+ R.anyOf('0', // Zero only
46
+ [
47
+ R.charRange('1', '9'), // First digit
48
+ R.zeroOrMore(R.digit), // Next digits
49
+ ]),
50
+ R.possibly(['.', R.oneOrMore(R.digit)]), // Decimal value
51
+ R.possibly([R.anyOf('e', 'E'), R.anyOf('+', '-'), R.oneOrMore(R.digit)]), // Exponent
52
+ ]),
53
+ zeroOrMoreWhitespace,
54
+ ]);
55
+ booleanLiteral = G.pattern([
56
+ zeroOrMoreWhitespace,
57
+ R.captureAs('value', R.anyOf('true', 'false')),
58
+ zeroOrMoreWhitespace,
59
+ ]);
60
+ nullLiteral = G.pattern([
61
+ zeroOrMoreWhitespace,
62
+ 'null',
63
+ zeroOrMoreWhitespace,
64
+ ]);
65
+ }
66
+ function createPatternWithClearedWhitespace(str) {
67
+ return G.pattern([
68
+ zeroOrMoreWhitespace,
69
+ str,
70
+ zeroOrMoreWhitespace
71
+ ]);
72
+ }
73
+ const zeroOrMoreWhitespace = R.zeroOrMore(R.whitespace);
74
+ //# sourceMappingURL=JsonGrammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonGrammar.js","sourceRoot":"","sources":["../../src/test-grammars/JsonGrammar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import * as G from "../GrammarComposer.js";
2
+ export declare class XmlGrammar {
3
+ document: () => G.Repetition[];
4
+ textFragment: G.PatternTerminal;
5
+ openingTag: () => (G.PatternTerminal | G.Repetition)[];
6
+ openingTagStart: G.PatternTerminal;
7
+ tagEnd: G.PatternTerminal;
8
+ attribute: G.PatternTerminal;
9
+ closingTag: G.PatternTerminal;
10
+ declarationTag: () => (G.PatternTerminal | G.Repetition)[];
11
+ declarationTagOpening: G.PatternTerminal;
12
+ declarationTagAttribute: G.PatternTerminal;
13
+ comment: G.PatternTerminal;
14
+ }
@@ -0,0 +1,74 @@
1
+ import * as G from "../GrammarComposer.js";
2
+ import * as R from 'regexp-composer';
3
+ export class XmlGrammar {
4
+ document = () => [
5
+ G.zeroOrMore(G.anyOf(this.textFragment, this.openingTag, this.closingTag, this.comment, this.declarationTag))
6
+ ];
7
+ textFragment = G.pattern([
8
+ R.oneOrMore(R.notAnyOfChars('<'))
9
+ ]);
10
+ openingTag = () => [
11
+ this.openingTagStart,
12
+ G.zeroOrMore(this.attribute),
13
+ this.tagEnd
14
+ ];
15
+ openingTagStart = G.pattern([
16
+ '<',
17
+ R.possibly('?'),
18
+ R.captureAs('tagName', R.oneOrMore(R.notAnyOfChars(R.whitespace, '"', "'", '?', '!', '/', '>'))),
19
+ R.zeroOrMore(R.whitespace),
20
+ ]);
21
+ tagEnd = G.pattern([
22
+ R.zeroOrMore(R.whitespace),
23
+ R.possibly(R.anyOf('/', '?')),
24
+ '>'
25
+ ]);
26
+ attribute = G.pattern([
27
+ R.zeroOrMore(R.whitespace),
28
+ R.captureAs('attributeName', R.oneOrMore(R.notAnyOfChars(R.whitespace, '=', '"', "'", '?', '/', '>'))),
29
+ R.zeroOrMore(R.whitespace),
30
+ R.possibly([
31
+ '=',
32
+ R.zeroOrMore(R.whitespace),
33
+ quotedString,
34
+ R.zeroOrMore(R.whitespace),
35
+ ])
36
+ ]);
37
+ closingTag = G.pattern([
38
+ '</',
39
+ R.zeroOrMore(R.whitespace),
40
+ R.captureAs('tagName', R.oneOrMore(R.notAnyOfChars(R.whitespace, '/', '>'))),
41
+ R.zeroOrMore(R.whitespace),
42
+ '>'
43
+ ]);
44
+ declarationTag = () => [
45
+ this.declarationTagOpening,
46
+ G.zeroOrMore(this.declarationTagAttribute),
47
+ this.tagEnd
48
+ ];
49
+ declarationTagOpening = G.pattern([
50
+ '<!',
51
+ R.captureAs('tagName', R.oneOrMore(R.notAnyOfChars(R.whitespace, '"', "'", '/', '>'))),
52
+ R.zeroOrMore(R.whitespace)
53
+ ]);
54
+ declarationTagAttribute = G.pattern([
55
+ R.zeroOrMore(R.whitespace),
56
+ R.anyOf(R.captureAs('attributeName', R.oneOrMore(R.notAnyOfChars(R.whitespace, '"', "'", '/', '!', '?', '>'))), quotedString),
57
+ R.zeroOrMore(R.whitespace),
58
+ ]);
59
+ comment = G.pattern([
60
+ '<!--',
61
+ R.captureAs('commentBody', R.zeroOrMoreNonGreedy(R.anyChar)),
62
+ '-->'
63
+ ]);
64
+ }
65
+ const quotedString = R.anyOf([
66
+ '"',
67
+ R.captureAs('doubleQuotedStringContent', R.zeroOrMore(R.notAnyOfChars('"'))),
68
+ '"'
69
+ ], [
70
+ "'",
71
+ R.captureAs('singleQuotedStringContent', R.zeroOrMore(R.notAnyOfChars("'"))),
72
+ "'"
73
+ ]);
74
+ //# sourceMappingURL=XmlGrammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XmlGrammar.js","sourceRoot":"","sources":["../../src/test-grammars/XmlGrammar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,uBAAuB,CAAA;AAC1C,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAA;AAEpC,MAAM,OAAO,UAAU;IACtB,QAAQ,GAAG,GAAG,EAAE,CAAC;QAChB,CAAC,CAAC,UAAU,CACX,CAAC,CAAC,KAAK,CACN,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,cAAc,CACnB,CACD;KACD,CAAA;IAED,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC;QACxB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;KACjC,CAAC,CAAA;IAEF,UAAU,GAAG,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,eAAe;QAEpB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QAE5B,IAAI,CAAC,MAAM;KACX,CAAA;IAED,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC;QAC3B,GAAG;QAEH,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAEf,CAAC,CAAC,SAAS,CAAC,SAAS,EACpB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CACxE;QAED,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;KAC1B,CAAC,CAAA;IAEF,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;QAClB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1B,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAE7B,GAAG;KACH,CAAC,CAAA;IAEF,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC;QACrB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1B,CAAC,CAAC,SAAS,CAAC,eAAe,EAC1B,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CACxE;QAED,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1B,CAAC,CAAC,QAAQ,CAAC;YACV,GAAG;YAEH,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;YAE1B,YAAY;YAEZ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;SAC1B,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;QACtB,IAAI;QAEJ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1B,CAAC,CAAC,SAAS,CAAC,SAAS,EACpB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CACpD;QAED,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1B,GAAG;KACH,CAAC,CAAA;IAEF,cAAc,GAAG,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,qBAAqB;QAE1B,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC;QAE1C,IAAI,CAAC,MAAM;KACX,CAAA;IAED,qBAAqB,GAAG,CAAC,CAAC,OAAO,CAAC;QACjC,IAAI;QAEJ,CAAC,CAAC,SAAS,CAAC,SAAS,EACpB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAC9D;QAED,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;KAC1B,CAAC,CAAA;IAEF,uBAAuB,GAAG,CAAC,CAAC,OAAO,CAAC;QACnC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1B,CAAC,CAAC,KAAK,CACN,CAAC,CAAC,SAAS,CAAC,eAAe,EAC1B,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CACxE,EAED,YAAY,CACZ;QAED,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;KAC1B,CAAC,CAAA;IAEF,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QACnB,MAAM;QAEN,CAAC,CAAC,SAAS,CAAC,aAAa,EACxB,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAChC;QAED,KAAK;KACL,CAAC,CAAA;CACF;AAED,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAC3B;IACC,GAAG;IACH,CAAC,CAAC,SAAS,CAAC,2BAA2B,EACtC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAClC;IACD,GAAG;CACH,EACD;IACC,GAAG;IACH,CAAC,CAAC,SAAS,CAAC,2BAA2B,EACtC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAClC;IACD,GAAG;CACH,CACD,CAAA"}