comparison trunk/src/dil/lexer/IdentsGenerator.d @ 713:1bfae3480fdc

Added new predefined IDs and code to SemanticPass1.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Wed, 30 Jan 2008 23:23:58 +0100
parents fc351756cc84
children 5e3ef1b2011c
comparison
equal deleted inserted replaced
712:f8875ef9a66d 713:1bfae3480fdc
24 {"exit"}, {"success"}, {"failure"}, 24 {"exit"}, {"success"}, {"failure"},
25 // pragma: 25 // pragma:
26 {"msg"}, {"lib"}, 26 {"msg"}, {"lib"},
27 // Linkage: 27 // Linkage:
28 {"C"}, {"D"}, {"Windows"}, {"Pascal"}, {"System"}, 28 {"C"}, {"D"}, {"Windows"}, {"Pascal"}, {"System"},
29 // Con-/Destructor:
30 {"__ctor"}, {"__dtor"},
31 // new() and delete() methods.
32 {"__new"}, {"__delete"},
33 // Unittest and invariant.
34 {"__unittest"}, {"__invariant"},
29 // Operator methods: 35 // Operator methods:
30 {"opNeg"}, 36 {"opNeg"},
31 {"opPos"}, 37 {"opPos"},
32 {"opComp"}, 38 {"opComp"},
33 {"opAddAssign"}, 39 {"opAddAssign"},
72 str, 78 str,
73 // more ... 79 // more ...
74 ] 80 ]
75 --- 81 ---
76 +/ 82 +/
77 char[] generateIdentMembers(char[] private_members = "") 83 char[] generateIdentMembers()
78 { 84 {
79 private_members = "private struct Ids {static const:"; 85 char[] private_members = "private struct Ids {static const:";
80 86
81 char[] public_members = ""; 87 char[] public_members = "";
82 char[] array = "private Identifier*[] __allIds = ["; 88 char[] array = "private Identifier*[] __allIds = [";
83 foreach (pair; identPairs) 89 foreach (pair; identPairs)
84 { 90 {
85 // NB: conditional makes function uneligible for CTE. 91 // N.B.: Compiler cries for some reason when trying to access pair.idStr.
86 // char[] idString = pair.idStr ? pair.idStr : pair.str;
87 // Identifier _str = {"str", TOK.Identifier, ID.str}; 92 // Identifier _str = {"str", TOK.Identifier, ID.str};
88 private_members ~= "Identifier _"~pair.str~` = {"`~pair.str~`", TOK.Identifier, ID.`~pair.str~"};\n"; 93 private_members ~= "Identifier _"~pair.str~` = {"`~pair.str~`", TOK.Identifier, ID.`~pair.str~"};\n";
89 // Identifier* str = &_str; 94 // Identifier* str = &_str;
90 public_members ~= "Identifier* "~pair.str~" = &Ids._"~pair.str~";\n"; 95 public_members ~= "Identifier* "~pair.str~" = &Ids._"~pair.str~";\n";
91 array ~= pair.str~","; 96 array ~= pair.str~",";
96 101
97 return private_members ~ public_members ~ array; 102 return private_members ~ public_members ~ array;
98 } 103 }
99 104
100 /// CTF for generating the members of the enum ID. 105 /// CTF for generating the members of the enum ID.
101 char[] generateIDMembers(char[] members = "") 106 char[] generateIDMembers()
102 { 107 {
108 char[] members;
103 foreach (pair; identPairs) 109 foreach (pair; identPairs)
104 members ~= pair.str ~ ",\n"; 110 members ~= pair.str ~ ",\n";
105 return members; 111 return members;
106 } 112 }
107 113