Ryan Culpepper
1e0eb983a9
syntax/parse template: reorganize code, update comments
2018-01-18 16:59:26 +01:00
Ryan Culpepper
f8e01d52c6
syntax/parse template: encourage inlining of template combinators
...
With inlining, the optimizer can turn templates into mostly
first-order code.
2018-01-18 16:59:26 +01:00
Ryan Culpepper
034cde0a97
syntax/parse template: track syntax vs non-syntax pairs in template
...
Allows generation of more specialized code (hopefully smaller
and faster).
Also clean up some other guide reps.
2018-01-18 16:59:26 +01:00
Ryan Culpepper
a827322128
syntax/parse template: change run-time strategy
...
Instead of doing run-time interpretation of a "guide" tree,
generate code for procedure (using stx -> stx combinators).
2018-01-18 16:59:10 +01:00
Ryan Culpepper
1795b7af5f
syntax/parse template: remove syntax-property handling
...
Since template was written, Racket has added a notion of preserved
syntax properties.
2018-01-18 15:01:28 +01:00
Ryan Culpepper
f97039fb1f
syntax/parse: improve stxclass arity mismatch error messages
2018-01-18 15:01:16 +01:00
Ryan Culpepper
f238a16fbc
syntax/parse: add ~or* and ~alt, like ~or{S,H} and ~or{EH}, respectively
2018-01-18 14:59:28 +01:00
Ryan Culpepper
fc25ef0323
support string, bytes (bindings from racket) as stxclass refs
...
add compile-time table as alternative to stxclass binding
2018-01-18 14:58:31 +01:00
Ryan Culpepper
2c1a36f55f
syntax/parse: clean up "at"/"within"-term handling
...
Added comments and examples about "at" and "within" terms
Fixed ps->stx+index bugs related to struct and vector patterns
2018-01-18 14:56:26 +01:00
Ryan Culpepper
2de80c8091
syntax/parse: fix ps->stx+index; fixes #1602
...
Collapse CDR frames separated by ORD, POST, etc. For example,
(1 ORD 2 stx) should be same as (3 stx).
2018-01-18 14:56:09 +01:00
Georges Dupéron
6ac55c8e72
Applied changes requested by @rmculpepper for PR #1587
2018-01-18 14:55:58 +01:00
Georges Dupéron
2aece162a9
Fixes several issues with syntax/parse, and adds some tests.
...
* byte-regexp? values should not be considered 3D syntax.
* hash? values are now allowed in serialized syntax properties with (template … #:properties (…))
* marshalling properties which were prefab structs called map on the result of struct->vector, changed it to struct->list as the struct "name" is always serializable.
2018-01-18 14:54:40 +01:00
Georges Dupéron
1b4cb7722e
Tweak title to include mentions of syntax-parse and syntax-case.
2017-12-21 23:25:27 +01:00
Matthew Butterick
164df4a597
Shorten title
...
The title is currently the longest in Racketland, and doesn’t display well on the TOC of the docs.
2017-12-18 10:42:30 -08:00
Georges Dupéron
c5df776e82
Partial inclusion of upstream changes, to avoid a compilation error.
2017-09-01 13:55:02 +02:00
Georges Dupéron
b564f76228
Added reference to the new syntax/parse bindings ~or* and ~alt
2017-06-30 12:32:26 +02:00
Georges Dupéron
dcc3f1d758
Fixed error message
2017-06-08 23:46:39 +02:00
Georges Dupéron
bb7b5e9a7d
Documented all overridden identifiers.
2017-02-07 23:09:56 +01:00
Georges Dupéron
1d529a3065
Added docs for define-template-metafunction
2017-02-04 07:34:55 +01:00
Georges Dupéron
23c221f862
Improved documentation
2017-02-04 04:31:22 +01:00
Georges Dupéron
8b2fa5e5c2
Fixed typo #%intef-begin → #%intdef-begin
2017-02-03 15:34:12 +01:00
Georges Dupéron
21ee81c841
Require auto-syntax-e in residual. Provide template-metafunction?
2017-02-03 10:17:55 +01:00
Georges Dupéron
40b7e813e7
Disable code coverage, as it does not work on this repo
2017-02-01 08:11:18 +01:00
Georges Dupéron
25ed9ec068
Integrate auto-syntax-e, as this needs a deep modification in the syntax-mapping struct
2017-02-01 08:01:18 +01:00
Georges Dupéron
0029c1acbf
Fixed define-pvars (was not defining the unique-at-runtime variables)
2017-01-28 05:17:32 +01:00
Georges Dupéron
81a05e6ff3
Improved coverage
2017-01-28 05:17:00 +01:00
Georges Dupéron
82547e2960
Run tests properly (without -x), and avoid OOM on Travis.
2017-01-28 05:17:00 +01:00
Georges Dupéron
c259afbe61
Removed parse/private/keywords.rkt, to improve compatibility with the official syntax/parse (that file defines ~optional etc.)
2017-01-28 05:16:59 +01:00
Georges Dupéron
bff27464a9
Bugfix and tests for define/with-syntax
2017-01-28 05:16:58 +01:00
Georges Dupéron
ad27231d00
Support #:properties on all four of (quasi)template(/loc), instead of just template.
2017-01-28 05:16:57 +01:00
Georges Dupéron
de60a419e2
Cherry-pick PR #1514 : Added a syntax-local-template-metafunction-introduce function, so that template metafunctions can be unhygienic if necessary.
2017-01-28 05:16:57 +01:00
Georges Dupéron
64edde1f2d
Re-add syntax/parse/experimental/private/substitute, so that we can apply PR #1514
2017-01-28 05:16:56 +01:00
Georges Dupéron
dade971dd6
added current-pvars+unique
2017-01-28 05:16:55 +01:00
Georges Dupéron
55e5934598
Fixed docs for (define-pvars (pvar ...)), should be (define-pvars pvar ...)
2017-01-28 05:16:54 +01:00
Georges Dupéron
d64058ce51
Skip build on versions < 6.8, as they use a different internal representation in syntax/parse, and we want to share the same structs to have some compatibility between syntax/parse and stxparse-info/parse
2017-01-28 05:16:52 +01:00
Georges Dupéron
5d2f8cc512
Partially reverted previous commit.
2017-01-28 05:16:51 +01:00
Georges Dupéron
29c90350b2
Failed attempt at making metafunctions from syntax/parse/experimental/template and stxparse-info/parse/experimental/template compatible. I can manage to extract the binding from syntax/parse/…, but it seems to recognize a different struct (e.g. as if they were struct instances from two different phases)
2017-01-28 05:16:50 +01:00
Georges Dupéron
5be04ef8fd
Removed all structure definitions from the copy of syntax/parse, and used the ones definied in the official syntax/parse
2017-01-28 05:16:48 +01:00
Georges Dupéron
e117e4f919
Modified syntax-case & friends to use with-pvars. Closes 181 current-pvars: use in syntax-case, with-syntax, define/with-syntax, is there any with-parse?
2017-01-28 05:16:48 +01:00
Georges Dupéron
22053c0e0b
Changed syntax-case module paths to point back to racket/private/… for files which were not copied.
2017-01-28 05:16:46 +01:00
Georges Dupéron
ea44edde13
Imported more files from 28f1df4cff
2017-01-28 05:16:44 +01:00
Georges Dupéron
1ee830a59e
Fallback for v6.3 which lacks scribble/example
2017-01-28 05:16:44 +01:00
Georges Dupéron
9db3ca62f8
Documented define-pvars; Add the identifiers in reverse order as noted in the documentation.
2017-01-28 05:16:43 +01:00
Georges Dupéron
41634ba262
Attempt to fix residual bug
2017-01-28 05:16:42 +01:00
Georges Dupéron
c42aef881c
Support for define/syntax-parse, including when there are multiple defines. Search for the most up-to-date list of current-pvars is done by performing a dichotomy over a set of sequentially numbered current-pvars-paramNNN. Closes FB case 180.
2017-01-28 05:16:41 +01:00
Georges Dupéron
9a7e7422eb
Typo in documentation
2017-01-28 05:16:41 +01:00
Georges Dupéron
cc475654b4
Don't run versions < 6.3, as recent implementations of syntax-parse seem to have some small incompatibilities (e.g. racket/struct is missing from old Racket versions)
2017-01-28 05:16:40 +01:00
Georges Dupéron
9bfa089c45
Bugfix: with-pvars must be called after binding the pvar, not before.
2017-01-28 05:16:38 +01:00
Georges Dupéron
45003e6e42
Implemented current-pvars
2017-01-28 05:16:36 +01:00
Georges Dupéron
6a8ffed720
Fix dependency
2017-01-28 05:16:35 +01:00