annotate trunk/src/dil/lexer/Identifier.d @ 610:f58fd84c0d18

Changed 9 to 11 in hashing function for identifiers.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Sun, 06 Jan 2008 21:07:37 +0100
parents c2e35c83c394
children 5e3ef1b2011c
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 +/
600
041eae272362 Moved dil.Identifier to dil.lexer.Identifier.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 597
diff changeset
5 module dil.lexer.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;
602
c2e35c83c394 Moved dil.IdentsEnum to dil.lexer.IdentsEnum.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 600
diff changeset
8 import dil.lexer.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) {
610
f58fd84c0d18 Changed 9 to 11 in hashing function for identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 602
diff changeset
39 hash *= 11;
274
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);