annotate trunk/src/dil/Identifier.d @ 505:3bb94ba21490

Refactored a great amount of code. Changed many declaration types from Token* to Identifier*. Fix in parseStructInitializer(): append null to idents in else body. Fixed class Parameter and parseParameterList().
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Wed, 12 Dec 2007 02:25:42 +0100
parents 4e14cd1b24da
children 4d50267f59c9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
1 /++
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
2 Author: Aziz Köksal
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
3 License: GPL3
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
4 +/
326
4a7359b88c11 - Added package 'dil' to module declarations.
aziz
parents: 325
diff changeset
5 module dil.Identifier;
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
6 import dil.TokensEnum;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
7 import dil.IdentsEnum;
391
33b566df6af4 Migrated project to Tango.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 327
diff changeset
8 import common;
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
9
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
10 align(1)
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
11 struct Identifier
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
12 {
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
13 string str;
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
14 TOK type;
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
15 ID identID;
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
16
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
17 static Identifier* opCall(string str, TOK type)
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
18 {
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
19 auto id = new Identifier;
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
20 id.str = str;
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
21 id.type = type;
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
22 return id;
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
23 }
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
24
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
25 static Identifier* opCall(string str, TOK type, ID identID)
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
26 {
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
27 auto id = new Identifier;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
28 id.str = str;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
29 id.type = type;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
30 id.identID = identID;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
31 return id;
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
32 }
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
33
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
34 uint toHash()
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
35 {
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
36 uint hash;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
37 foreach(c; str) {
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
38 hash *= 9;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
39 hash += c;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
40 }
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
41 return hash;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
42 }
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
43 }
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
44 // pragma(msg, Identifier.sizeof.stringof);