forked from Wouterdek/NodeNetwork
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathForLoop.cs
More file actions
34 lines (28 loc) · 1.02 KB
/
ForLoop.cs
File metadata and controls
34 lines (28 loc) · 1.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ExampleCodeGenApp.Model.Compiler;
namespace ExampleCodeGenApp.Model
{
public class ForLoop : IStatement
{
public IStatement LoopBody { get; set; }
public IStatement LoopEnd { get; set; }
public ITypedExpression<int> LowerBound { get; set; }
public ITypedExpression<int> UpperBound { get; set; }
public InlineVariableDefinition<int> CurrentIndex { get; } = new InlineVariableDefinition<int>();
public string Compile(CompilerContext context)
{
context.EnterNewScope("For loop");
CurrentIndex.Value = LowerBound;
string code = $"for {CurrentIndex.Compile(context)}, {UpperBound.Compile(context)} do\n" +
LoopBody.Compile(context) + "\n" +
$"end\n" +
LoopEnd.Compile(context) + "\n";
context.LeaveScope();
return code;
}
}
}