annotate trunk/src/dil/Identifier.d @ 499:52447db67938

Implemented global table of identifiers.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Sun, 09 Dec 2007 22:37:47 +0100
parents 33b566df6af4
children 4e14cd1b24da
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;
327
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
6 import dil.Token;
391
33b566df6af4 Migrated project to Tango.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 327
diff changeset
7 import common;
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
8
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
9 struct Identifier
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
10 {
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
11 TOK type;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
12 string str;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
13
499
52447db67938 Implemented global table of identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 391
diff changeset
14 static Identifier* opCall(TOK type, string str)
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
15 {
499
52447db67938 Implemented global table of identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 391
diff changeset
16 auto i = new Identifier;
274
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
17 i.type = type;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
18 i.str = str;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
19 return i;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
20 }
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
21
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
22 uint toHash()
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
23 {
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
24 uint hash;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
25 foreach(c; str) {
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
26 hash *= 9;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
27 hash += c;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
28 }
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
29 return hash;
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
30 }
dcce141c97f5 - Added module Identifier.
aziz
parents:
diff changeset
31 }