将埃菲尔循环翻译成不支持循环的语言 invariants/variants
Translating Eiffel loops to languages that do not support loop invariants/variants
Eiffel 中的循环遵循以下格式:
from
Init
invariant
Invariant
until
Exit
variant
Variant
loop
Body
end
如何将上述 Eiffel 伪代码翻译成不支持循环的语言 invariants/variants?让我们假设这样的目标语言有一个 assert
指令来检查 invariant/variant.
看起来像这样:
Init
last := infinity
loop
assert (Invariant)
next := Variant
assert (0 <= next and next < last)
last := next
if Exit then
break
end
Body
end
Eiffel 中的循环遵循以下格式:
from
Init
invariant
Invariant
until
Exit
variant
Variant
loop
Body
end
如何将上述 Eiffel 伪代码翻译成不支持循环的语言 invariants/variants?让我们假设这样的目标语言有一个 assert
指令来检查 invariant/variant.
看起来像这样:
Init
last := infinity
loop
assert (Invariant)
next := Variant
assert (0 <= next and next < last)
last := next
if Exit then
break
end
Body
end