Mercurial > projects > dil
diff trunk/src/dil/semantic/Symbol.d @ 589:de365ddcfbd4
Moved dil.Symbol to dil.semantic.Symbol.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sat, 05 Jan 2008 23:40:54 +0100 |
parents | trunk/src/dil/Symbol.d@fa6d3c52757d |
children | 8c5b1558244b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trunk/src/dil/semantic/Symbol.d Sat Jan 05 23:40:54 2008 +0100 @@ -0,0 +1,47 @@ +/++ + Author: Aziz Köksal + License: GPL3 ++/ +module dil.semantic.Symbol; + +import dil.ast.Node; +import common; + +/// Symbol IDs. +enum SYM +{ + Module, + Class, + Interface, + Struct, + Union, + Variable, + Function, + Type, +} + +/++ + A symbol represents an object with semantic code information. ++/ +class Symbol +{ + SYM sid; + Symbol parent; /// The parent this symbol belongs to. + /// The AST node that produced this symbol. + /// Useful for source code location info and retrieval of doc comments. + Node node; + + // A template macro for building isXYZ() methods. + private template is_(char[] kind) + { + const char[] is_ = `bool is`~kind~`(){ return sid == SYM.`~kind~`; }`; + } + mixin(is_!("Module")); + mixin(is_!("Class")); + mixin(is_!("Interface")); + mixin(is_!("Struct")); + mixin(is_!("Union")); + mixin(is_!("Variable")); + mixin(is_!("Function")); + mixin(is_!("Type")); +}