Matches match pathmatch
Syntas
Match =
     Source ":" Pattern [ Rest ].
Evaluation

The evaluation of a path S : P R proceeds as follows. The source S is evaluated and a ground expression Ge obtained is matched against the pattern P to produce a sequence of the variants of matching. Then an attempt is made to find the first variant of matching appearing in this sequence such that the evaluation of the rest R succeeds.

If the rest R is an empty delimited path (which always returns an empty ground expression), it may be omitted.

To describe the semantics of matches, we need the following notation. A judgment EnvList,m,St ||- Q => X,St' means that the evaluation of the path Q at the level m with the list of environments EnvList returns X.

Env,m,St |- Q => Ge,St' ---------------------------------- [Env]^EnvList,m,St ||- Q => Ge,St' Env,m,St |- Q => $fail(0),St' EnvList,m,St' ||- Q => X,St'' ---------------------------------- [Env]^EnvList,m,St ||- Q => X,St'' Env,m,St |- Q => $fail(k+1),St' ------------------------------------------ [Env]^EnvList,m,St ||- Q => $fail(k+1),St' Env,m,St |- Q => $error(Ge),St' ------------------------------------------ [Env]^EnvList,m,St ||- Q => $error(Ge),St' [],m,St ||- Q => $fail(0),St.

Now we describe the semantics of matches.

S : P =>=> S : P , Env,0,St |- S => Ge,St' Env |- Ge : P => EnvList EnvList,m,St' ||- R => X,St'' ----------------------------- Env,m,St |- S : P R => X,St'' Env,0,St |- S => $fail(k),St' ----------------------------------- Env,m,St |- S : P R => $fail(0),St' Env,0,St |- S => $error(Ge),St' ------------------------------------- Env,m,St |- S : P R => $error(Ge),St'
Examples

The evaluation of the following path fails, which results in the character string 'CBA' being printed: 'ABC' : $r e sX e, <Print sX> $fail