annotate src/TypeRulesGenerator.d @ 835:451ede0105e0

Applied minor fixes and tidied some code up a bit.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Tue, 12 Aug 2008 02:59:11 +0200
parents bcb74c9b895c
children e7cb5e38d567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
802
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
1 #! /usr/bin/rdmd
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
2 /++
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
3 Author: Aziz Köksal
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
4 License: GPL3
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
5 +/
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
6 module TypeRulesGenerator;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
7
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
8 import tango.io.File;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
9 import tango.io.FilePath;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
10
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
11 alias char[] string;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
12
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
13 void main(char[][] args)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
14 {
835
451ede0105e0 Applied minor fixes and tidied some code up a bit.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 806
diff changeset
15 char[] text = "/// Generated by TypeRulesGenerator.d\n"
451ede0105e0 Applied minor fixes and tidied some code up a bit.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 806
diff changeset
16 "module TypeRulesData;\n\n";
451ede0105e0 Applied minor fixes and tidied some code up a bit.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 806
diff changeset
17 text ~= Format(`const char[] compilerNameVersion = "{} {}.{,:d3}";`\n, __VENDOR__, __VERSION__/1000, __VERSION__%1000);
802
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
18 text ~= "char[][][] unaryExpsResults = [\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
19 foreach (results; unaryExpsResults)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
20 {
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
21 text ~= " [";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
22 foreach (result; results)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
23 text ~= '"' ~ result ~ '"' ~ ", ";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
24 text[$-2] = ']';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
25 text[$-1] = ',';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
26 text ~= \n;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
27 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
28 text[$-2] = '\n';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
29 text[$-1] = ']';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
30 text ~= ";\n\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
31
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
32 text ~= "char[][][][] binaryExpsResults = [\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
33 foreach (expResults; binaryExpsResults)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
34 {
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
35 text ~= " [\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
36 foreach (results; expResults)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
37 {
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
38 text ~= " [";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
39 foreach (result; results)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
40 text ~= '"' ~ result ~ '"' ~ ", ";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
41 text[$-2] = ']';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
42 text[$-1] = ',';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
43 text ~= \n;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
44 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
45 text[$-2] = '\n';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
46 text[$-1] = ' ';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
47 text ~= " ],\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
48 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
49 text[$-2] = '\n';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
50 text[$-1] = ']';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
51 text ~= ";\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
52
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
53 // Write the text to a D module.
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
54 auto file = new File("TypeRulesData.d");
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
55 file.write(text);
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
56 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
57
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
58 template ExpressionType(char[] T1, char[] T2, char[] expression)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
59 {
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
60 mixin("alias "~T1~" X;");
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
61 mixin("alias "~T2~" Y;");
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
62 X x;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
63 Y y;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
64 static if(is(typeof(mixin(expression)) ResultType))
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
65 const char[] result = ResultType.stringof;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
66 else
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
67 const char[] result = "Error";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
68 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
69 alias ExpressionType EType;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
70
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
71 // pragma(msg, EType!("char", "int", "&x").result);
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
72
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
73 static const string[] basicTypes = [
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
74 "char"[], "wchar", "dchar", "bool",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
75 "byte", "ubyte", "short", "ushort",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
76 "int", "uint", "long", "ulong",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
77 /+"cent", "ucent",+/
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
78 "float", "double", "real",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
79 "ifloat", "idouble", "ireal",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
80 "cfloat", "cdouble", "creal"/+, "void"+/
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
81 ];
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
82
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
83 static const string[] unaryExpressions = [
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
84 "!x",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
85 "&x",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
86 "~x",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
87 "+x",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
88 "-x",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
89 "++x",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
90 "--x",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
91 "x++",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
92 "x--",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
93 ];
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
94
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
95 static const string[] binaryExpressions = [
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
96 "x!<>=y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
97 "x!<>y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
98 "x!<=y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
99 "x!<y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
100 "x!>=y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
101 "x!>y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
102 "x<>=y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
103 "x<>y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
104
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
105 "x=y", "x==y", "x!=y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
106 "x<=y", "x<y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
107 "x>=y", "x>y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
108 "x<<=y", "x<<y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
109 "x>>=y","x>>y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
110 "x>>>=y", "x>>>y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
111 "x|=y", "x||y", "x|y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
112 "x&=y", "x&&y", "x&y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
113 "x+=y", "x+y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
114 "x-=y", "x-y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
115 "x/=y", "x/y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
116 "x*=y", "x*y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
117 "x%=y", "x%y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
118 "x^=y", "x^y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
119 "x~=y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
120 "x~y",
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
121 "x,y"
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
122 ];
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
123
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
124 char[] genBinaryExpArray(char[] expression)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
125 {
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
126 char[] result = "[\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
127 foreach (t1; basicTypes)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
128 {
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
129 result ~= "[\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
130 foreach (t2; basicTypes)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
131 result ~= `EType!("`~t1~`", "`~t2~`", "`~expression~`").result,`\n;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
132 result[result.length-2] = ']'; // Overwrite last comma.
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
133 result[result.length-1] = ','; // Overwrite last \n.
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
134 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
135 result[result.length-1] = ']'; // Overwrite last comma.
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
136 return result;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
137 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
138 // pragma(msg, mixin(genBinaryExpArray("x%y")).stringof);
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
139
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
140 char[] genBinaryExpsArray()
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
141 {
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
142 char[] result = "[\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
143 foreach (expression; binaryExpressions)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
144 {
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
145 result ~= genBinaryExpArray(expression);
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
146 result ~= ",\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
147 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
148 result[result.length-2] = ']';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
149 return result;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
150 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
151
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
152 // pragma(msg, mixin(genBinaryExpsArray()).stringof);
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
153
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
154 char[] genUnaryExpArray(char[] expression)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
155 {
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
156 char[] result = "[\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
157 foreach (t1; basicTypes)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
158 result ~= `EType!("`~t1~`", "int", "`~expression~`").result,`\n;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
159 result[result.length-2] = ']'; // Overwrite last comma.
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
160 return result;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
161 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
162
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
163 char[] genUnaryExpsArray()
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
164 {
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
165 char[] result = "[\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
166 foreach (expression; unaryExpressions)
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
167 result ~= genUnaryExpArray(expression) ~ ",\n";
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
168 result[result.length-2] = ']';
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
169 return result;
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
170 }
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
171
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
172 // pragma(msg, mixin(genUnaryExpsArray()).stringof);
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
173
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
174 auto unaryExpsResults = mixin(genUnaryExpsArray());
f51305056196 Added modules related to type rules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
175 auto binaryExpsResults = mixin(genBinaryExpsArray());