File: LOG

package info (click to toggle)
nanopass-framework-scheme 1.9.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,328 kB
  • sloc: makefile: 17
file content (843 lines) | stat: -rw-r--r-- 46,182 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
2008-09-25 18:51:12 - 4865e596edc0ea8a68be26943c1463b9a9b3b6ab
  * initial import of Dipa Sarkar's code
      alltests.ss, compiler.ss, define-language.ss, define-pass.ss, driver.ss,
      helpers.ss, match.ss, meta-parser.ss, meta-syntax-dispatch.ss,
      nano-syntax-dispatch.ss, nano.ss, nanohelpers.ss, nanotest.ss, parser.ss,
      preprocess.ss, records.ss, synforms.ss, syntaxconvert.ss, term.ss,
      unparser.ss
2008-10-03 19:28:03 - d0a9aa5cfe8463a0a7d52a8fc9e03283b5f86078
  * added copyright notice
      + Copyright.txt
  * removed match, it was used to do initial parsing of sexp
      - match.ss, nanotest.ss
  * added first comment in trying to decode define-language
      define-language.ss
  * moved back to optimize-level 2 to give debugging information
      nanotest.ss
2008-10-06 09:40:52 - 1fd736e52b3ca305f56aaeac049176ddd6f5eb71
  * removed execution bit from files, since they were unneeded
      compiler.ss, define-language.ss, define-pass.ss, meta-parser.ss, 
      meta-syntax-dispatch.ss, nano-syntax-dispatch.ss, nano.ss,
      nanohelpers.ss, parser.ss, records.ss, syntaxconvert.ss, term.ss,
      unparser.ss
2008-10-06 09:48:17 - e06164bd5a6bf2437a833a2b8009e7dc8c7629a2
  * reorganized code to move library source into src directory
      moved: define-language.ss, define-pass.ss, meta-parser.ss,
      meta-syntax-dispatch.ss, nano-syntax-dispatch.ss, nano.ss,
      nanohelpers.ss, parser.ss, records.ss, syntaxconvert.ss, terms.ss, and
      unparser.ss to src directory
2008-10-06 09:49:43 - d72c88e555b24a6bc8738162c98d194b1069503f
  * reorganized code to move testing source into tests directory
      moved: alltests.ss, compiler.ss, driver.ss, helpers.ss, nanotest.ss,
      preprocess.ss, and synforms.ss to tests directory
2008-10-09 21:29:41 - a1b2dd8408b6f1282cfc9a962d38f0647dc32409
  * accidentally changed (define-syntax define-langauge ... to
    (define-language ...
  * changed tests to support reorganized directories
      tests/nanotest.ss
  * began working to identify (and remove) unused code, along with code
    reading to understand where and how functions are used.  Also changed
    to use consistent function definition syntax and line-wrap.
      src/define-language.ss, src/define-pass.ss
  * removed code after #!eof to be put in chaff file.
      src/define-language.ss, src/define-pass.ss
  * lifted duplicated common functions from make-processor-clause and
    do-define-pass
      src/define-pass.ss
2008-10-09 21:43:19 - d43213f91181deee413f86126fc3a0a56bfdf53e
  * lifted make-incontext-transformer and make-quasiquote-transformer to
    commonize these functions
      src/define-pass.ss
  * fixed (define-syntax define-language ... typo
      src/define-language.ss
2008-10-09 22:23:42 - 29d2029f0213605732712c2be60f586e02c27677
  * commented out some of the lifted fields
      src/define-pass.ss
2008-10-09 22:23:42 - d14c0b3ed8e254991baddd15317a6a9e31dcf30c
  * uncommented and generally reworked code for defining passes
      src/define-pass.ss
2008-10-10 11:18:17 - 4f7840c069d47d7cd68357c67cd5b805a98886de
  * cleanup of language->s-expression code
      src/define-language.ss
  * more code reformating and moving of common functions into the helpers.ss
      src/nanohelpers.ss, src/define-pass.ss, src/meta-parser.ss,
      src/meta-syntax-dispatch.ss, src/nano-syntax-dispatch.ss, src/parser.ss,
      src/records.ss, src/syntaxconvert.ss, src/unparser.ss
2008-10-24 18:13:23 - d1dff8cb77922342f52a10ed36a89497f8df5f6b
  * added external TODO list moved from other files
      TODO.txt, src/define-language.ss
  * added load-all.ss file to load the parts from the src and tests directories
      load-all.ss
  * moved spare code to scrap file
      scraps.ss
  * curried the rec-member? call to reuse the code in all of the member?
    functions
      src/define-language.ss
  * removed alt-union, alt-difference, and tspec-union functions
      src/define-language.ss
  * reorganized deeply nested if statements into conds
      src/define-language.ss, src/define-pass.ss
2008-10-25 14:25:18 - 21451b92b0bd1a140b35cc375eda365530edfcc0
  * removed calls to eval that were used for looking up the meta-parser by
    changing the meta-parser from a meta define to a procedure stored in the
    compile time environment (procedure is then passed around in define-pass).
      src/define-pass.ss, src/define-language.ss
2008-10-26 21:17:58 - 1284b9818ffb015f16d81e407aab94bfeaa59098
  * R6RSification: changed syntax-object->datum => syntax->datum,
    list* => cons*, datum->syntax-object => datum->syntax,
    (sub1 ,x) =>  (- ,x 1), (add1 ,x) =>  (+ ,x 1), partition => partition-syn
      src/define-language.ss, src/define-pass.ss, src/meta-parser.ss, 
      src/nanohelpers.ss, src/records.ss, src/syntaxconvert.ss, src/unparser.ss
  * removed unused, useless, or duplicated procedure definitions: show-decls, 
    show-tspecs, show-productions, lookup-any, split-decls, any, every, choose, 
    assp, remp, memp, filter, fold, reduce, empty-set, singleton-set,
    add-element, member?, empty?, union, intersection, difference
      src/nanohelpers.ss
  * moved lookup-alt from nanohelpers.ss to meta-parser.ss
      src/nanohelpers, src/meta-parser.ss
  * removed module wrappers as part of r6rsification
      src/unparser.ss, src/parser.ss, src/meta-parser.ss
  * changed null syntax () to #'() in generation of field patterns
      src/syntaxconvert.ss,
  * added more to scraps from the tail end of unparser
      src/scraps.ss
2008-10-26 21:20:07 - dc1e9b02e6964ec0c36772380660a462cf8e73d6
  * created R6RS libraries to wrap around existing code base
      nanopass.ss, nanopass/helpers.ss, nanopass/language.ss,
      nanopass/meta-parser.ss, nanopass/parser.ss, nanopass/pass.ss,
      nanopass/r6rs-helpers.ss, nanopass/records.ss, nanopass/unparser.ss,
  * added R6RS compatibililty wrappers for define-record, syntax-error,
    literal-identifier=?, warning, and fx=
      nanopass/r6rs-helpers.ss
  * accidentally added swap file: nanopass/.records.ss.swp
      nanopass/.records.ss.swp
2008-10-26 22:15:18 - 871b67ad1d4e2dafabe71536f15a6ec6d364c2ec
  * added test-all script wrapper to ease testing
      test-all.ss
2008-11-09 01:50:07 - 806ef5378ca0259b9a2a1bf3f1766e18a14ac227
  * removed accidentally added swap files: nanopass/.records.ss.swp
      nanopass/.records.ss.swp
  * cleaned up imports as more code is changed to comply with R6RS
      nanopass/helpers.ss, nanopass/language.ss, nanpoass/meta-parser.ss,
      nanopass/parser.ss, nanopass/pass.ss, nanopass/r6rs-helpers.ss,
      nanopass/records.ss, nanopass/syntaxconvert.ss, nanopass/unparser.ss
  * continued to press an Chez -> R6RS compatibility macro for define-record
      nanopass/r6rs-helpers.ss
  * also introduced my-syntax-violation to push for syntax-error compatibility
      nanopass/r6rs-helpers.ss
  * committed some debugging source (trace-define of parse-language)
      nanopass/define-language.ss,
  * added R6RS version of test-all
      test-all-r6rs.ss
  * code reformatting (removed spaces, changed to consistent coding standard)
      nanopass/r6rs-helpers.ss, tests/r6rs-compiler.ss
  * added implementation-helpers to abstract away some of the implementation
    specific code
      nanopass/syntaxconvert.ss, nanopass/unparser.ss
  * moved iota from tests/compiler.ss to tests/helpers.ss
      nanopass/compiler.ss
  * create r6rs copy of the test compiler
      tests/r6rs-compiler.ss, tests/r6rs-helper.ss, tests/r6rs-nanotest.ss 
2008-11-09 01:59:07 - 118a0a36a308f49c25c58c3b67539ce4e384d46d
  * added the implementation helpers files to the repositor, one for 
    Chez Scheme and one for Ikarus Scheme
      nanopass/implementation-helpers.ikarus.ss,
      nanopass/implementation-helpers.ss
2008-11-24 20:30:17 - 6e88caf2af091aac629fddb896651fcca92512a2
  * removed parse-language trace-define
      src/define-language.ss
  * commented out assert, since the R6RS one stands in fine
      src/nanohelpers.ss
2008-11-24 20:39:20 - afe583a450a94aa25f9884902a7ce1032d5b48d7
  * resolving conflicts between two wroking copies, assert => syn-assert
      src/nanohelpers.ss
2008-11-24 20:50:04 - 370bd11afdfc8a0233cf82b9f3d7f3c9e2f3db80
  * exported all of the internal exports from the main nanopass library
      nanopass.ss
  * more exports to allow this to run on Ikarus Scheme: added meta-define,
    and a hack to support meta-define
      nanopass/implementation-helpers.ikarus.ss, nanopass/term.ss
  * exported more features of meta-parser: parse-cata, lookup-alt
      nanopass/meta-parser.ss
  * created library for meta-syntax-dispatch
      nanopass/meta-syntax-dispatch.ss
  * moved to more formal make-compile-time-value definition for
    putting things into the compile-time environment to support ikarus.
      src/define-language.ss
  * more cleanup and R6RSification of meta-parser.ss
      src/meta-parser.ss
  * removed module tag from meta-syntax-dispatch
      src/meta-syntax-dispatch.ss
  * R6RSification of src/parser.ss: syntax-object->datum => syntax->datum,
    assert => syn-assert
      src/parser.ss, src/records.ss
  * excluded datum from the R6RS compiler nanopss import
      tests/r6rs-compiler.ss
2008-11-22 11:05:22 - 61feff78ee11abef5624b2de493e2bdb09851ffe
  * same changes as previous version on a differnt machine.
      nanopass.ss, nanopass/helpers.ss, nanopass/meta-parser.ss
      nanopass/implementation-helpers.ikarus.ss, src/define-language.ss,
      src/meta-parser.ss, src/meta-syntax-dispatch.ss, src/nanohelpers.ss,
      src/records.ss, tests/r6rs-compiler.ss
2008-11-22 14:13:59 - 6b61d840e4e1b86eeacd1a489431a241023cf962
  * finished copying changes from previous commit in different working copy
      nanopass/meta-syntax-dispatch.ss, nanopass/term.ss
2008-11-24 20:50:28 - 31d49c16511376b46781a3e5e737cb705b8f9609
  * merged two working copies
2008-11-24 22:36:14 - cbc2955a6fd540f482290fc92a39eaa4168d057b
  * added trace-define-syntax and printf to the implementation-helpers to
    support debugging
      nanopass/implementation-helpers.ikarus.ss
  * imported meta-syntax-dispatch into the meta-parser
      nanopass/meta-parser.ss
  * committed debugging code in the language definition
      src/define-language.ss
2008-11-24 20:27:30 - f79bcb8b4aab5e804246a4030d2061edcf560e8d
  * added meta-define and make-compilet-time-value macros for Chez to expand
    into the appropriate meta define and cons
      load-all.ss
  * reformatted the exports in the nanopass top-level
      nanopass.ss
  * exported more helper procedures
      nanopass/helpers.ss, nanopass/implementation-helpers.ss
  * created auxiliaary keywords to export from the libraries to ensure they
    will be free-identifier=? when used as keywords outside the library with
    macros defined within the library
      nanopass/language.ss, nanopas/meta-parser.ss
  * created nano-syntax-dispatch library based on the syntax dispatcher from
    the original code.
      nanopass/nano-syntax-dispatch.ss
  * added inclusing of nanopass/nano-syntax-dispatch.ss to parser.ss
      nanopass/parsers.ss
  * small formatting changes and removed debugging code.
      nanopass/language.ss, src/define-language.ss, src/define-pass.ss,
      src/parser.ss, src/unparser.ss, tests/r6rs-compiler.ss
  * pulled make-double-collector-over-list and map2 into helpers
      nanopass/helpers.ss
  * small changes to deal with chez style records (record-type-name => 
    chez-record-type-name, record-type-descriptor => 
    chez-record-type-descriptor
      src/unparser.ss 
  * added procedure definitions for compose, disjoin, any, every, choose,
    reverse-filter, fold, reduce, partition, constant? keyword?, 
    list-of-user-primitives, list-of-system-primitives, user-primitive?,
    system-primitive? primitive? predicate-primitive? value-primitive?,
    effect-primitive? effect-free-primitive? gen-label, gen-symbol-seed,
    reset-seed, gen-symbol, set? iota, with-values, mvlet, empty-set,
    singleton-set, add-element, member?, empty?, union, intersection, and
    difference to tests version of r6rs-helpers
      tests/r6rs-helpers.ss
  * created tiny testing library for looking at a single language definition
      tests/r6rs-tiny.ss, tests/tiny.ss
2008-11-24 22:37:23 - 6f68e61e97d091ebad305b4406f7352e3cc14a6e
  * no changes? looks like a merge node.
2008-12-11 09:06:34 - 65049181072cd5a748e732d454617083814b724e
  * re-added auxiliary keywords for $tspec, $metas, $production, and $alt
      nanopass.ss
  * added code to push wraps down into syntax to support Ikarus.  current
    code makes extended use of car, cdr, etc. to decompose syntax rather than
    syntax-case.  eventually more of this needs to be dropped.
      nanopass/helpers.ss
  * added more implementation specific helpers to the Ikarus specific code.
    some of these are to support things like format, printf, etc.
      nanopass/implementation-helpers.ikarus.ss,
      nanopass/implementation-helpers.ss
  * moved auxiliary keywords: $tspec, $metas, $production, $alt, in, where,
    over, extends, definitions, and entry into aux-keywords library
      nanopass/language.ss, nanopassrecords.ss, (nanopass/aux-keywords.ss?)
  * added helper syntax for map to print out what is being mapped over
    for debugging purposes
      nanopass/pass.ss
  * fixing syntax around null (replacing #'() with '())
      nanopass/r6rs-helpers.ss
  * tspec?, gramelt-metas, tspec-terminal, nonterminal-name, alt=?, and
    define-language now use an eq? comparison to match aux-keywords rather
    then relying on the auxiliary keyword facility
      nanopass/define-language.ss
  * general code cleanup (reformatting, removing debugging in places, etc.)
      nanopass/define-language.ss
LATEST
  * reformatted a couple places where there was some odd indenting
      tests/compiler-test.ss
  * updated compiler passes to make use of the new pass syntax.  with this
    change passes that utilized the automatic combining code needed to be
    rewritten to explicitly do the combining themselves (this was usually
    append or union).  these passes now thread a varaible through and 
    perform a cheaper update when possible.
      tests/compiler.ss, tests/unit-tests.ss
  * added set-cons for adding individual items to a set (instead of using
    union everywhere
      tests/helpers.ss, test/compiler.ss
  * worked a little on a new test compiler, but did not make much progress
      tests/new-compiler.ss
  * fixed error handling in the test driver so that we are no longer getting
    a non-continuable error raised when there is an exception in a pass
      tests/test-driver.ss
2011-04-09 - 
  * added todo to investigate the handling of tspec=? down the road we may want
    to investigate the syntax for extending languages again and drop the
    definitions section (or at least rename it)
      nanopass/language.ss
  * fixed the cata syntax to support cata to a Processor that returns 
    zero values.  as part of this fix also improved support for mapping
    over processors that return multiple values.  originally this was
    limited to just mapping over processors with one or two values, but
    now it supports zero or more.  (zero return value is special-cased to
    use for-each, one return value is special-cased to use map, and a loop
    is built on the fly to support two or more return values.)
      nanopass/meta-parser.ss, nanopass/pass.ss
  * improved error message when a processor meta-variable cannot be found in
    the parser and unparser.
      nanopass/parser.ss, nanopass/meta-parser.ss
2011-04-25 -
  * merged changes from work with some in progress changes here.
  * updated tests to work with new meta-variable only nonterminal alternatives
2011-05-13 -
  * added nanopass-case macro to allow for local matching of nanopass
    syntax.  currently this expands into a directly applied define-pass
    and is restricted to returning a single, non-checked value.
      nanopass/pass.ss
  * extended the meta parser to allow more then statement in the body of
    in-context and with-output-language transformers.
      nanopass/meta-parser.ss
  * fixed issue with processor internal definitions not being properly
    recognized and placed definitions within a with-output-language so
    that quasiquotes will be transformed into nanopass language-records
    similar to the processor right-hand-sides.
      nanopass/pass.ss
  * fixed bug with define-pass that was causing it to return a single value
    when a user provided body was checked for an appropriate language value.
    the check now happens to the first return value and the extra returned
    values are returned as is.
      nanopass/pass.ss
  * fixed bug in how extend pred-all checks were being generated so that
    a call to the ntspec's pred is being generated instead of just the a
    reference to the pred itself.
      nanopass/records.ss
  * fixed bug in the unparser that was causing non-terminal productions to
    be handled through a recursively generated form rather then using the
    existing pred-all for the non-terminal.
      nanopass/unparser.ss
  * improved error message when searching for procs fails, so that we know
    the syntax we were trying to process (and hence whether it was a body,
    auto-generated ntspec production, auto-generated cata, or cata call
    that generated the problem).
      nanopass/pass.ss
  * changed a debugging pretty-print
      nanopass/language.ss
2011-05-17
  * improved error message when a field cannot be autogenerated in an
    autogenerated clause to a processor
      nanopass/pass.ss
  * changed from call-with-values to let-values in code produced in
    body of a processor (now that the error message doesn't hold onto
    the 3D code we were generating)
      nanopass/pass.ss
2011-05-22
  * removed the syn-map, map2, make-double-collector, and find-matching-clause
    since they were no longer being used.
      nanopass/helpers.ss, tests/helpers.ss
  * changed references to prod and production to ntspec
      nanopass/languages.ss, nanopass/meta-parser.ss, nanopass/parser.ss,
      nanopass/unparser.ss, nanopass/records.ss
  * rewrote code for handling user clauses in order to support nonterminals on
    the left-hand-side of a clause.  clauses are now matched in the order they
    appear, with additional clauses autogenerated after user clauses have been
    added. the code supports the current (limited) testing but has not yet been
    tested with the new compiler code.  it also does not yet support terminal
    or nonterminal catas.
      nanopass/meta-parser.ss, nanopass/pass.ss
2011-05-22
  * fixed the processor builder by adding the input identifier from a cata to
    the list of formal arguments (when it would not be otherwise shadowed).
    note: the order is not necessarily maintained, but since these values will
    be set by the let* that binds them, there does not seem to be a need of
    ordering.  also fixed the else thunk to be a thunk.
      nanopass/pass.ss
  * incorporated changes to nanopass-case that Kent Dybvig made.  when an
    identifier is used in as the expression to be matched the identifier is
    rebound with the new value when the cata is called.
      nanopass/pass.ss
  * incorporated changes to meta-language quasiquote syntax from Kent Dybvig.
    this change allows things like `(locals (,(reverse xnfv*) ...) ---) which
    would previously have raised an error since ellispis expected to find an
    identifier in its body.  to support this a quote form was also added to
    make sure this feature does no cause automatically quoted items in the body
    of an input, like booleans, symbols, and other constants.
      nanopass/records.ss, nanopass/meta-parser.ss, nanopass/pass.ss
2011-05-25
  * fixed the error message for the output processor so that it would have the
    preformatted name rather then the syntax I had inadvertently dropped in
    (fix thanks to Kent Dybvig).
      nanopass/meta-parser.ss
2011-05-25
  * setup the output process to leave quasiquote in the correct context
    when an output expression is unquoted.  this should allow us to avoid
    many of the in-context specifiers needed in the current np-compiler.
      nanopass/meta-parser.ss
2011-09-23
  * removed definitions form from define-language.  added a todo for a better
    solution to the problem of unparsing languages into a runnable s-expression
    syntax.  also removed empty let wrapper from unparser output, since it is
    no longer needed with the definitions support gone.
      nanopass/language.ss, nanopass/record.ss, nanopass/unparser.ss
  * added feature to gather up information about the syntax being passed to
    a record constructor so that we can provide a slightly better error message
    when the value passed for one of the fields is invalid.  this is done
    using the source-annotation functionality, and produces a single message
    for each fld (even though multiple syntax objects might have contributed,
    e.g. in the case of a list field).  when the identifier is known, it will
    report that the problem occurred at the given syntax item and when it is
    not it will report that the problem ocurred near the given syntax item.
      nanopass/records.ss, nanopass/meta-parser.ss, nanopass/parser.ss
  * parser and unparser are now defined with define-who so that they can report
    which parser or unparser went belly up when an error occurs.
      nanopass/language.ss, nanopass/parser.ss
  * added check in nano-meta->fml* to raise an error when a quoted terminal
    is found in the list of formals.  this is just a more specific message
    than the "unrecognized nano-rec" in the else case.
      nanopass/pass.ss
  * at optimize-level 3, the "checking" version of the pair-alt record
    constructor is now a syntax definitions that washes down to a call to
    the normal record constructor, so that the output of the checked and
    unchecked cases will be the same.
      nanopass/records.ss
2011-09-24
  * moved the preprocessor code into the tests/compiler.ss file and changed
    it to use with-output-language, rather than the s-expression quasiquote.
      tests/compiler.ss, tests/compiler-tests.ss, tests/preprocess.ss (removed)
  * updated the synforms library to not require a quasiquoted expression.
    also changed to use ... in place of dots or .. by using the Chez extended
    syntax-rules (which allow for a general guard expression). also got rid of
    top level quoted item, probably should have also made unquote legal as
    start of pattern.
      tests/synforms.ss
  * now exporting define-who from tests/helpers.ss to allow for more convenient
    error calls in the rename-var/verify-scheme function.
      tests/helpers.ss, tests/compiler.ss
2011-09-29
  * added a (maybe x) form to language definitions to allow language defintions
    to contain fields that can be occupied by either a non-terminal or #f.
    this means it is now possible to have a production like:
    (define-language L
      (terminals
        (integer (int))
        ---)
      (Exp (e)
        (Foo int (maybe e))
        ---))
    and the e field in Foo maybe either be an Exp or #f. also added ? as a valid
    character to put on a meta-variable to allow e? for those fields that are
    maybe fields.
      nanopass/helpers.ss, nanopass/meta-parser.ss, nanopass/pass.ss,
      nanopass/records.ss, nanopass/syntaxconvert.ss, nanopass/unparser.ss
      test-all.ss, tests/unit-test-helpers.ss, tests/unit-tests.ss
  * Fixed variable overlap bug when a pattern and the langauge formal to a processor
    share the same name. For example:
    (Exp : Exp (e1) -> Exp ()
      [(Foo ,e1 ,e2) ---]
      ---)
    this now produces the expected code and shadowing, instead of re-binding e1
    before e2 has a chance to be extracted from e1.
      nanopass/pass.ss
  * Fixed bug when handling output expressions that can end in a terminal in the
    meta-parser.  This means if you have:
    (define-language L
      (terminals
        (integer (int))
        (boolean (bool))
        ---)
      (Exp (e)
        (Foo int e-or-bool)
        ---)
      (Exp-or-Bool (e-or-bool)
        bool
        e))
    then the expression:
    (with-output-language (L Exp) `(Foo 4 #f))
    it should now work properly.
      nanopass/meta-parser.ss
  * Added indirect-export of record constructors, predicates, and accessors
    created when defining a language, so that if the language is exported,
    these will be exported as well.
      nanopass/records.ss
  * convert-pattern now returns fields and levels as separate list return
    values along with a list of maybes.  it also parses the (maybe e) syntax
    (see note above)
      nanopass/syntaxconvert.ss
  * Fixed some tests that were still expecting the (let () ---) wrapper
    around the output of language unparsers. also cleaned up the output
    to make it a little more obvious what was going on with these.
      tests/unit-tests.ss, tests/unit-test-helpers.ss
2011-09-09
  * The nanopass library is now built as a library group to ease testing in
    Chez Scheme 8.9.1 (which includes a built in copy of the nanopass framework
    that will be used in place of the library if it is not carefully loaded).
      nanopass.ss
  * Cleaned up unique names so that they now have a single number added to them
    rather then several, and the names are divided by : in stead of being
    divided by .
      nanopass/helpers.ss
  * Small changes to error messages that report bad meta-variables, these now
    report if they are from the parser or meta-parser.
      nanopass/meta-parser.ss, nanopass/parser.ss
  * First step at moving to record variants with case dispatch.  This version
    includes the potential for some extra record checks, sometimes even when
    they are not needed.  However the basic dispatch is there now.
      nanopass/pass.ss, nanopass/records.ss
2011-09-10
  * Moved calculation of ntspec sub-terminal predicate and ntspec full tags
    into the same code that calculates the all-pred for the ntspec. This
    has the added benefit that when the else is used we only put in the 
    nanopass-record check when there is a possibility that it could be a
    terminal.
      nanopass/records.ss, nanopass/pass.ss
----
2011-12-26
  * Small fix to echo message for echoing passes (now includes newline)
      nanopass/pass.ss
  * Added basic support for nanopass records as terminals. This support is
    incomplete, since it doesn't have a syntax that fully supports the
    define-record-type syntax, but should be able to.
      nanopass/pass.ss, nanopass/records.ss, nanopass/language.ss,
      nanopass/meta-parser.ss
  * Fixed (slightly) handling of mapping over input terms.  Now if there is
    not an expression to map, it does not build a call to map.
      nanopass/pass.ss
----
2012-12-17 - 949d59d57739e3a29cce020b244c81d049f73e5b
  * Moved project to public github.
      all files
2013-01-30 - 41f14e679b5fb9c2a8eaabe6f908905c3f329fe1
  * removed list-tail definition from helpers and turned it into an import in
    implementation helpers. (thanks to Kent Dybvig, who made the change and
    submitted a bug report).
      nanopass/helpers.ss, nanopass/implementation-helpers.ss
  * there is no longer an additional (duplicate) count for traversing into a
    sub-nonterminal. counts for terminal elements of a wrapping nonterminal
    have also been removed (not sure if this was a good change or not).
      nanopass/language-node-counter.ss
  * changed how the "trace" keyword determines when it should use an input or
    output unparser. this is now determined by both checking that there is an
    input (or output) language and an input (or output) nonterminal in the
    transformer being traced.
      nanopass/pass.ss
  * changed the autogenerated clauses to call the checking record maker instead
    of the non-checking version, because a recursive call could potentially hit
    a compiler writer supplied terminal or nonterminal transformer that builds
    an invalid item.
      nanopass/pass.ss
2013-01-30 - 65d35a107fcdd4e7091af6c159867215d8da0971
  * Updated copyright information in all the files.
      Copyright, nanopass.ss, nanopass/helpers.ss,
      nanopass/implementation-helpers.chezscheme.ss,
      nanopass/implementation-helpers.ikarus.ss,
      nanopass/implementation-helpers.ss, nanopass/language-node-counter.ss,
      nanopass/language.ss, nanopass/meta-parser.ss,
      nanopass/meta-syntax-dispatch.ss, nanopass/nano-syntax-dispatch.ss,
      nanopass/parser.ss, nanopass/pass.ss, nanopass/random-util.sls,
      nanopass/records.ss, nanopass/syntax-handler.sls,
      nanopass/syntaxconvert.ss, nanopass/unparser.ss, test-all.ss,
      tests/alltests.ss, tests/compiler-test.ss, tests/compiler.ss,
      tests/helpers.ss, tests/implementation-helpers.ikarus.ss,
      tests/implementation-helpers.ss, tests/new-compiler.ss,
      tests/synforms.ss, tests/test-driver.ss,
      tests/unit-test-helpers-implementation.chezscheme.sls,
      tests/unit-test-helpers.ss, tests/unit-tests.ss
2013-07-18 - 097f7c428a1573af14556e76619fab323f7d42b8
  * Merged typo fix in error message (courtesy of Eric Holk)
      nanopass/pass.ss
2013-07-18 - 79e0e644d5c490a2ea71418834228a429b97d581
  * Merged another typo fix in another error message (courtesy of Eric Holk)
      nanopass/records.ss
2013-08-03 - ce94b43cfc1a6ef1dd7de5bd65d37c165902918d
  * INCOMPATIBLE CHANGE: Extended languages now use the base languages's entry
    point as the entry point for the language instead of the first listed
    nonterminal.  In general, this seems like the behavior you want, though it
    may break some existing libraries, so upgrade with caution.
      nanopass/languages.ss, tests/compiler.ss
  * Added a prune-language form that, when given a language, starts traversing
    the language from the entry nontermainal and determines if there are any
    dead nonterminals or terminals in the language, prunes them, and returns an
    S-expression representing only the reachable parts of the language.
      nanopass/language.ss, nanopass.ss
2013-09-03 - f8fc318d2bc644357c02cef5e897702efa2d1675
  * Added binaries of the nanopass framework for OS X
      ReadMe, ReadMe.md, lib/ReadMe.md, lib/csv8.4/{,t}{a6,i3}osx/nanopass.so
2013-09-03 - b13b070e578d960c895c45aafba616175d4c5782
  * Added binaries ot the nanopass framework for Linux
      lib/csv8.4/{,t}{a6,i3}le/nanopasss.so
2013-09-16 - ad7ff9b1eba29bffc474fc94cb4fc0ab431fa3ab
  * Fixed a bug with the parser that caused bare boolean terminals to fail to
    parse.  Specifically, since #f was used to indicate a failed parse,
    parsing the bare boolean #f was raising an error.
      nanopass/parse.ss, tests/unit-tests.ss
2013-10-01 - af34af0544292872a5f1de4a8f92c1caca5e51b2
  * changed unique-id to unique-symbol, since we are now building the
    unique-symbol and using it directly instead of generating the id to use in
    output syntax.  also exporting make-list to make generating accessors
    easier.
      nanopass/helpers.ss, nanopass/implementation-helpers.chezscheme.ss,
      nanopass/implementation-helpers.ss
  * fixed language->s-expression to no longer output the nongenerative id of
    an ntspec, since it is no longer necessary to specify for each ntspec
      nanopass/language.ss
  * small cleanup of the meta-parser.  removed extra (unused) argument to a
    couple of procedures.
      nanopass/meta-parsers.ss, nanopass/parser.ss, nanopass/unparser.ss
  * removed differentiation between checking and non-checking maker, since we
    are no longer using the non-checking maker.
      nanopass/meta-parsers.ss, nanopass/records.ss, nanopass/parser.ss,
      nanopass/pass.ss
  * improved checking of meta-variables so that if the wrong meta-variable is
    used, it will report it to the user, rather than doing a check that will
    always fail we now report that an invalid meta-variable was used at expand
    time.  also did some general cleanup and improved error messages around
    using quoted items in a pattern match.
      nanopass/pass.ss, nanopass/records.ss
  * changed record creation code to skip the define-record-type macro and
    instead we are creating the records directly using the procedural
    interface.  this (hopefully) helps the memory usage and speed of expanding
    language definitions.
      nanopass/records.ss
2013-10-02 - 3dd941537379b2a2a1a139daf8107a24ce919346
  * added bin directory to automate the process of building binaries across Mac
    OS X and Linux.  these scripts require a setup with multiple versions of
    the Chez Scheme compiler installed.
      bin/build-shared-objects, bin/compile-file-to-lib-dir
2013-10-02 - 3dd941537379b2a2a1a139daf8107a24ce919346
  * added a define-pruned-language form that prunes a language and then defines
    it with a new name.  also changed diff-languages to output code that is
    appropriate for the current implemntation of language extensions in the
    nanopass framework.
      nanopass.ss, nanopass/languages.ss
2013-10-04 - 9cd67d5ee048370ca253b7fd3b942151921858fd
  * added checking for mutually recursive nonterminals so that we now report
    an error to the user.  this was a simple change, and if we want to support
    this in the future, there is probably a way to do so, we just need to be
    careful about pass generation.
      nanopass/records.ss
2013-10-04 - 1aa2c01274137066aa3de75f966ce7c11374d20f,
             c38ba0f9fea350ca403f8d0892765aebbb80890b
  * fixed a small bug in the error reporting code for the stricter checking of
    nanopass meta-variables.
      nanopass/pass.ss
2013-10-15 - 47c580d5ee361d6aa209189baa3489c067e18248,
             3c7b2c6eff3e0e724291063cddce46ad9a447d47
  * added support for Vicare Scheme through the implementation helper files.
    removed use of define-property, since it is not supported on other
    Scheme platforms.
      nanopass.ss, nanopass/helpers.ss, nanopass/language-node-counter.ss,
      nanopass/language.ss, nanopass/meta-parser.ss,
      nanopass/meta-syntax-dispatch.ss, nanopass/parser.ss, nanopass/pass.ss,
      nanopass/record.ss, nanopass/unparser.ss, nanopass/synforms.ss,
      nanopass.chezscheme.sls (new),
      nanopass/implementation-helpers.chezscheme.sls
      (renamed, was nanopass/implementation-helpers.chezscheme.ss),
      nanopass/implementation-helpers.ss (removed),
      nanopass/implementation-helpers.vicare.sls (new),
      tests/implementation-helpers.chezscheme.sls (new),
      tests/implementation-helpers.vicare.sls (new),
      tests/unit-test-helpers-implementation.vicare.sls (new)
  * moved language pruning code into a separate library to remove duplicated
    code for prune-language and define-pruned-language.
    nanopass/language-helpers.ss (new), nanopass/language.ss
  * added a gitignore file so that I won't accidentally commit vim swap files.
      .gitignore
2013-10-16 - d7f3c8a71a99f2cc88a3a5f8c28b780dcf07c41d
  * added support for Ikarus Scheme (which is a little easier to install on Mac
    OS X).  moved more Chez specific code to the implementation specific
    libraries.
      nanopass/helpers.ss, implementation-helpers.chezscheme.sls,
      implementation-helpers.ikarus.ss, implementation-helpers.vicare.sls,
      nanopass/meta-parser.ss, nanopass/parser.ss, nanopass/pass.ss,
      nanopass/records.ss, nanopass/unparser.ss, tests/compiler.ss,
      tests/unit-test-helpers-implementation.ikarus.sls (new)
  * test-all now prints output when running under Vicare Scheme.
      tests/unit-test-helpers-implementation.vicare.sls
  * started cleaning up code that is no longer used.
      nanopass/helpers.ss, nanopass/random-util.sls (removed),
      nanopass/syntax-handler.sls (removed)
2013-10-17 - 31bdcd721d5685ca78c1f43974ffb0ea890ad8b2
  * code cleanup.  removed more no longer used code.
      nanopass/helpers.ss, nanopass/implementation-helpers.chezscheme.sls,
      test-all.ss
2013-10-17 -
  * updated documentation and logs
      LOG, TODO, ReadMe.md, CHANGES (removed), Notes (removed),
      ReadMe (removed)
  * updated binary build script and built updated binaries
      bin/build-shared-objects, bin/compile-file-to-dir,
      lib/csv8.4/{,t}{a6,i3}{le,osx}/nanopass.so
2013-10-24 -
  * fixed support for using improper lists in language productions.  this
    addresses issue 7 from the github issues list.  it is now possible to
    use an improper list as the top-level pattern for a production and
    improper lists can now be matched in a pass without raising an invalid
    pattern syntax error in the pass.  also added regression tests.
      nanopass/language.ss, nanopass/meta-syntax-dispatch.ss,
      tests/unit-tests.ss, test-all.ss,
      lib/csv8.4/a6le/nanopass.so, lib/csv8.4/a6osx/nanopass.so,
      lib/csv8.4/i3le/nanopass.so, lib/csv8.4/i3osx/nanopass.so,
      lib/csv8.4/ta6le/nanopass.so, lib/csv8.4/ta6osx/nanopass.so,
      lib/csv8.4/ti3le/nanopass.so, lib/csv8.4/ti3osx/nanopass.so
2013-12-05 -
  * added a with-r6rs-quasiquote and a with-extended-quasiquote forms.  the
    r6rs version provides the normal quasiquote, while the extended version
    includes support for ellipsis in the template (the extended quasiquote is
    now needed for the pretty output forms).
      nanopass.ss, nanopass/helpers.ss, nanopass/unparser.ss
  * added a second pretty form (->) for writing procedural unparsing of
    nonterminal productions.
      nanopass/language.ss, nanopass/helpers.ss, nanopass.ss, nanopass/records.ss,
      nanopass/unparser.ss
  * changed how trace-define-pass and traced transformers work, so that the
    tracing now outputs the raw S-expressions syntax, rather than the unparsed
    S-expression syntax.
      nanopass/unparser.ss
  * fixed how the unparser handles terminals, so that they will be unparsed
    using the pretty unparser, even when they are unparsed at the top level, if
    they are not using the raw unparsing.
      nanopass/unparser.ss
  * fixed a bug in how the meta-parser generates catas so that it will now put
    the correct type in for terminal specs. 
      nanopass/meta-parser.ss
  * fixed a bug in how the transformer syntax is parsed when there is no input
    language, or when there is no output language.  (the code used to assume
    that the language would be present, leading to unhelpful error messages.)
      nanopass/pass.ss
2013-12-05 -
  * fixed a bug with how errors are reported when a language production gets
    the wrong the value.  (Thanks to Eric Holk for pointing out the bug (and
    the different handling of formats in Vicare).
      nanopass/records.ss
  * built csv8.4 binaries with the current updates.
      lib/csv8.4/a6le/nanopass.so, lib/csv8.4/a6osx/nanopass.so,
      lib/csv8.4/i3le/nanopass.so, lib/csv8.4/i3osx/nanopass.so,
      lib/csv8.4/ta6le/nanopass.so, lib/csv8.4/ta6osx/nanopass.so,
      lib/csv8.4/ti3le/nanopass.so, lib/csv8.4/ti3osx/nanopass.so
2013-12-09 -
  * fixed a bug with the unparsing of maybe fields, with an added test to make
    sure that we don't wreck the handling of maybe fields again.
      nanopass/unparser.ss, test-all.ss, tests/unit-tests.ss
  * built csv8.4 binaries with the current updates.
      lib/csv8.4/a6le/nanopass.so, lib/csv8.4/a6osx/nanopass.so,
      lib/csv8.4/i3le/nanopass.so, lib/csv8.4/i3osx/nanopass.so,
      lib/csv8.4/ta6le/nanopass.so, lib/csv8.4/ta6osx/nanopass.so,
      lib/csv8.4/ti3le/nanopass.so, lib/csv8.4/ti3osx/nanopass.so
2017-11-09 -
  * fixed bug in handling of extra arguments for terminal subtypes, nonterminal
    subtypes, and pass bodies.  Previously all three of these cases simply
    looked for a processor that did not require more extra arguments than we
    had available, and supplied them in positional order, instead of using
    names like the cata-morphism or normal pair-alt production processing.
      nanopass/pass.ss, tests/unit-test.ss, test-all.ss
2017-11-10 -
  * fixed a bug introduced by the last bug check that was leading to an
    erroneous change in generation of terminal and nonterminal subtype calls
    when there were additional return values.  Also fixed a bug with the
    handling of terminal subtype calls (these originally looked for a processor
    that could return multiple values and then produced a values return that
    added effectively had a multi-valued first element (which would have lead
    to run time errors).
      nanopass/pass.ss
2017-11-17 -
  * fixed error message generated by nanopass constructors with list fields so
    that it reports that it expected a list of (or list of list of ... etc.)
    the type instead of failing because we are calling for-each.  (bad error
    message reported by Jamie Taylor---thanks!)
      nanopass/records.ss, test-all.ss, tests/unit-tests.ss
  * fixed assert-error so that it will work, now that there are tests that
    need to make use of it.
      tests/unit-test-helpers.ss
2018-09-05 -
  * remove outdated information and add links to papers
      ReadMe.md
  * fixed Travis CI fails caused by inaccurate vicare-scheme version
     .travis/install_scheme
2018-09-16 -
  * fixed tests to work with recent version of vicare (0.4d1)
      nanopass/implementation-helpers.vicare.sls, nanopass/language.ss,
      nanopass/pass.ss, nanopass/records.ss, 
      tests/implementation-helpers.vicare.sls, tests/test-driver.ss
2018-09-30 -
  * implemented define-property for ikarus and vicare
      nanopass/syntactic-property.sls (new),
      nanopass/implementation-helpers.ikarus.ss,
      nanopass/implementation-helpers.vicare.sls,
      nanopass/implementation-helpers.chezscheme.ss, nanopass/helpers.ss
  * added pass-input-parser and pass-output-unparser to allow the class
    compiler driver to determine the parser and unparser for passes used in the
    compiler so that we can trace and start at intermediate points in the
    compiler without having to specify it in each case.
      nanopass.ss, nanopass/pass.ss, test-all.ss, tests/unit-tests.ss,
      tests/unit-test-helpers.ss
  * updated to the most recent vicare release
      .travis/install_scheme
2018-10-04 -
  * Updated the way we store the pass input and output languages, so that we
    can differentiate between a pass that does not have an input language or
    output language and an identifier that is not for a pass.  These macros now
    expand into code for the language unparser/parser (when there is an input
    or output language), a procedure that takes one or more arguments and
    returns the first one (when there is no input or output language), or #f
    (when the identifier is not for a pass, or the pass info property has been
    somehow lost).  Also added procedures for looking up the input and outpuot
    language with an identifier and the compile time environment, and
    determining if an identifier has related pass information.
      nanopass.ss, nanopass/pass.ss nanopass/records.ss
2019-11-27 -
  * Small fix to correct with-r6rs-quasiquote, which was previously not
    restoring the normal R6RS quasiquote within a scope where a nanopass
    quasiquote handler was bound.
      nanopass/helpers.ss
  * Whitespace cleanup.
      nanopass/pass.ss
2019-12-07 -
  * Small fix to make the unit tests exit with a non-zero exit code when one of
    the unit test fails.  Along with this fixed formatting around the error
    messages so that it should be consistent across platforms.  This required a
    bit of hackery to get the filename that will be used by Chez, Ikarus, and
    Vicare, along with exposing a version of format that sets the print
    parameters necessary to get it to match display-condition (in Chez, this is
    just format in Ikarus and Vicare).  Finally, exposed some of the underlying
    source information extracting functions.
      test-all.ss, nanopass/helpers.ss,
      tests/unit-test-helpers-implementation.chezscheme.sls,
      tests/unit-test-helpers-implementation.ikarus.sls,
      tests/unit-test-helpers-implementation.vicare.sls,
      tests/unit-test-helpers.ss, tests/unit-tests.ss
  * Corrected (embarrassing) misspelling of received.
      nanopass/records.ss
2020-01-31 -
  * Small changes: added trace-define-who, slightly improved error message for
    quoted terminals in patterns, and a little code and comment cleanup.
      nanopass/helpers.ss, nanopass/meta-syntax-dispatch.ss, nanopass/pass.ss,
      nanopass/records.ss
2020-10-11 -
  * Changed the nano-syntax-dispatch into a macro so that compilers using
    define-parser do not have a run-time dependency on the (nanopass
    nano-syntax-dispatch) library.  With this change the pattern no longer
    needs to be quoted in the output of define-parser.
      nanopass/nano-syntax-dispatch.ss, nanopass/parser.ss
2020-10-18 -
  * Removed np-parse-fail-token as a run-time dependency by making it a macro.
    The whole parser really needs to be revisited, but this should make it
    possible to generate compilers with intermediate language parser that do
    not have a run-time dependency on the nanopass framework.
      nanopass/parser.ss, nanopass/helpers.ss,
      nanopass/implementation-helpers.chezscheme.sls,
      nanopass/implementation-helpers.ikarus.ss,
      nanopass/implementation-helpers.ironscheme.sls,
      nanopass/implementation-helpers.vicare.sls
2021-03-14 -
  * Fixed the reworked nano-syntax-dispatch by essentially replacing the
    syntax-rules macros, with a single syntax-case macro that expands the parts
    of the pattern into mini-matcher functions.  This essentially implements
    the same algorithm originally implemented by the original functions,
    specialized to the pattern.  It avoids the runtime dependency, and
    hopefully doesn't generated too much redundant code.  In the long run the
    parser should be redone entirely.
      nanopass/nano-syntax-dispatch.ss, tests/unit-tests.ss
  * Removed `any` and `every` since these were just `exist` and `for-all`.
      tests/helper.ss