-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
90 lines (84 loc) · 3.43 KB
/
Program.cs
File metadata and controls
90 lines (84 loc) · 3.43 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using KiiLang;
using KiiLang.Execution;
// Set operators up
ParserHelper.ops.Add("=", true);
ParserHelper.ops.Add("-", true);
ParserHelper.ops.Add("len", false);
ParserHelper.ops.Add("==", true);
ParserHelper.ops.Add("runif", true);
// Add operators
Operators.ops.Add("+", new AddOperator());
Operators.ops.Add("-", new SubtractOperator());
Operators.ops.Add("=", new AssignOperator());
Operators.ops.Add("#=", new AssignStaticOperator());
Operators.ops.Add("+=", new AssignAddOperator());
Operators.ops.Add("-=", new AssignSubtractionOperator());
Operators.ops.Add("*=", new AssignMultiplyOperator());
Operators.ops.Add("/=", new AssignDivisionOperator());
Operators.ops.Add("*", new MultiplicationOperator());
Operators.ops.Add("/", new DivisionOperator());
Operators.ops.Add("!", new ReverseOperator());
Operators.ops.Add("out", new PrintOperator());
Operators.ops.Add("outln", new PrintLnOperator());
Operators.ops.Add("print", new PrintOperator());
Operators.ops.Add("println", new PrintLnOperator());
Operators.ops.Add(",", new AndListOperator());
Operators.ops.Add("->", new CarryOperator());
Operators.ops.Add("=>", new CarryRunOperator());
Operators.ops.Add("<-", new GetFromCrateOperator());
Operators.ops.Add("run", new RunOperator());
Operators.ops.Add("del", new DelOperator());
Operators.ops.Add("runif", new RunIfOperator());
Operators.ops.Add(">=", new EqualMoreOperator());
Operators.ops.Add("<=", new EqualLessOperator());
Operators.ops.Add("==", new EqualOperator());
Operators.ops.Add("!=", new NotEqualOperator());
Operators.ops.Add("&&", new BoolAndOperator());
Operators.ops.Add("||", new BoolOrOperator());
Operators.ops.Add(">", new MoreOperator());
Operators.ops.Add("<", new LessOperator());
Operators.ops.Add("in", new InOperator());
Operators.ops.Add("equit", new StopOperator());
Operators.ops.Add("len", new StringLengthOperator());
Operators.ops.Add("..", new IntervalOperator());
Operators.ops.Add("=)", new BelongOperator());
Operators.ops.Add("!=)", new NotBelongOperator());
Operators.ops.Add("import", new ImportOperator());
Operators.ops.Add("unimport", new UnImportOperator());
Operators.ops.Add("loop", new LoopOperator());
Operators.ops.Add("at", new GetByIndexOperator());
Operators.ops.Add(".", new DotOperator());
Operators.ops.Add("|", new Division2Operator());
Operators.ops.Add("lastof", new GetLastOperator());
Operators.ops.Add("[+]", new AddInOperator());
Operators.ops.Add("[-]", new RemoveSpecificOperator());
Operators.ops.Add("-=]", new RemoveAtOperator());
Operators.ops.Add("unload", new UnloadBlocksOperator());
Operators.ops.Add("reload", new ReloadOperator());
string code = "main:\noutln \"Wrong arguments\"";
string file = "main.kii";
if(args.Length == 0)
{
if(File.Exists("main.kii"))
{
code = File.ReadAllText("main.kii").Replace("\r", "");
}
}
else {
if(File.Exists(args[0]))
{
file = args[0];
code = File.ReadAllText(args[0]).Replace("\r", "");
}
}
Executor.ImportedFiles.Add(file);
var b = Lexer.Tokenize2(Lexer.RawTokenize(KiiBlockFinder.FindIn(code)));
// foreach(var key in b.Keys) {
// Console.WriteLine($"\x1b[38;5;121m= {key} \x1b[38;5;156mBlock\x1b[0m");
// foreach(var item in b[key]) {
// Console.WriteLine($"\x1b[38;5;159m- {item.Content} \x1b[38;5;156m{item.Type}\x1b[0m");
// }
// }
var e = Parser.Prioritize(Parser.Parse(b));
Executor.ReInit(e);
Executor.Launch();