Mercurial > projects > dil
annotate trunk/src/dil/SymbolTable.d @ 556:19554e79e6d2
Added module dil.SymbolTable.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Mon, 24 Dec 2007 16:12:41 +0100 |
parents | |
children | b0533550d64c |
rev | line source |
---|---|
556
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
1 /++ |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
2 Author: Aziz Köksal |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
3 License: GPL3 |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
4 +/ |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
5 module dil.SymbolTable; |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
6 |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
7 import dil.Symbol; |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
8 import dil.Identifier; |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
9 import common; |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
10 |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
11 /++ |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
12 Maps an identifier string to a Symbol. |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
13 +/ |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
14 class SymbolTable |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
15 { |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
16 protected Symbol[char[]] table; |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
17 |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
18 /// Look up ident in the table. |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
19 Symbol lookup(Identifier* ident) |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
20 { |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
21 assert(ident !is null); |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
22 auto psym = ident.str in table; |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
23 return psym ? *psym : null; |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
24 } |
19554e79e6d2
Added module dil.SymbolTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
25 } |