Skip to content
Snippets Groups Projects
Verified Commit 12f2d6df authored by Mikhail Eremeev's avatar Mikhail Eremeev
Browse files

fix(Module8): run "repeat" statement until expr is zero

parent bf484c79
Branches master
No related merge requests found
Pipeline #5732 passed with warnings with stages
in 6 minutes and 59 seconds
......@@ -128,7 +128,6 @@ namespace SimpleLang.Visitors
public override void VisitRepeatNode(RepeatNode r)
{
var beginRepeat = genc.DefineLabel();
var endRepeat = genc.DefineLabel();
genc.MarkLabel(beginRepeat);
......@@ -136,15 +135,7 @@ namespace SimpleLang.Visitors
r.Expr.Visit(this); // вычислить постусловие
genc.Emit(OpCodes.Ldc_I4_0);
/*
вообще переход должен осуществляться к метке beginRepeat
но тест составлен криво
поэтому цикл repeat until работает как цикл do while
*/
genc.Emit(OpCodes.Beq, endRepeat); // проверить постусловие
genc.Emit(OpCodes.Br, beginRepeat);
genc.MarkLabel(endRepeat);
genc.Emit(OpCodes.Beq, beginRepeat); // проверить постусловие
}
public override void VisitBlockNode(BlockNode bl)
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment