-
Notifications
You must be signed in to change notification settings - Fork 1
/
0.0.2.cs
138 lines (135 loc) · 4.35 KB
/
0.0.2.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
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
using System.Text.RegularExpressions;
class vars
{
private List<int> groessen = new List<int>();
private List<string> namen = new List<string>();
public void Add(string name, int size)
{
groessen.Add(size);
namen.Add(name);
}
public int get(string name)
{
int index = namen.BinarySearch(name);
int result = 0;
if (index != 0)
{
for (int i = 0; i < index; i++)
{
result += groessen[i];
}
result += 1;
}
return result;
}
}
class Programm
{
public static string Input(string input)
{
Console.Write(input);
return Console.ReadLine();
}
public static List<List<string>> ToLines(string FilePath) /*
* A function that convert a Text to
* lines;
*/
{
string file = File.ReadAllText(FilePath);
List<List<string>> lines = new List<List<string>>();
List<string> lines_backup = new List<string>();
char[] delimiterChars = { ';', '\n' };
lines_backup = file.Split(delimiterChars).ToList();
for (int i = 0; i < lines_backup.Count(); i++)
{
string line = lines_backup[i] + ";";
line = line.Replace("\n", "");
Regex regex1 = new Regex(@"({)|(})|(\()|(\))|(,)|(')|("")|(\\)|(//)|(/)|( )");
List<string> final = regex1.Split(line).ToList();
lines.Add(final);
}
return lines;
}
public static void DisplayStringList_2D(List<List<string>> myList)
{
// Displaying the elements of List
foreach (var b in myList)
{
foreach (var k in b)
{
Console.Write(": " + k);
}
Console.WriteLine();
}
}
public static string toAsm(List<List<string>> tockens)
{
List<vars> variablen = new List<vars>();
string result = "";
bool isInString = false;
bool ignore = false;
bool big_ignore = false;
foreach (List<string> line in tockens)
{
//string lineS = "";
int instring = 0;
for (int i = 0; i < line.Count; i++)
{
string tocken_bevor = "";
string tocken = line[i];
string t_b_b = ""; //Tocken bevor bevor (2 x bevor)
//lineS += tocken;
try
{
tocken_bevor = line[i - 1];
t_b_b = line[i - 2];
}
catch { /*...*/ }
//######### STRING #########//
bool sonderfall = tocken_bevor == "\\" || t_b_b == "\\";
if (tocken == "\""&& !sonderfall)
{
instring = 0;
isInString = !isInString;
}
//###### STRING END ########//
//###### COMMENTS ########//
if (!isInString)
{
if (tocken == "//" && !big_ignore) ignore = true;
else if (tocken == "*" && tocken_bevor == "/")
{
big_ignore = true;
ignore = true;
}
if (big_ignore == true)
{
if (tocken == "/" && tocken_bevor == "*") {
big_ignore = false;
ignore = false;
}
}
}
//###### COMMENTS ########//
if (isInString && !ignore) {
if (instring >= 1)
{
Console.Write(tocken); // print when it´s in string
}
instring++;
}
else
{
// Is not in string then:
}
}
if (!big_ignore) ignore = false;
}
return result;
}
public static void Main(string[] args)
{
List<List<string>> lines = ToLines("Programm.txt");
toAsm(lines);
}
}