annotate trunk/src/dil/Identifier.d @ 597:4d50267f59c9

Moved dil.TokensEnum to dil.lexer.TokensEnum.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Sun, 06 Jan 2008 00:28:26 +0100
parents 3bb94ba21490
children
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;
597
4d50267f59c9 Moved dil.TokensEnum to dil.lexer.TokensEnum.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
6
4d50267f59c9 Moved dil.TokensEnum to dil.lexer.TokensEnum.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
7 import dil.lexer.TokensEnum;
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
8 import dil.IdentsEnum;
391
33b566df6af4 Migrated project to Tango.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 327
diff changeset
9 import common;
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
10
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
11 align(1)
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
12 struct Identifier
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
13 {
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
14 string str;
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
15 TOK type;
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
16 ID identID;
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
17
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
18 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
19 {
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
20 auto id = new Identifier;
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
21 id.str = str;
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
22 id.type = type;
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
23 return id;
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
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 502
diff changeset
26 static Identifier* opCall(string str, TOK type, ID identID)
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
27 {
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
28 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
29 id.str = str;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
30 id.type = type;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
31 id.identID = identID;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
32 return id;
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
33 }
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
34
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
35 uint toHash()
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
36 {
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
37 uint hash;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
38 foreach(c; str) {
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
39 hash *= 9;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
40 hash += c;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
41 }
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
42 return hash;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
43 }
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
44 }
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 499
diff changeset
45 // pragma(msg, Identifier.sizeof.stringof);