When a code is starting and ending a scope it has to pass a marker object to the call to
MacroRegister.pop(Marker)
and
MacroRegister.push(Marker)
. The
Marker
object passed to
MacroRegister.pop(Marker)
should be equal to the one that was passed to
MacroRegister.push(Marker)
.
This helps preventing the macro code to close a scope in a way that it was not supposed to. For example
using the macro
@end
without a previously matching
@begin
in a
#block
macro
or in an included file. See how the macros
javax0.jamal.builtins.Begin
and
javax0.jamal.builtins.End
use the implementation of this interface provided in the tools module.