833 lines
44 KiB
Text
833 lines
44 KiB
Text
|
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
|