...
This commit is contained in:
@@ -4,4 +4,8 @@ global func main() {
|
|||||||
if 3 / 3 == 1 {
|
if 3 / 3 == 1 {
|
||||||
puts("uwu");
|
puts("uwu");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while 1 == 1 {
|
||||||
|
puts("loop");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -176,9 +176,9 @@ public class Generator
|
|||||||
|
|
||||||
private void GenerateIf(IfNode ifStatement)
|
private void GenerateIf(IfNode ifStatement)
|
||||||
{
|
{
|
||||||
var trueLabel = GenName("if_true");
|
var trueLabel = GenName("true");
|
||||||
var endLabel = GenName("if_end");
|
var falseLabel = GenName("false");
|
||||||
var falseLabel = GenName("if_false");
|
var endLabel = GenName("endif");
|
||||||
|
|
||||||
var result = GenerateExpression(ifStatement.Condition);
|
var result = GenerateExpression(ifStatement.Condition);
|
||||||
_builder.AppendLine($" jnz {result}, @{trueLabel}, @{falseLabel}");
|
_builder.AppendLine($" jnz {result}, @{trueLabel}, @{falseLabel}");
|
||||||
@@ -233,9 +233,9 @@ public class Generator
|
|||||||
|
|
||||||
private void GenerateWhile(WhileNode whileStatement)
|
private void GenerateWhile(WhileNode whileStatement)
|
||||||
{
|
{
|
||||||
var conditionLabel = GenName("loop_condition");
|
var conditionLabel = GenName("condition");
|
||||||
var iterationLabel = GenName("loop_iteration");
|
var iterationLabel = GenName("iteration");
|
||||||
var endLabel = GenName("loop_end");
|
var endLabel = GenName("endloop");
|
||||||
|
|
||||||
_breakLabels.Push(endLabel);
|
_breakLabels.Push(endLabel);
|
||||||
_continueLabels.Push(conditionLabel);
|
_continueLabels.Push(conditionLabel);
|
||||||
@@ -613,11 +613,11 @@ public class Generator
|
|||||||
return $"%{output}";
|
return $"%{output}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GenName(string prefix = "var")
|
private string GenName(string prefix = "v")
|
||||||
{
|
{
|
||||||
var index = _prefixIndexes.GetValueOrDefault(prefix, 0);
|
var index = _prefixIndexes.GetValueOrDefault(prefix, 0);
|
||||||
_prefixIndexes[prefix] = index + 1;
|
_prefixIndexes[prefix] = index + 1;
|
||||||
return $"{prefix}_{index}";
|
return $"{prefix}{index}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Variable
|
private class Variable
|
||||||
|
|||||||
Reference in New Issue
Block a user