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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }