aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdlang/symbol.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdlang/symbol.d')
-rw-r--r--src/sdlang/symbol.d61
1 files changed, 0 insertions, 61 deletions
diff --git a/src/sdlang/symbol.d b/src/sdlang/symbol.d
deleted file mode 100644
index ebb2b93..0000000
--- a/src/sdlang/symbol.d
+++ /dev/null
@@ -1,61 +0,0 @@
-// SDLang-D
-// Written in the D programming language.
-
-module sdlang.symbol;
-
-import std.algorithm;
-
-static immutable validSymbolNames = [
- "Error",
- "EOF",
- "EOL",
-
- ":",
- "=",
- "{",
- "}",
-
- "Ident",
- "Value",
-];
-
-/// Use this to create a Symbol. Ex: symbol!"Value" or symbol!"="
-/// Invalid names (such as symbol!"FooBar") are rejected at compile-time.
-template symbol(string name)
-{
- static assert(validSymbolNames.find(name), "Invalid Symbol: '"~name~"'");
- immutable symbol = _symbol(name);
-}
-
-private Symbol _symbol(string name)
-{
- return Symbol(name);
-}
-
-/// Symbol is essentially the "type" of a Token.
-/// Token is like an instance of a Symbol.
-///
-/// This only represents terminals. Nonterminal tokens aren't
-/// constructed since the AST is built directly during parsing.
-///
-/// You can't create a Symbol directly. Instead, use the `symbol`
-/// template.
-struct Symbol
-{
- private string _name;
- @property string name()
- {
- return _name;
- }
-
- @disable this();
- private this(string name)
- {
- this._name = name;
- }
-
- string toString()
- {
- return _name;
- }
-}