From e78dddb151358ae322ceff025eb20871ecdbab70 Mon Sep 17 00:00:00 2001 From: nub31 Date: Sun, 22 Jun 2025 20:35:49 +0200 Subject: [PATCH] ... --- src/Generation/QBE/QBEGenerator.cs | 2 +- src/Syntax/DefinitionTable.cs | 8 +++---- src/Syntax/Parsing/Node/Definition.cs | 27 ++++------------------- src/Syntax/Typing/BoundNode/Definition.cs | 27 ++++------------------- 4 files changed, 13 insertions(+), 51 deletions(-) diff --git a/src/Generation/QBE/QBEGenerator.cs b/src/Generation/QBE/QBEGenerator.cs index 03648b4..52cf3be 100644 --- a/src/Generation/QBE/QBEGenerator.cs +++ b/src/Generation/QBE/QBEGenerator.cs @@ -86,7 +86,7 @@ public static class QBEGenerator return $"$cstring{++_cStringLiteralIndex}"; } - private static string FuncName(IBoundFuncSignature funcDef) + private static string FuncName(BoundFuncDefinition funcDef) { return funcDef switch { diff --git a/src/Syntax/DefinitionTable.cs b/src/Syntax/DefinitionTable.cs index 2651dd6..4df8f31 100644 --- a/src/Syntax/DefinitionTable.cs +++ b/src/Syntax/DefinitionTable.cs @@ -15,12 +15,12 @@ public class DefinitionTable _syntaxTrees = syntaxTrees; } - public Optional LookupFunc(string @namespace, string name) + public Optional LookupFunc(string @namespace, string name) { var definition = _syntaxTrees .Where(c => c.Namespace == @namespace) .SelectMany(c => c.Definitions) - .OfType() + .OfType() .SingleOrDefault(f => f.Name == name); return Optional.OfNullable(definition); @@ -54,12 +54,12 @@ public class BoundDefinitionTable _syntaxTrees = syntaxTrees; } - public Optional LookupFunc(string @namespace, string name) + public Optional LookupFunc(string @namespace, string name) { var definition = _syntaxTrees .Where(c => c.Namespace == @namespace) .SelectMany(c => c.Definitions) - .OfType() + .OfType() .SingleOrDefault(f => f.Name == name); return Optional.OfNullable(definition); diff --git a/src/Syntax/Parsing/Node/Definition.cs b/src/Syntax/Parsing/Node/Definition.cs index d9741d5..aec8f54 100644 --- a/src/Syntax/Parsing/Node/Definition.cs +++ b/src/Syntax/Parsing/Node/Definition.cs @@ -6,29 +6,10 @@ namespace Syntax.Parsing.Node; public abstract record DefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace) : Node(Tokens); -public record FuncParameter(string Name, NubType Type) -{ - public override string ToString() => $"{Name}: {Type}"; -} - -public interface IFuncSignature -{ - public string Name { get; } - public List Parameters { get; } - public NubType ReturnType { get; } - - public string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; -} - -public record LocalFuncDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, List Parameters, BlockNode Body, NubType ReturnType, bool Exported) : DefinitionNode(Tokens, Documentation, Namespace), IFuncSignature -{ - public override string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; -} - -public record ExternFuncDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, string CallName, List Parameters, NubType ReturnType) : DefinitionNode(Tokens, Documentation, Namespace), IFuncSignature -{ - public override string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; -} +public record FuncParameter(string Name, NubType Type); +public abstract record FuncDefinition(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, List Parameters, NubType ReturnType) : DefinitionNode(Tokens, Documentation, Namespace); +public record LocalFuncDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, List Parameters, BlockNode Body, NubType ReturnType, bool Exported) : FuncDefinition(Tokens, Documentation, Namespace, Name, Parameters, ReturnType); +public record ExternFuncDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, string CallName, List Parameters, NubType ReturnType) : FuncDefinition(Tokens, Documentation, Namespace, Name, Parameters, ReturnType); public record StructField(string Name, NubType Type, Optional Value); public record StructDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, List Fields) : DefinitionNode(Tokens, Documentation, Namespace); diff --git a/src/Syntax/Typing/BoundNode/Definition.cs b/src/Syntax/Typing/BoundNode/Definition.cs index dcb2356..fcfa22c 100644 --- a/src/Syntax/Typing/BoundNode/Definition.cs +++ b/src/Syntax/Typing/BoundNode/Definition.cs @@ -5,29 +5,10 @@ namespace Syntax.Typing.BoundNode; public abstract record BoundDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace) : BoundNode(Tokens); -public record BoundFuncParameter(string Name, NubType Type) -{ - public override string ToString() => $"{Name}: {Type}"; -} - -public interface IBoundFuncSignature -{ - public string Name { get; } - public List Parameters { get; } - public NubType ReturnType { get; } - - public string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; -} - -public record BoundLocalFuncDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, List Parameters, BoundBlockNode Body, NubType ReturnType, bool Exported) : BoundDefinitionNode(Tokens, Documentation, Namespace), IBoundFuncSignature -{ - public override string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; -} - -public record BoundExternFuncDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, string CallName, List Parameters, NubType ReturnType) : BoundDefinitionNode(Tokens, Documentation, Namespace), IBoundFuncSignature -{ - public override string ToString() => $"{Name}({string.Join(", ", Parameters.Select(p => p.ToString()))}){": " + ReturnType}"; -} +public record BoundFuncParameter(string Name, NubType Type); +public abstract record BoundFuncDefinition(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, List Parameters, NubType ReturnType) : BoundDefinitionNode(Tokens, Documentation, Namespace); +public record BoundLocalFuncDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, List Parameters, BoundBlockNode Body, NubType ReturnType, bool Exported) : BoundFuncDefinition(Tokens, Documentation, Namespace, Name, Parameters, ReturnType); +public record BoundExternFuncDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, string CallName, List Parameters, NubType ReturnType) : BoundFuncDefinition(Tokens, Documentation, Namespace, Name, Parameters, ReturnType); public record BoundStructField(string Name, NubType Type, Optional Value); public record BoundStructDefinitionNode(IEnumerable Tokens, Optional Documentation, string Namespace, string Name, List Fields) : BoundDefinitionNode(Tokens, Documentation, Namespace);