1;; automatically generated from "json.scm.in"
2;; see copyright notice in COPYING file
3
4(define expanded:json-parser
5  ((lambda ()
6     (let ((any.1539 'undefined)
7           (comment.1540 'undefined)
8           (comment-body.1541 'undefined)
9           (table-entries.1542 'undefined)
10           (table-entries-nonempty.1543 'undefined)
11           (table-entry.1544 'undefined)
12           (array-entries.1545 'undefined)
13           (array-entries-nonempty.1546 'undefined)
14           (jstring.1547 'undefined)
15           (jnumber.1548 'undefined)
16           (number->utf-8.1549 'undefined)
17           (decode-unicode-string.1550 'undefined)
18           (white.1551 'undefined)
19           (skip-comment-char.1552 'undefined)
20           (skip-to-newline.1553 'undefined)
21           (token.1554 'undefined)
22           (interpret-string-escape.1555 'undefined)
23           (jstring-body.1556 'undefined)
24           (jnumber-body.1557 'undefined))
25       (begin
26         (set! any.1539
27           (lambda (results.1558)
28             (results->result
29               results.1558
30               'any
31               (lambda ()
32                 ((packrat-or
33                    (packrat-check
34                      white.1551
35                      (lambda (dummy.1559)
36                        (packrat-check-base
37                          '#\{
38                          (lambda (dummy.1560)
39                            (packrat-check
40                              table-entries.1542
41                              (lambda (entries.1561)
42                                (packrat-check
43                                  white.1551
44                                  (lambda (dummy.1562)
45                                    (packrat-check-base
46                                      '#\}
47                                      (lambda (dummy.1563)
48                                        (lambda (results.1564)
49                                          (make-result
50                                            (list->vector entries.1561)
51                                            results.1564))))))))))))
52                    (packrat-or
53                      (packrat-check
54                        white.1551
55                        (lambda (dummy.1565)
56                          (packrat-check-base
57                            '#\[
58                            (lambda (dummy.1566)
59                              (packrat-check
60                                array-entries.1545
61                                (lambda (entries.1567)
62                                  (packrat-check
63                                    white.1551
64                                    (lambda (dummy.1568)
65                                      (packrat-check-base
66                                        '#\]
67                                        (lambda (dummy.1569)
68                                          (lambda (results.1570)
69                                            (make-result entries.1567 results.1570))))))))))))
70                      (packrat-or
71                        (packrat-check
72                          jstring.1547
73                          (lambda (s.1571)
74                            (lambda (results.1572)
75                              (make-result s.1571 results.1572))))
76                        (packrat-or
77                          (packrat-check
78                            jnumber.1548
79                            (lambda (n.1573)
80                              (lambda (results.1574)
81                                (make-result n.1573 results.1574))))
82                          (packrat-or
83                            (packrat-check
84                              white.1551
85                              (lambda (dummy.1575)
86                                (packrat-check
87                                  (token.1554 '"true")
88                                  (lambda (dummy.1576)
89                                    (lambda (results.1577)
90                                      (make-result '#t results.1577))))))
91                            (packrat-or
92                              (packrat-check
93                                white.1551
94                                (lambda (dummy.1578)
95                                  (packrat-check
96                                    (token.1554 '"false")
97                                    (lambda (dummy.1579)
98                                      (lambda (results.1580)
99                                        (make-result '#f results.1580))))))
100                              (packrat-check
101                                white.1551
102                                (lambda (dummy.1581)
103                                  (packrat-check
104                                    (token.1554 '"null")
105                                    (lambda (dummy.1582)
106                                      (lambda (results.1583)
107                                        (make-result (void) results.1583))))))))))))
108                  results.1558)))))
109         (set! comment.1540
110           (lambda (results.1584)
111             (results->result
112               results.1584
113               'comment
114               (lambda ()
115                 ((packrat-or
116                    (packrat-check
117                      (token.1554 '"/*")
118                      (lambda (dummy.1585)
119                        (packrat-check
120                          comment-body.1541
121                          (lambda (b.1586)
122                            (lambda (results.1587)
123                              (make-result b.1586 results.1587))))))
124                    (packrat-or
125                      (packrat-check
126                        (token.1554 '"//")
127                        (lambda (dummy.1588)
128                          (packrat-check
129                            skip-to-newline.1553
130                            (lambda (b.1589)
131                              (lambda (results.1590)
132                                (make-result b.1589 results.1590))))))
133                      (lambda (results.1591)
134                        (make-result 'whitespace results.1591))))
135                  results.1584)))))
136         (set! comment-body.1541
137           (lambda (results.1592)
138             (results->result
139               results.1592
140               'comment-body
141               (lambda ()
142                 ((packrat-or
143                    (packrat-check
144                      (token.1554 '"*/")
145                      (lambda (dummy.1593)
146                        (packrat-check
147                          white.1551
148                          (lambda (w.1594)
149                            (lambda (results.1595)
150                              (make-result w.1594 results.1595))))))
151                    (packrat-check
152                      skip-comment-char.1552
153                      (lambda (dummy.1596)
154                        (lambda (results.1597)
155                          (make-result 'skipped-comment-char results.1597)))))
156                  results.1592)))))
157         (set! table-entries.1542
158           (lambda (results.1598)
159             (results->result
160               results.1598
161               'table-entries
162               (lambda ()
163                 ((packrat-or
164                    (packrat-check
165                      table-entries-nonempty.1543
166                      (lambda (a.1599)
167                        (lambda (results.1600)
168                          (make-result a.1599 results.1600))))
169                    (lambda (results.1601) (make-result '() results.1601)))
170                  results.1598)))))
171         (set! table-entries-nonempty.1543
172           (lambda (results.1602)
173             (results->result
174               results.1602
175               'table-entries-nonempty
176               (lambda ()
177                 ((packrat-or
178                    (packrat-check
179                      table-entry.1544
180                      (lambda (entry.1603)
181                        (packrat-check
182                          white.1551
183                          (lambda (dummy.1604)
184                            (packrat-check-base
185                              '#\,
186                              (lambda (dummy.1605)
187                                (packrat-check
188                                  table-entries-nonempty.1543
189                                  (lambda (entries.1606)
190                                    (lambda (results.1607)
191                                      (make-result
192                                        (cons entry.1603 entries.1606)
193                                        results.1607))))))))))
194                    (packrat-check
195                      table-entry.1544
196                      (lambda (entry.1608)
197                        (lambda (results.1609)
198                          (make-result (list entry.1608) results.1609)))))
199                  results.1602)))))
200         (set! table-entry.1544
201           (lambda (results.1610)
202             (results->result
203               results.1610
204               'table-entry
205               (lambda ()
206                 ((packrat-check
207                    jstring.1547
208                    (lambda (key.1611)
209                      (packrat-check
210                        white.1551
211                        (lambda (dummy.1612)
212                          (packrat-check-base
213                            '#\:
214                            (lambda (dummy.1613)
215                              (packrat-check
216                                any.1539
217                                (lambda (val.1614)
218                                  (lambda (results.1615)
219                                    (make-result
220                                      (cons key.1611 val.1614)
221                                      results.1615))))))))))
222                  results.1610)))))
223         (set! array-entries.1545
224           (lambda (results.1616)
225             (results->result
226               results.1616
227               'array-entries
228               (lambda ()
229                 ((packrat-or
230                    (packrat-check
231                      array-entries-nonempty.1546
232                      (lambda (a.1617)
233                        (lambda (results.1618)
234                          (make-result a.1617 results.1618))))
235                    (lambda (results.1619) (make-result '() results.1619)))
236                  results.1616)))))
237         (set! array-entries-nonempty.1546
238           (lambda (results.1620)
239             (results->result
240               results.1620
241               'array-entries-nonempty
242               (lambda ()
243                 ((packrat-or
244                    (packrat-check
245                      any.1539
246                      (lambda (entry.1621)
247                        (packrat-check
248                          white.1551
249                          (lambda (dummy.1622)
250                            (packrat-check-base
251                              '#\,
252                              (lambda (dummy.1623)
253                                (packrat-check
254                                  array-entries-nonempty.1546
255                                  (lambda (entries.1624)
256                                    (lambda (results.1625)
257                                      (make-result
258                                        (cons entry.1621 entries.1624)
259                                        results.1625))))))))))
260                    (packrat-check
261                      any.1539
262                      (lambda (entry.1626)
263                        (lambda (results.1627)
264                          (make-result (list entry.1626) results.1627)))))
265                  results.1620)))))
266         (set! jstring.1547
267           (lambda (results.1628)
268             (results->result
269               results.1628
270               'jstring
271               (lambda ()
272                 ((packrat-check
273                    white.1551
274                    (lambda (dummy.1629)
275                      (packrat-check-base
276                        '#\"
277                        (lambda (dummy.1630)
278                          (packrat-check
279                            jstring-body.1556
280                            (lambda (body.1631)
281                              (packrat-check-base
282                                '#\"
283                                (lambda (dummy.1632)
284                                  (lambda (results.1633)
285                                    (make-result body.1631 results.1633))))))))))
286                  results.1628)))))
287         (set! jnumber.1548
288           (lambda (results.1634)
289             (results->result
290               results.1634
291               'jnumber
292               (lambda ()
293                 ((packrat-check
294                    white.1551
295                    (lambda (dummy.1635)
296                      (packrat-check
297                        jnumber-body.1557
298                        (lambda (body.1636)
299                          (lambda (results.1637)
300                            (make-result body.1636 results.1637))))))
301                  results.1634)))))
302         (set! number->utf-8.1549
303           (lambda (c.1638)
304             (list->string
305               (map integer->char
306                    (if (< c.1638 '128)
307                      (list c.1638)
308                      (if (< c.1638 '2048)
309                        (list (logior (/ c.1638 '64) '192)
310                              (logior (logand c.1638 '63) '128))
311                        (if (< c.1638 '65536)
312                          (list (logior (/ c.1638 '4096) '224)
313                                (logior (logand (/ c.1638 '64) '63) '128)
314                                (logior (logand c.1638 '63) '128))
315                          (if (< c.1638 '2097152)
316                            (list (logior (/ c.1638 '262144) '240)
317                                  (logior (logand (/ c.1638 '4096) '63) '128)
318                                  (logior (logand (/ c.1638 '64) '63) '128)
319                                  (logior (logand c.1638 '63) '128))
320                            (list '35)))))))))
321         (set! decode-unicode-string.1550
322           (lambda (s.1639)
323             (let ((hex->number.1640 'undefined))
324               (begin
325                 (set! hex->number.1640
326                   (lambda (c.1641)
327                     (assq-cdr
328                       c.1641
329                       '((#\0 . 0)
330                         (#\1 . 1)
331                         (#\2 . 2)
332                         (#\3 . 3)
333                         (#\4 . 4)
334                         (#\5 . 5)
335                         (#\6 . 6)
336                         (#\7 . 7)
337                         (#\8 . 8)
338                         (#\9 . 9)
339                         (#\a . 10)
340                         (#\b . 11)
341                         (#\c . 12)
342                         (#\d . 13)
343                         (#\e . 14)
344                         (#\f . 15)
345                         (#\A . 10)
346                         (#\B . 11)
347                         (#\C . 12)
348                         (#\D . 13)
349                         (#\E . 14)
350                         (#\F . 15)))))
351                 ((lambda (l.1642)
352                    (number->utf-8.1549
353                      (+ (* '4096 (hex->number.1640 (list-ref l.1642 '0)))
354                         (* '256 (hex->number.1640 (list-ref l.1642 '1)))
355                         (* '16 (hex->number.1640 (list-ref l.1642 '2)))
356                         (hex->number.1640 (list-ref l.1642 '3)))))
357                  (string->list s.1639))))))
358         (set! white.1551
359           (lambda (results.1643)
360             (if (char-whitespace? (parse-results-token-value results.1643))
361               (white.1551 (parse-results-next results.1643))
362               (comment.1540 results.1643))))
363         (set! skip-comment-char.1552
364           (lambda (results.1644)
365             (comment-body.1541 (parse-results-next results.1644))))
366         (set! skip-to-newline.1553
367           (lambda (results.1645)
368             (if (memv (parse-results-token-value results.1645)
369                       '(#\newline #\return))
370               (white.1551 results.1645)
371               (skip-to-newline.1553 (parse-results-next results.1645)))))
372         (set! token.1554
373           (lambda (str.1646)
374             (lambda (starting-results.1647)
375               ((let ((loop.1648 'undefined))
376                  (begin
377                    (set! loop.1648
378                      (lambda (pos.1649 results.1650)
379                        (if (= pos.1649 (string-length str.1646))
380                          (make-result str.1646 results.1650)
381                          (if (char=?
382                                (parse-results-token-value results.1650)
383                                (string-ref str.1646 pos.1649))
384                            (loop.1648
385                              (+ pos.1649 '1)
386                              (parse-results-next results.1650))
387                            (make-expected-result
388                              (parse-results-position starting-results.1647)
389                              str.1646)))))
390                    loop.1648))
391                '0
392                starting-results.1647))))
393         (set! interpret-string-escape.1555
394           (lambda (results.1651 k.1652)
395             ((lambda (ch.1653 results.1654)
396                (if (char=? ch.1653 '#\u)
397                  ((let ((doloop.1655 'undefined))
398                     (begin
399                       (set! doloop.1655
400                         (lambda (i.1656 str.1657 results.1658)
401                           (if (= i.1656 '4)
402                             (k.1652
403                               (decode-unicode-string.1550 str.1657)
404                               results.1658)
405                             (begin
406                               (set! str.1657
407                                 (string-append
408                                   str.1657
409                                   (string (parse-results-token-value results.1658))))
410                               (doloop.1655
411                                 (+ i.1656 '1)
412                                 str.1657
413                                 (parse-results-next results.1658))))))
414                       doloop.1655))
415                   '0
416                   '""
417                   results.1654)
418                  (k.1652
419                    ((lambda (t.1659) (if t.1659 (cdr t.1659) ch.1653))
420                     (assv ch.1653
421                           '((#\b . #\backspace)
422                             (#\n . #\newline)
423                             (#\f . #\page)
424                             (#\r . #\return)
425                             (#\t . #\tab))))
426                    results.1654)))
427              (parse-results-token-value results.1651)
428              (parse-results-next results.1651))))
429         (set! jstring-body.1556
430           (lambda (results.1660)
431             ((let ((loop.1661 'undefined))
432                (begin
433                  (set! loop.1661
434                    (lambda (acc.1662 results.1663)
435                      ((lambda (ch.1664)
436                         ((lambda (t.1665)
437                            (if (memv t.1665 '(#\\))
438                              (interpret-string-escape.1555
439                                (parse-results-next results.1663)
440                                (lambda (val.1666 results.1667)
441                                  (let ((new-acc.1668 'undefined))
442                                    (begin
443                                      (set! new-acc.1668
444                                        (if (char? val.1666)
445                                          (cons val.1666 acc.1662)
446                                          (append-reverse!
447                                            (string->list val.1666)
448                                            acc.1662)))
449                                      (loop.1661 new-acc.1668 results.1667)))))
450                              (if (memv t.1665 '(#\"))
451                                (make-result
452                                  (list->string (reverse acc.1662))
453                                  results.1663)
454                                (loop.1661
455                                  (cons ch.1664 acc.1662)
456                                  (parse-results-next results.1663)))))
457                          ch.1664))
458                       (parse-results-token-value results.1663))))
459                  loop.1661))
460              '()
461              results.1660)))
462         (set! jnumber-body.1557
463           (lambda (starting-results.1669)
464             ((let ((loop.1670 'undefined))
465                (begin
466                  (set! loop.1670
467                    (lambda (acc.1671 results.1672)
468                      ((lambda (ch.1673)
469                         (if (memv ch.1673
470                                   '(#\-
471                                     #\+
472                                     #\0
473                                     #\1
474                                     #\2
475                                     #\3
476                                     #\4
477                                     #\5
478                                     #\6
479                                     #\7
480                                     #\8
481                                     #\9
482                                     #\.
483                                     #\e
484                                     #\E))
485                           (loop.1670
486                             (cons ch.1673 acc.1671)
487                             (parse-results-next results.1672))
488                           ((lambda (n.1674)
489                              (if n.1674
490                                (make-result n.1674 results.1672)
491                                (make-expected-result
492                                  (parse-results-position starting-results.1669)
493                                  'number)))
494                            (string->number
495                              (list->string (reverse acc.1671))))))
496                       (parse-results-token-value results.1672))))
497                  loop.1670))
498              '()
499              starting-results.1669)))
500         any.1539)))))
501