
Changed backtracking algorithm, runtime representations - syntax classes, ~describe no longer implicitly commit - ~describe no longer delimits effect of cut Added keyword & optional args for stxclasses Added ~do and #:do, ~post, ~commit and #:commit, ~delimit-cut and #:no-delimit-cut Added syntax/parse/debug, syntax/parse/experimental/* - expr/c for contracting macro sub-expressions moved from syntax/parse to syntax/parse/experimental/contract - syntax class reflection (~reflect, ~splicing-reflect) - eh-alternative-sets (~eh-var) - provide-syntax-class/contract (only for params, not attrs so far) Changed ~fail to not include POST progress (#:fail still does) old (~fail _) is now (~post (~fail _)) Made msg argument of ~fail optional Removed generic "repetition constraint violated" msg Removed atom-in-list stxclass Removed unnecessary datum->syntax on cdr of pair pattern massive improvements to long-list microbenchmarks Optimization: integrable syntax classes (id, expr, keyword) need better measurements Optimization: ad hoc elimination of head/tail choice point for (EH ... . ()) patterns Added unstable/wrapc (proc version of expr/c)
32 lines
1.1 KiB
Racket
32 lines
1.1 KiB
Racket
#lang scribble/doc
|
|
@(require scribble/manual
|
|
(for-label syntax/parse))
|
|
|
|
@title[#:tag "stxparse" #:style '(toc)]{Parsing and classifying syntax}
|
|
|
|
The @schememodname[syntax/parse] library provides a framework for
|
|
writing macros and processing syntax. The library provides a powerful
|
|
language of syntax patterns, used by the pattern-matching form
|
|
@scheme[syntax-parse] and the specification form
|
|
@scheme[define-syntax-class]. Macros that use @scheme[syntax-parse]
|
|
automatically generate error messages based on descriptions and
|
|
messages embedded in the macro's syntax patterns.
|
|
@defmodule[syntax/parse]
|
|
|
|
@local-table-of-contents[]
|
|
|
|
@include-section["parse/intro.scrbl"]
|
|
@include-section["parse/examples.scrbl"]
|
|
@include-section["parse/parsing.scrbl"]
|
|
@include-section["parse/patterns.scrbl"]
|
|
@include-section["parse/litconv.scrbl"]
|
|
@include-section["parse/lib.scrbl"]
|
|
|
|
@;{Description of how error reporting works}
|
|
@;{and designing for good errors}
|
|
|
|
@;{Cut and Commit for efficiency and error reporting.}
|
|
|
|
@include-section["parse/debug.scrbl"]
|
|
@include-section["parse/experimental.scrbl"]
|