diff --git a/Nub.Lang/Nub.Lang/Backend/Custom/Generator.cs b/Nub.Lang/Nub.Lang/Backend/Custom/Generator.cs index cf0ca35..0612329 100644 --- a/Nub.Lang/Nub.Lang/Backend/Custom/Generator.cs +++ b/Nub.Lang/Nub.Lang/Backend/Custom/Generator.cs @@ -12,7 +12,7 @@ public class Generator private readonly StringBuilder _builder; private readonly LabelFactory _labelFactory; - public Generator(IReadOnlyCollection definitions) + public Generator(List definitions) { _definitions = []; _builder = new StringBuilder(); diff --git a/Nub.Lang/Nub.Lang/Backend/Custom/SymbolTable.cs b/Nub.Lang/Nub.Lang/Backend/Custom/SymbolTable.cs index 9a7824a..2ad9b87 100644 --- a/Nub.Lang/Nub.Lang/Backend/Custom/SymbolTable.cs +++ b/Nub.Lang/Nub.Lang/Backend/Custom/SymbolTable.cs @@ -90,7 +90,7 @@ public class SymbolTable return variables; } - public Func ResolveFunc(string name, IReadOnlyCollection parameterTypes) + public Func ResolveFunc(string name, List parameterTypes) { var func = _funcDefinitions.FirstOrDefault(f => f.SignatureMatches(name, parameterTypes)); if (func == null) @@ -101,7 +101,7 @@ public class SymbolTable return func; } - public LocalFunc ResolveLocalFunc(string name, IReadOnlyCollection parameterTypes) + public LocalFunc ResolveLocalFunc(string name, List parameterTypes) { var func = ResolveFunc(name, parameterTypes); if (func is not LocalFunc localFunc) @@ -111,7 +111,7 @@ public class SymbolTable return localFunc; } - public ExternFunc ResolveExternFunc(string name, IReadOnlyCollection parameterTypes) + public ExternFunc ResolveExternFunc(string name, List parameterTypes) { var func = ResolveFunc(name, parameterTypes); if (func is not ExternFunc externFunc) @@ -151,7 +151,7 @@ public class GlobalVariable(string name, Type type, string identifier) : Variabl public abstract class Func { - protected Func(string name, string startLabel, IReadOnlyCollection parameters, Optional returnType) + protected Func(string name, string startLabel, List parameters, Optional returnType) { Name = name; Parameters = parameters; @@ -161,10 +161,10 @@ public abstract class Func public string Name { get; } public string StartLabel { get; } - public IReadOnlyCollection Parameters { get; } + public List Parameters { get; } public Optional ReturnType { get; } - public bool SignatureMatches(string name, IReadOnlyCollection parameterTypes) + public bool SignatureMatches(string name, List parameterTypes) { return Name == name && Parameters.Count == parameterTypes.Count @@ -174,21 +174,21 @@ public abstract class Func public class ExternFunc : Func { - public ExternFunc(string name, string startLabel, IReadOnlyCollection parameters, Optional returnType) : base(name, startLabel, parameters, returnType) + public ExternFunc(string name, string startLabel, List parameters, Optional returnType) : base(name, startLabel, parameters, returnType) { } } public class LocalFunc : Func { - public LocalFunc(string name, string startLabel, string endLabel, IReadOnlyCollection parameters, Optional returnType, IReadOnlyCollection variables) : base(name, startLabel, parameters, returnType) + public LocalFunc(string name, string startLabel, string endLabel, List parameters, Optional returnType, List variables) : base(name, startLabel, parameters, returnType) { EndLabel = endLabel; Variables = variables; } public string EndLabel { get; } - public IReadOnlyCollection Variables { get; } + public List Variables { get; } public int StackAllocation => Variables.OfType().Sum(variable => variable.Offset); public Variable ResolveVariable(string name) diff --git a/Nub.Lang/Nub.Lang/Frontend/Lexing/Lexer.cs b/Nub.Lang/Nub.Lang/Frontend/Lexing/Lexer.cs index 9295c63..021b47f 100644 --- a/Nub.Lang/Nub.Lang/Frontend/Lexing/Lexer.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Lexing/Lexer.cs @@ -48,7 +48,7 @@ public class Lexer private string _src = string.Empty; private int _index; - public IReadOnlyCollection Lex(string src) + public List Lex(string src) { _src = src; _index = 0; diff --git a/Nub.Lang/Nub.Lang/Frontend/Parsing/BlockNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/BlockNode.cs index 972f19a..213cc7c 100644 --- a/Nub.Lang/Nub.Lang/Frontend/Parsing/BlockNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/BlockNode.cs @@ -1,6 +1,6 @@ namespace Nub.Lang.Frontend.Parsing; -public class BlockNode(IReadOnlyCollection statements) : Node +public class BlockNode(List statements) : Node { - public IReadOnlyCollection Statements { get; } = statements; + public List Statements { get; } = statements; } \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs index 540cb90..3c6455d 100644 --- a/Nub.Lang/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs @@ -2,10 +2,10 @@ namespace Nub.Lang.Frontend.Parsing; -public class ExternFuncDefinitionNode(string name, IReadOnlyCollection parameters, Optional returnType) : DefinitionNode +public class ExternFuncDefinitionNode(string name, List parameters, Optional returnType) : DefinitionNode { public string Name { get; } = name; - public IReadOnlyCollection Parameters { get; } = parameters; + public List Parameters { get; } = parameters; public Optional ReturnType { get; } = returnType; public override string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){(ReturnType.HasValue ? ": " + ReturnType.Value : "")}"; diff --git a/Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCall.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCall.cs index 322ce20..e5e8e85 100644 --- a/Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCall.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCall.cs @@ -1,9 +1,9 @@ namespace Nub.Lang.Frontend.Parsing; -public class FuncCall(string name, IReadOnlyCollection parameters) +public class FuncCall(string name, List parameters) { public string Name { get; } = name; - public IReadOnlyCollection Parameters { get; } = parameters; + public List Parameters { get; } = parameters; public override string ToString() => $"{Name}()"; } \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs index aa65420..d508a79 100644 --- a/Nub.Lang/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs @@ -2,10 +2,10 @@ namespace Nub.Lang.Frontend.Parsing; -public class LocalFuncDefinitionNode(string name, IReadOnlyCollection parameters, BlockNode body, Optional returnType) : DefinitionNode +public class LocalFuncDefinitionNode(string name, List parameters, BlockNode body, Optional returnType) : DefinitionNode { public string Name { get; } = name; - public IReadOnlyCollection Parameters { get; } = parameters; + public List Parameters { get; } = parameters; public BlockNode Body { get; } = body; public Optional ReturnType { get; } = returnType; diff --git a/Nub.Lang/Nub.Lang/Frontend/Parsing/ModuleNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/ModuleNode.cs index f5e6231..c992fde 100644 --- a/Nub.Lang/Nub.Lang/Frontend/Parsing/ModuleNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/ModuleNode.cs @@ -1,8 +1,8 @@ namespace Nub.Lang.Frontend.Parsing; -public class ModuleNode(string path, IReadOnlyCollection imports, IReadOnlyCollection definitions) : Node +public class ModuleNode(string path, List imports, List definitions) : Node { public string Path { get; } = path; - public IReadOnlyCollection Imports { get; } = imports; - public IReadOnlyCollection Definitions { get; } = definitions; + public List Imports { get; } = imports; + public List Definitions { get; } = definitions; } \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Frontend/Parsing/Parser.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/Parser.cs index f546899..1950127 100644 --- a/Nub.Lang/Nub.Lang/Frontend/Parsing/Parser.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/Parser.cs @@ -6,10 +6,10 @@ namespace Nub.Lang.Frontend.Parsing; public class Parser { - private IReadOnlyCollection _tokens = []; + private List _tokens = []; private int _index; - public ModuleNode ParseModule(IReadOnlyCollection tokens, string path) + public ModuleNode ParseModule(List tokens, string path) { _index = 0; _tokens = tokens; diff --git a/Nub.Lang/Nub.Lang/Frontend/Parsing/Syscall.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/Syscall.cs index eb76aaf..7c0ab16 100644 --- a/Nub.Lang/Nub.Lang/Frontend/Parsing/Syscall.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/Syscall.cs @@ -1,6 +1,6 @@ namespace Nub.Lang.Frontend.Parsing; -public class Syscall(IReadOnlyCollection parameters) +public class Syscall(List parameters) { - public IReadOnlyCollection Parameters { get; } = parameters; + public List Parameters { get; } = parameters; } \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Frontend/Typing/ExpressionTyper.cs b/Nub.Lang/Nub.Lang/Frontend/Typing/ExpressionTyper.cs index a700751..f0c3d6e 100644 --- a/Nub.Lang/Nub.Lang/Frontend/Typing/ExpressionTyper.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Typing/ExpressionTyper.cs @@ -3,10 +3,10 @@ using Nub.Lang.Frontend.Parsing; namespace Nub.Lang.Frontend.Typing; -public class Func(string name, IReadOnlyCollection parameters, Optional body, Optional returnType) +public class Func(string name, List parameters, Optional body, Optional returnType) { public string Name { get; } = name; - public IReadOnlyCollection Parameters { get; } = parameters; + public List Parameters { get; } = parameters; public Optional Body { get; } = body; public Optional ReturnType { get; } = returnType; } @@ -17,7 +17,7 @@ public class ExpressionTyper private readonly List _variableDefinitions; private readonly Stack _variables; - public ExpressionTyper(IReadOnlyCollection definitions) + public ExpressionTyper(List definitions) { _variables = new Stack(); _functions = []; diff --git a/Nub.Lang/Nub.Lang/Program.cs b/Nub.Lang/Nub.Lang/Program.cs index 0e936c4..2ad2dd0 100644 --- a/Nub.Lang/Nub.Lang/Program.cs +++ b/Nub.Lang/Nub.Lang/Program.cs @@ -42,7 +42,7 @@ internal static class Program } var modules = RunFrontend(input); - var definitions = modules.SelectMany(f => f.Definitions).ToArray(); + var definitions = modules.SelectMany(f => f.Definitions).ToList(); var typer = new ExpressionTyper(definitions); typer.Populate(); @@ -54,7 +54,7 @@ internal static class Program return 0; } - private static IEnumerable RunFrontend(string path) + private static List RunFrontend(string path) { List modules = []; RunFrontend(path, modules); diff --git a/Nub.Lang/Nub.Lang/Type.cs b/Nub.Lang/Nub.Lang/Type.cs index 16cef56..39ee50d 100644 --- a/Nub.Lang/Nub.Lang/Type.cs +++ b/Nub.Lang/Nub.Lang/Type.cs @@ -45,13 +45,13 @@ public record StringType : Type public record DelegateType : Type { - public DelegateType(IReadOnlyCollection parameters, Optional returnType) + public DelegateType(List parameters, Optional returnType) { Parameters = parameters; ReturnType = returnType; } - public IReadOnlyCollection Parameters { get; } + public List Parameters { get; } public Optional ReturnType { get; } public override string ToString() => $"({string.Join(", ", Parameters)}): {(ReturnType.HasValue ? ReturnType.Value.ToString() : "")}";