compatibility/compatibility-doc/mzlib/scribblings/awk.scrbl
2014-12-02 09:43:08 -05:00

70 lines
2.2 KiB
Racket

#lang scribble/doc
@(require "common.rkt"
(for-label mzlib/awk
scheme/contract))
@mzlib[#:mode title awk]
@defform/subs[
#:literals (after range / => :range range: :range: else)
(awk next-record-expr
(record field-id ...)
maybe-counter
((state-variable init-expr) ...)
maybe-continue
clause ...)
([maybe-counter code:blank
id]
[maybe-continue code:blank
id]
[clause (test body ...+)
(test => procedure-expr)
(/ regexp-str / (id-or-false ...+) body ...+)
(range excl-start-test excl-stop-test body ...+)
(:range incl-start-test excl-stop-test body ...+)
(range: excl-start-test incl-stop-test body ...+)
(:range: incl-start-test incl-stop-test body ...+)
(else body ...+)
(after body ...+)]
[test integer
regexp-string
expr]
[excl-start-test test]
[excl-stop-test test]
[incl-start-test test]
[incl-stop-test test]
[id-or-false id
#f])]{
The @racket[awk] macro from Scsh @cite["Shivers06"]. In addition to
@racket[awk], the Scsh-compatible procedures @racket[match:start],
@racket[match:end], @racket[match:substring], and @racket[regexp-exec]
are defined. These @racketidfont{match:} procedures must be used to
extract match information in a regular expression clause when using
the @racket[=>] form. }
@deftogether[(
@defproc[(match:start [rec ....]
[which exact-nonnegative-integer? 0])
exact-nonnegative-integer?]
@defproc[(match:end [rec ....]
[which exact-nonnegative-integer? 0])
exact-nonnegative-integer?]
@defproc[(match:substring
[rec ....]
[which exact-nonnegative-integer? 0])
string?]
)]{
Extracts a start position, end position, or substring corresponding to
a match. The first argument is the value supplied to the procedure
after @racket[=>] in a @racket[awk] clause or the result of
@racket[regexp-exec].}
@defproc[(regexp-exec [re (or/c string? regexp?)] [s string?])
(or/c .... false/c)]{
Matches a regexp to a string, returning a record compatible with
@racket[match:start], etc.}