-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMain.cs
56 lines (51 loc) · 1.73 KB
/
Main.cs
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// ROBOLOGO
// Copyright (C) 2011 [email protected]
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using RoboLogo.Lang;
using System;
using System.Collections;
using System.Collections.Generic;
namespace RoboLogo {
class MainClass {
public static void Main (string[] args) {
var compiler = new InstructionParser() {
setColorAction = arg => Console.WriteLine("Setting Color to {0}", arg),
setThicknessAction = arg => Console.WriteLine("Setting Thickness to {0}", arg),
setStrokeAction = arg => { if (arg!=0) { Console.WriteLine("Stroke ON"); } else { Console.WriteLine("Stroke OFF"); } },
moveAction = arg => Console.WriteLine("Moving {0} Units", arg),
turnAction = arg => Console.WriteLine("Turning {0} Degrees", arg),
};
var program = compiler.Parse(@"
X = (10+32)
repeat 2 times
set color to blue
set thickness to 10
start stroke
move forward X
turn left
move backward 5
stop stroke
end
if 0
move forward 100
else
move backward 100
end
");
var interpreter = new Interpreter(program);
while(interpreter.ExecuteNextInstruction()) {}
}
}
}