Mercurial > projects > dil
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 |