annotate src/dil/lexer/IdentsGenerator.d @ 806:bcb74c9b895c

Moved out files in the trunk folder to the root.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Sun, 09 Mar 2008 00:12:19 +0100
parents trunk/src/dil/lexer/IdentsGenerator.d@3b34f6a95a27
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
1 /++
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
2 Author: Aziz Köksal
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
3 License: GPL3
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
4 +/
603
fc351756cc84 Moved dil.IdentsGenerator to dil.lexer.IdentsGenerator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 558
diff changeset
5 module dil.lexer.IdentsGenerator;
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
6
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
7 struct StrPair
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
8 {
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
9 const:
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
10 char[] str; /// Identifier string in code.
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
11 char[] idStr; /// In table.
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
12 }
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
13
786
3b34f6a95a27 Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 777
diff changeset
14 /// Table of predefined identifiers.
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
15 static const StrPair[] identPairs = [
523
d22a33cab0b5 Added some more predefined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
16 // Predefined version identifiers:
d22a33cab0b5 Added some more predefined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
17 {"DigitalMars"}, {"X86"}, {"X86_64"},
d22a33cab0b5 Added some more predefined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
18 /*{"Windows"}, */{"Win32"}, {"Win64"},
d22a33cab0b5 Added some more predefined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
19 {"linux"}, {"LittleEndian"}, {"BigEndian"},
d22a33cab0b5 Added some more predefined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
20 {"D_Coverage"}, {"D_InlineAsm_X86"}, {"D_Version2"},
d22a33cab0b5 Added some more predefined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
21 {"none"}, {"all"},
d22a33cab0b5 Added some more predefined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
22 // Variadic parameters:
d22a33cab0b5 Added some more predefined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
23 {"_arguments"}, {"_argptr"},
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
24 // scope:
523
d22a33cab0b5 Added some more predefined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
25 {"exit"}, {"success"}, {"failure"},
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
26 // pragma:
777
9f61e8af55d5 Added module dil.Compilation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 769
diff changeset
27 {"msg"}, {"lib"}, {"startaddress"},
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
28 // Linkage:
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
29 {"C"}, {"D"}, {"Windows"}, {"Pascal"}, {"System"},
713
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
30 // Con-/Destructor:
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
31 {"__ctor"}, {"__dtor"},
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
32 // new() and delete() methods.
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
33 {"__new"}, {"__delete"},
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
34 // Unittest and invariant.
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
35 {"__unittest"}, {"__invariant"},
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
36 // Operator methods:
558
32f55cac5c46 Added more pre-defined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 523
diff changeset
37 {"opNeg"},
32f55cac5c46 Added more pre-defined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 523
diff changeset
38 {"opPos"},
32f55cac5c46 Added more pre-defined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 523
diff changeset
39 {"opComp"},
32f55cac5c46 Added more pre-defined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 523
diff changeset
40 {"opAddAssign"},
32f55cac5c46 Added more pre-defined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 523
diff changeset
41 {"opSubAssign"},
32f55cac5c46 Added more pre-defined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 523
diff changeset
42 {"opPostInc"},
32f55cac5c46 Added more pre-defined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 523
diff changeset
43 {"opPostDec"},
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
44 {"opCall"},
558
32f55cac5c46 Added more pre-defined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 523
diff changeset
45 {"opCast"},
32f55cac5c46 Added more pre-defined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 523
diff changeset
46 {"opIndex"},
32f55cac5c46 Added more pre-defined identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 523
diff changeset
47 {"opSlice"},
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
48 // ASM identifiers:
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
49 {"near"}, {"far"}, {"word"}, {"dword"}, {"qword"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
50 {"ptr"}, {"offset"}, {"seg"}, {"__LOCAL_SIZE"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
51 {"FS"}, {"ST"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
52 {"AL"}, {"AH"}, {"AX"}, {"EAX"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
53 {"BL"}, {"BH"}, {"BX"}, {"EBX"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
54 {"CL"}, {"CH"}, {"CX"}, {"ECX"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
55 {"DL"}, {"DH"}, {"DX"}, {"EDX"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
56 {"BP"}, {"EBP"}, {"SP"}, {"ESP"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
57 {"DI"}, {"EDI"}, {"SI"}, {"ESI"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
58 {"ES"}, {"CS"}, {"SS"}, {"DS"}, {"GS"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
59 {"CR0"}, {"CR2"}, {"CR3"}, {"CR4"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
60 {"DR0"}, {"DR1"}, {"DR2"}, {"DR3"}, {"DR6"}, {"DR7"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
61 {"TR3"}, {"TR4"}, {"TR5"}, {"TR6"}, {"TR7"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
62 {"MM0"}, {"MM1"}, {"MM2"}, {"MM3"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
63 {"MM4"}, {"MM5"}, {"MM6"}, {"MM7"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
64 {"XMM0"}, {"XMM1"}, {"XMM2"}, {"XMM3"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
65 {"XMM4"}, {"XMM5"}, {"XMM6"}, {"XMM7"},
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
66 ];
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
67
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
68 /++
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 713
diff changeset
69 CTF for generating the members of the struct Ident.
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 713
diff changeset
70
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 713
diff changeset
71 The resulting string looks like this:
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 713
diff changeset
72 ---
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
73 private struct Ids {static const:
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 713
diff changeset
74 Identifier _str = {"str", TOK.Identifier, IDK.str};
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
75 // more ...
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
76 }
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
77 Identifier* str = &Ids._str;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
78 // more ...
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
79 private Identifier*[] __allIds = [
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
80 str,
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
81 // more ...
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
82 ]
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 713
diff changeset
83 ---
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
84 +/
713
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
85 char[] generateIdentMembers()
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
86 {
713
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
87 char[] private_members = "private struct Ids {static const:";
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
88
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
89 char[] public_members = "";
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
90 char[] array = "private Identifier*[] __allIds = [";
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
91 foreach (pair; identPairs)
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
92 {
713
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
93 // N.B.: Compiler cries for some reason when trying to access pair.idStr.
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
94 // Identifier _str = {"str", TOK.Identifier, ID.str};
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 713
diff changeset
95 private_members ~= "Identifier _"~pair.str~` = {"`~pair.str~`", TOK.Identifier, IDK.`~pair.str~"};\n";
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
96 // Identifier* str = &_str;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
97 public_members ~= "Identifier* "~pair.str~" = &Ids._"~pair.str~";\n";
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
98 array ~= pair.str~",";
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
99 }
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
100
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
101 private_members ~= "}"; // Close private {
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
102 array ~= "];";
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
103
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
104 return private_members ~ public_members ~ array;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
105 }
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
106
769
5e3ef1b2011c Added and improved documentation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 713
diff changeset
107 /// CTF for generating the members of the enum IDK.
713
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
108 char[] generateIDMembers()
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
109 {
713
1bfae3480fdc Added new predefined IDs and code to SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 603
diff changeset
110 char[] members;
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
111 foreach (pair; identPairs)
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
112 members ~= pair.str ~ ",\n";
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
113 return members;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
114 }
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
115
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
116 // pragma(msg, generateIdentMembers());
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
117 // pragma(msg, generateIDMembers());