Chris Hanson [Thu, 15 Feb 2018 03:29:32 +0000 (19:29 -0800)]
Refactor the syntax-error mechanism.
* There's now a condition type for syntax errors.
* There's a distinction between errors that happen in macro expanders and those
that happen inside the syntax implementation.
* All syntax errors now get the (form senv hist) objects.
* Syntax errors don't yet use the history to report context; that will come
later.
Chris Hanson [Thu, 15 Feb 2018 03:03:59 +0000 (19:03 -0800)]
Eliminate keyword-binder.
Chris Hanson [Thu, 15 Feb 2018 02:48:53 +0000 (18:48 -0800)]
Make field-names argument of condition-constructor be optional.
When that happens it uses the type's field-names value.
Chris Hanson [Wed, 14 Feb 2018 06:11:44 +0000 (22:11 -0800)]
Simplify slightly be introducing smap.
Chris Hanson [Wed, 14 Feb 2018 01:37:28 +0000 (17:37 -0800)]
decl-item doesn't need to be distinct from expr-item.
Chris Hanson [Tue, 13 Feb 2018 06:03:09 +0000 (22:03 -0800)]
Make sure history is correct for identifiers in declarations.
Plumb selectors through map-decl-ids and pass to procedure.
Chris Hanson [Tue, 13 Feb 2018 05:24:32 +0000 (21:24 -0800)]
Reorganize cold-load for syntax.
* Rename syntax-transforms to syntax-low.
* Move expander-item to syntax-low.
* Don't load syntax-items early in cold load.
* Move compile-expr-item to syntax-items.
Chris Hanson [Tue, 13 Feb 2018 04:50:20 +0000 (20:50 -0800)]
Bind classifiers directly into global environment.
Eliminates kludge of syntax-definitions.
Chris Hanson [Mon, 12 Feb 2018 06:48:57 +0000 (22:48 -0800)]
Eliminate compile-body-item and simplify.
Chris Hanson [Mon, 12 Feb 2018 06:20:27 +0000 (22:20 -0800)]
Minor tweaks to classifiers.
Chris Hanson [Mon, 12 Feb 2018 06:05:52 +0000 (22:05 -0800)]
Rename classify-body to classify-forms-in-order.
Also have it return a list of items rather than a seq-item.
Chris Hanson [Mon, 12 Feb 2018 05:42:10 +0000 (21:42 -0800)]
Some minor tweaks that were missed in earlier commits.
Chris Hanson [Mon, 12 Feb 2018 05:37:09 +0000 (21:37 -0800)]
Eliminate compiler items.
Chris Hanson [Mon, 12 Feb 2018 05:17:30 +0000 (21:17 -0800)]
Eliminate compiler->keyword.
Chris Hanson [Mon, 12 Feb 2018 05:09:55 +0000 (21:09 -0800)]
Eliminate the remaining three compilers.
Chris Hanson [Mon, 12 Feb 2018 04:51:48 +0000 (20:51 -0800)]
Change most of the "compilers" to "classifiers".
This is the first step in eliminating the idea of a "compiler".
Chris Hanson [Sun, 11 Feb 2018 07:18:18 +0000 (23:18 -0800)]
Insert a reduction step in the history when processing a closed subexpression.
Chris Hanson [Sun, 11 Feb 2018 07:14:18 +0000 (23:14 -0800)]
Implement history mechanism for syntax processor.
This mechanism keeps track of how each subexpression is derived from the larger
program, so that error messages can have that context.
The history isn't yet hooked up to anything; it's just being tracked. The next
step is to attach it to the syntax errors and change the error messages to
reveal that context.
Chris Hanson [Sun, 11 Feb 2018 01:55:28 +0000 (17:55 -0800)]
Make sure that host-adapter causes rebuild of toolchain.
Also always load the .scm file since the compiled files may be out of date.
Chris Hanson [Sun, 11 Feb 2018 01:37:08 +0000 (17:37 -0800)]
Rewrite this file to match current standards.
Chris Hanson [Sat, 10 Feb 2018 05:35:42 +0000 (21:35 -0800)]
Revert change that broke the build.
Chris Hanson [Sat, 10 Feb 2018 04:53:13 +0000 (20:53 -0800)]
Another small round of renaming.
Chris Hanson [Sat, 10 Feb 2018 04:48:23 +0000 (20:48 -0800)]
Eliminate now-unused output/lambda and rename output/{named-,}lambda.
Chris Hanson [Sat, 10 Feb 2018 04:45:58 +0000 (20:45 -0800)]
Some minor cleanups.
Chris Hanson [Sat, 10 Feb 2018 04:37:06 +0000 (20:37 -0800)]
Downcase explicit arguments to syntax-check and syntax-match?.
Also replace '(keyword ...) -> '(_ ...) in syntax-check patterns.
Chris Hanson [Sat, 10 Feb 2018 04:24:38 +0000 (20:24 -0800)]
Implement classify-form-cXr to simplify code slightly.
This will be more important when history is added.
Chris Hanson [Sat, 10 Feb 2018 04:17:29 +0000 (20:17 -0800)]
Rename environment to senv in mit-syntax.
Chris Hanson [Sat, 10 Feb 2018 04:12:04 +0000 (20:12 -0800)]
Eliminate classify-expr.
Chris Hanson [Fri, 9 Feb 2018 04:39:12 +0000 (20:39 -0800)]
A big round of renamings.
Chris Hanson [Thu, 8 Feb 2018 07:34:00 +0000 (23:34 -0800)]
Change predicate dispatchers to use dispatch cache.
Chris Hanson [Wed, 7 Feb 2018 06:45:14 +0000 (22:45 -0800)]
Eliminate keyword-value-item.
Chris Hanson [Wed, 7 Feb 2018 06:31:46 +0000 (22:31 -0800)]
A bunch of renames to eliminate weird "/" phase of mine.
Chris Hanson [Wed, 7 Feb 2018 04:48:53 +0000 (20:48 -0800)]
Collapse syntax, syntax-classify, and syntax-compile into one file.
Chris Hanson [Wed, 7 Feb 2018 04:22:16 +0000 (20:22 -0800)]
Make comment in identifier=? more comprehensive.
Chris Hanson [Sat, 3 Feb 2018 08:18:48 +0000 (00:18 -0800)]
Move the higher-level senv procedures into syntax-environments.
* Clean up the high-level interface, making arg order consistent.
* Rename syntactic-environment->environment as syntactic-environment->runtime.
* Eliminate ->syntactic-environment in favor of runtime-environment->syntactic.
* Rename syntactic-environment/top-level? to top-level-syntactic-environment?.
* Export closed-identifier? to (runtime syntax).
Chris Hanson [Fri, 2 Feb 2018 05:56:41 +0000 (21:56 -0800)]
Implement better pp support for syntactic environments.
This should be a standard pattern: what's interesting in these bundles of
procedures isn't the procedures themselves, but rather the state they are
carrying around.
Chris Hanson [Fri, 2 Feb 2018 05:55:33 +0000 (21:55 -0800)]
Don't generate keyword-value-item except at top level.
They aren't needed for internal environments.
Chris Hanson [Fri, 2 Feb 2018 05:55:07 +0000 (21:55 -0800)]
Handle define-syntax better when unsyntaxing.
Chris Hanson [Fri, 2 Feb 2018 05:54:55 +0000 (21:54 -0800)]
Fix test broken by earlier change.
Chris Hanson [Thu, 1 Feb 2018 08:02:24 +0000 (00:02 -0800)]
Eliminate another empty file.
Chris Hanson [Thu, 1 Feb 2018 07:00:33 +0000 (23:00 -0800)]
Simplify how runtime syntactic environments are created.
No more layering of top-level environments over one another, or of top-level
environments over runtime environments -- a top-level environment IS a runtime
environment.
Chris Hanson [Thu, 1 Feb 2018 07:00:26 +0000 (23:00 -0800)]
Don't use syntactic enviroment to indirectly bind global macros.
Chris Hanson [Thu, 1 Feb 2018 07:00:16 +0000 (23:00 -0800)]
Remove empty file.
Chris Hanson [Tue, 30 Jan 2018 06:54:14 +0000 (22:54 -0800)]
Add bindings for the block-declaration renames.
Chris Hanson [Tue, 30 Jan 2018 06:32:09 +0000 (22:32 -0800)]
Change declaration processing to decouple it from open blocks.
Chris Hanson [Tue, 30 Jan 2018 05:43:28 +0000 (21:43 -0800)]
Rename block-declaration -> scode-block-declaration and move to "scode".
Chris Hanson [Tue, 30 Jan 2018 05:32:43 +0000 (21:32 -0800)]
Change seq-item to flatten its arguments.
Also rename flatten-seq-items to flatten-items.
Chris Hanson [Tue, 30 Jan 2018 05:08:54 +0000 (21:08 -0800)]
A large number of renames for syntax items.
Chris Hanson [Tue, 30 Jan 2018 04:22:56 +0000 (20:22 -0800)]
Eliminate unnecessary condition.
Chris Hanson [Tue, 30 Jan 2018 03:24:31 +0000 (19:24 -0800)]
Don't use binding-item for LET bindings.
Chris Hanson [Mon, 29 Jan 2018 00:47:37 +0000 (16:47 -0800)]
Change syntactic environments to be records rather than bundles.
It's not using the bundle functionality so there's no advantage.
Chris Hanson [Mon, 29 Jan 2018 00:47:12 +0000 (16:47 -0800)]
Change define-bundle-interface to use quote-identifier.
Chris Hanson [Sun, 28 Jan 2018 23:36:17 +0000 (15:36 -0800)]
Implement quote-identifier, which is needed for macro-generating macros.
I'm not entirely happy with this; it feels like a wart. But I don't see an
alternative at the moment.
Chris Hanson [Sun, 28 Jan 2018 22:50:33 +0000 (14:50 -0800)]
Rename combinator-substitution -> list-substitution.
Chris Hanson [Sun, 28 Jan 2018 01:18:11 +0000 (17:18 -0800)]
Fix but: top-level definition names must be symbols.
Chris Hanson [Sat, 27 Jan 2018 05:42:35 +0000 (21:42 -0800)]
Disallow runtime environments in make-syntactic-environment.
Chris Hanson [Sat, 27 Jan 2018 05:09:40 +0000 (21:09 -0800)]
Simplify the rename-db implementation.
Chris Hanson [Sat, 27 Jan 2018 04:36:16 +0000 (20:36 -0800)]
Eliminate synthetic identifiers.
Now identifiers are either symbols or closures over symbols. Any operation on a
closed identifier redirects to the appropriate environment, rather than trying
to bind and/or lookup the closure itself in the environment.
This greatly simplifies the identifier model, and makes the operation of the
syntax processor much clearer.
Chris Hanson [Fri, 26 Jan 2018 07:14:31 +0000 (23:14 -0800)]
Change compile-item/expression to be a predicate dispatcher.
Also, a bunch of small changes, mostly cleanups and simplification.
Chris Hanson [Fri, 26 Jan 2018 06:16:26 +0000 (22:16 -0800)]
Simplify interface to syntax renaming.
Chris Hanson [Fri, 26 Jan 2018 06:11:02 +0000 (22:11 -0800)]
Reorganize the code within syntax-rename. No other changes.
Chris Hanson [Fri, 26 Jan 2018 06:06:00 +0000 (22:06 -0800)]
Split renaming mechanism out of syntax-output.
Chris Hanson [Fri, 26 Jan 2018 05:52:16 +0000 (21:52 -0800)]
Eliminate open-block-components and rename other procedures to include "scode".
Chris Hanson [Fri, 26 Jan 2018 04:56:45 +0000 (20:56 -0800)]
Refactor the syntax-output codewalkers to use predicate dispatchers.
Chris Hanson [Fri, 26 Jan 2018 04:32:11 +0000 (20:32 -0800)]
Make sure the open-block tag is computed correctly.
Chris Hanson [Fri, 26 Jan 2018 04:07:40 +0000 (20:07 -0800)]
Use keyword syntactic environment to implement keywords.
Chris Hanson [Fri, 26 Jan 2018 04:05:28 +0000 (20:05 -0800)]
Introduce syntactic-environment/reserve to handle common case.
This also means that syntactic-environment/define is only used for keyword
items.
Chris Hanson [Fri, 26 Jan 2018 03:57:18 +0000 (19:57 -0800)]
Rename accessors for syntactic closures.
Chris Hanson [Fri, 26 Jan 2018 03:52:19 +0000 (19:52 -0800)]
Make sure that scode object tags are correctly computed.
Chris Hanson [Thu, 25 Jan 2018 21:57:51 +0000 (13:57 -0800)]
Add missing rename to host-adapter. Thanks Joe Marshall for another catch.
Chris Hanson [Wed, 24 Jan 2018 08:07:59 +0000 (00:07 -0800)]
Greatly simplify SCode abstraction and change names to contain "scode".
Also remove all FOO-components and FOO-subexpressions procedures.
More work remains: the lambda abstraction is an unholy mess and needs to be
cleaned up. The scan-defines stuff also merits some consideration.
Chris Hanson [Tue, 23 Jan 2018 08:13:22 +0000 (00:13 -0800)]
Eliminate unused import from compiler C backend.
Chris Hanson [Tue, 23 Jan 2018 08:11:39 +0000 (00:11 -0800)]
Rename file "ustring" to "string" and update package name too.
Chris Hanson [Tue, 23 Jan 2018 08:06:06 +0000 (00:06 -0800)]
Large number of file renames.
Also deletes a few unused files.
Chris Hanson [Tue, 23 Jan 2018 06:43:03 +0000 (22:43 -0800)]
Merge gensym into symbol and add mutex for its counter.
Chris Hanson [Tue, 23 Jan 2018 06:42:09 +0000 (22:42 -0800)]
Don't use vertical brackets when unparsing uninterned symbol.
Chris Hanson [Tue, 23 Jan 2018 06:40:58 +0000 (22:40 -0800)]
Move fixart and thread-low to earlier in the cold load.
Chris Hanson [Tue, 23 Jan 2018 02:33:59 +0000 (18:33 -0800)]
Eliminate long-obsolete starbase support.
Chris Hanson [Tue, 23 Jan 2018 02:32:44 +0000 (18:32 -0800)]
Add a few missing subdirs into Tags.sh computation.
Chris Hanson [Mon, 22 Jan 2018 03:16:56 +0000 (19:16 -0800)]
Rewrite syntax-environment to use bundles.
Chris Hanson [Mon, 22 Jan 2018 01:06:03 +0000 (17:06 -0800)]
Allow bare symbols as elements in bundle-interface specification.
Chris Hanson [Sun, 21 Jan 2018 23:56:03 +0000 (15:56 -0800)]
Fix bug: bundle-interface predicates can't use dispatch-tag<= during cold load.
I don't think they need to do this anyway, since inheritance isn't part of this
design.
Chris Hanson [Sun, 21 Jan 2018 23:40:16 +0000 (15:40 -0800)]
Push yet more predicate machinery into boot.
Chris Hanson [Sun, 21 Jan 2018 22:04:17 +0000 (14:04 -0800)]
Rename value-binder to variable-binder.
Chris Hanson [Sun, 21 Jan 2018 22:01:03 +0000 (14:01 -0800)]
Move bundle implementation to early in the cold load.
Chris Hanson [Sun, 21 Jan 2018 21:27:16 +0000 (13:27 -0800)]
Add unparser for variable items.
Taylor R Campbell [Sun, 21 Jan 2018 15:52:51 +0000 (15:52 +0000)]
Avoid shift of negative, which is undefined in C.
Chris Hanson [Sun, 21 Jan 2018 09:30:29 +0000 (01:30 -0800)]
Eliminate unnecessary implementation note.
I may change the implementation in the near future.
Chris Hanson [Sun, 21 Jan 2018 09:28:41 +0000 (01:28 -0800)]
Defer enabling runtime handling of errors until end of cold load.
Otherwise, once the error system is initialized, a subsequent cold-load error
causes an infinite loop. At least this way there's some information about what
went wrong.
Chris Hanson [Sat, 20 Jan 2018 21:01:00 +0000 (13:01 -0800)]
Fix typo reported by jmarshall.
Chris Hanson [Sat, 20 Jan 2018 05:36:13 +0000 (21:36 -0800)]
Tweak bundle index lookup; fix bundle tests.
Chris Hanson [Sat, 20 Jan 2018 05:23:08 +0000 (21:23 -0800)]
Refactor the bundle implementation.
* The interface is now the predicate rather than the tag.
* New procedures bundle-constructor and bundle-accessor.
* define-bundle-interface generates a BOA constructor and uses it.
Chris Hanson [Sat, 20 Jan 2018 04:01:56 +0000 (20:01 -0800)]
Rewrite define-like and let-like syntax for simplicity.
Chris Hanson [Sat, 20 Jan 2018 04:01:40 +0000 (20:01 -0800)]
Two small simplifications.
Chris Hanson [Sat, 20 Jan 2018 04:01:25 +0000 (20:01 -0800)]
Eliminate null-binding-item.
Chris Hanson [Sat, 20 Jan 2018 04:00:52 +0000 (20:00 -0800)]
Fix bug: Can't call output/sequence with an empty list.
Chris Hanson [Sat, 20 Jan 2018 03:58:48 +0000 (19:58 -0800)]
Rewrite define-bundle-interface to do renaming manually.
Automatic renamer was clumsy and error-prone.
Chris Hanson [Sat, 20 Jan 2018 03:58:07 +0000 (19:58 -0800)]
Fix bug: trace was depending on a string being mutable when it wasn't.
Chris Hanson [Fri, 19 Jan 2018 04:58:14 +0000 (20:58 -0800)]
Be a little more honest about unsyntaxing macro definitions.
Chris Hanson [Fri, 19 Jan 2018 02:26:32 +0000 (18:26 -0800)]
Refactor bundle interfaces to be dispatch tags.
Also add some unit tests.