こんなマクロを定義する。
{define-macro public {with-line ?v:verbatim}
{return
{expand-template
{let
?={expand-template line}: int = 0,
?={expand-template pc}:int = 0,
?={expand-template jump}:int = 0
}
{while true do
{value ?v}
{break}
}
}
}
}
{define-macro public {line-num ?n:expression ?v:verbatim}
{return
{expand-template
{set ?={expand-template line} = ?n}
{if ?={expand-template line} >= ?={expand-template jump} then
set ?={expand-template pc} = ?={expand-template line}
{value ?v}
}
}
}
}
{define-macro public {go-to ?n:expression}
{return
{expand-template
set ?={expand-template jump} = ?n
{continue}
}
}
}
gotoができる
{with-line
{line-num 10 {output "aaa"}}
{line-num 20 {go-to 50}}
{line-num 30 {output "bbb"}}
{line-num 32 {go-to 40}}
{line-num 35 {output {dada}}}
{line-num 40 {output "ccc"}}
{line-num 45 {go-to 70}}
{line-num 50 {output "ddd"}}
{line-num 60 {go-to 30}}
{line-num 70 {output "eee"}}
{line-num 80 {output "fff"}}
}