こんなマクロを定義する。
{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"}} }