Like https://github.com/AlexKnauth/seq-no-order, but provides global constraints. AlexKnauth's implementation allows dotted "rest" pattern which we do not support.
Go to file
2021-04-04 15:48:06 +01:00
private Fixed ~maybe/empty 2016-10-01 00:16:17 +02:00
scribblings Changed my name :) 2021-03-04 20:39:27 +00:00
test Small improvements to wording in comments 2017-03-31 01:34:44 +02:00
.gitignore Created extensible-parser-specifications package 2016-08-26 23:59:07 +02:00
.travis.yml It seems that fancy-app broke compatibility with Racket < 7.0, removing those versions from .travis-ci.yml and adding some new ones. 2021-04-04 15:48:06 +01:00
info.rkt Changed my name :) 2021-03-04 20:39:27 +00:00
LICENSE-more.md Changed my name :) 2021-03-04 20:39:27 +00:00
LICENSE.txt Switched license to CC0 2017-03-31 01:39:03 +02:00
main.rkt Small improvements to wording in comments 2017-03-31 01:34:44 +02:00
README.md Renamed main branch 2021-04-04 07:22:25 +01:00

Build Status, Coverage Status, Build Stats, Online Documentation, Unmaintained as of 2017 because syntax-parse is ill-fitted for this use, License: CC0 v1.0.

extensible-parser-specifications

Caveat: the mixins defined with define-eh-alternative-mixin cannot be provided and used in a separate module. Unfortunately, I cannot think of an acceptable fix for this problem, as solving this would require extracting parts of the mixin while preserving the bindings of some identifiers, but altering the bindings of others. This means that for the foreseeable future, once a mixin is defined, can only be used via ~mixin (or by directly invoking it) within the same module.

The regular and splicing syntax classes defined with #:define-syntax-class and #:define-splicing-syntax-class will work fine across module boundaries, however. Manually defined syntax classes, splicing syntax classes or ellipsis-head syntax classes will also work fine across module boundaries, even if they contain uses of ~no-order and ~seq-no-order, and even if those special forms contain uses of mixins defined within the same module. In other words, as long as a definition of a mixin and all its uses via ~mixin are within the same module, everything else should work without surprises.


Like https://github.com/AlexKnauth/seq-no-order, but provides global constraints. AlexKnauth's implementation allows dotted "rest" pattern which this implementation does not support.

This package is unstable, and its API may change at any moment. Once it is stable enough, it may be merged into Alex Knauth's implementation.

The following pattern expanders (and mixin expanders, see the docs) for syntax/parse are defined:

  • ~seq-no-order
  • ~no-order
  • ~post-check
  • ~post-fail
  • ~nop
  • ~optional/else
  • ~global-or
  • ~global-and
  • ~global-counter