diff --git a/source/tlang/compiler/symbols/containers.d b/source/tlang/compiler/symbols/containers.d new file mode 100644 index 0000000..ab0c882 --- /dev/null +++ b/source/tlang/compiler/symbols/containers.d @@ -0,0 +1,63 @@ +module compiler.symbols.containers; + +import compiler.symbols.data; +import std.conv : to; + +public class Container : Entity +{ + private Statement[] statements; + + this(string name) + { + super(name); + } + + public void addStatement(Statement statement) + { + this.statements ~= statement; + } + + public void addStatements(Statement[] statements) + { + this.statements ~= statements; + } + + public Statement[] getStatements() + { + return statements; + } +} + +public class Module : Container +{ + this(string moduleName) + { + super(moduleName); + } +} + +public class Clazz : Container +{ + private string[] interfacesClasses; + + this(string name) + { + super(name); + } + + public void addInherit(string[] l) + { + interfacesClasses ~= l; + } + + public string[] getInherit() + { + return interfacesClasses; + } + + public override string toString() + { + return "Class (Name: "~name~", Parents (Class/Interfaces): "~to!(string)(interfacesClasses)~")"; + } + +} \ No newline at end of file diff --git a/source/tlang/compiler/symbols/data.d b/source/tlang/compiler/symbols/data.d index b899069..5d0de92 100644 --- a/source/tlang/compiler/symbols/data.d +++ b/source/tlang/compiler/symbols/data.d @@ -114,7 +114,7 @@ public class Entity : Statement private FunctionType functionType; /* Name of the entity (class's name, function's name, variable's name) */ - private string name; + protected string name; this(string name) { @@ -165,64 +165,7 @@ public class TypedEntity : Entity } } -public class Container : Entity -{ - private Statement[] statements; - - this(string name) - { - super(name); - } - - public void addStatement(Statement statement) - { - this.statements ~= statement; - } - - public void addStatements(Statement[] statements) - { - this.statements ~= statements; - } - - public Statement[] getStatements() - { - return statements; - } -} - -public class Module : Container -{ - this(string moduleName) - { - super(moduleName); - } -} - -public class Clazz : Container -{ - private string[] interfacesClasses; - - this(string name) - { - super(name); - } - - public void addInherit(string[] l) - { - interfacesClasses ~= l; - } - - public string[] getInherit() - { - return interfacesClasses; - } - - public override string toString() - { - return "Class (Name: "~name~", Parents (Class/Interfaces): "~to!(string)(interfacesClasses)~")"; - } - -} +public import compiler.symbols.containers; public class ArgumentList {