Path: Module for Substitutions within S-expressions
type el
=
Type of substitution elements
val parse : string ‑> t
parse str
returns a substitution path represented by string str
.
Syntax:
"." -> separates path elements; must be present at start of string.
"[4]" -> specifies the 4th element in a tuple.
"some_tag[4]" ->
tries to match some_tag
, then denotes its 4th argument.
"name" ->
denotes record field having name
Example from test code:
".t.x.B1
" -> choose record field with name t
, then subfield
x
. Match this value against B
, and denote its first argument.
get ?path ?str sexp
if path
is provided, use it as path.
Otherwise, if str
is provided, parse it as a path. If neither
is provided, assume an empty path. returns the sub-expression from
S-expression sexp
denoted by the path.
replace ?path ?str sexp ~subst
like get
, but does not extract
a sub-expression but substitutes it with subst
. returns resulting
S-expression.
replace_no_path ~str sexp ~subst
like replace
, but does not take
optional arguments. str
must be specified.
subst_path sexp path
returns the tuple (subst, sub)
, where subst
is a function that returns an S-expression in which the subexpression
denoted by path
in sexp
has been substituted by its argument.
sub
is the denoted subexpression. Note that subst sub = sexp
.
extract_pos n sexp
returns the tuple (subst, sub)
, where subst
is a function that returns an S-expression in which the subexpression
denoted at position n
in sexp
, which must be a list, has been
substituted by value
if the optional argument is Some value
, or
removes the denoted subexpression if the optional argument is None
.
sub
is the denoted subexpression. Note that subst (Some sub) =
sexp
.
extract_match tag n sexp
returns the tuple (subst, sub)
, where
subst
is a function that returns an S-expression in which the
subexpression denoted by matching tag
and taking its n
th argument
in sexp
has been substituted by value
if the argument is Some
value
, or removes the denoted subexpression if the optional argument
is None
. sub
is the denoted subexpression. Note that subst
(Some sub) = sexp
.
extract_rec name sexp
returns the tuple (subst, sub)
, where
subst
is a function that returns an S-expression in which the
subexpression denoted by matching field name name
in sexp
has
been substituted by its argument. sub
is the denoted subexpression.
Note that subst (Some sub) = sexp
.