(require mzlib/awk) | package: compatibility-lib |
syntax
(awk next-record-expr (record field-id ...) maybe-counter ((state-variable init-expr) ...) maybe-continue clause ...)
maybe-counter =
| id maybe-continue =
| 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 awk macro from Scsh [Shivers06]. In addition to
awk, the Scsh-compatible procedures match:start,
match:end, match:substring, and regexp-exec
are defined. These match: procedures must be used to
extract match information in a regular expression clause when using
the => form.
procedure
(match:start rec [which]) → exact-nonnegative-integer?
rec : .... which : exact-nonnegative-integer? = 0
procedure
(match:end rec [which]) → exact-nonnegative-integer?
rec : .... which : exact-nonnegative-integer? = 0
procedure
(match:substring rec [which]) → string?
rec : .... which : exact-nonnegative-integer? = 0
Extracts a start position, end position, or substring corresponding to
a match. The first argument is the value supplied to the procedure
after => in a awk clause or the result of
regexp-exec.
Matches a regexp to a string, returning a record compatible with
match:start, etc.