using NubLang.Common; using NubLang.Syntax.Tokenization; namespace NubLang.Syntax.Parsing.Node; public abstract record DefinitionSyntax(IReadOnlyList Tokens, string Namespace) : SyntaxNode(Tokens); public record FuncParameterSyntax(IReadOnlyList Tokens, string Name, TypeSyntax Type) : SyntaxNode(Tokens); public record FuncSignatureSyntax(IReadOnlyList Tokens, IReadOnlyList Parameters, TypeSyntax ReturnType) : SyntaxNode(Tokens); public record LocalFuncSyntax(IReadOnlyList Tokens, string Namespace, string Name, FuncSignatureSyntax Signature, BlockSyntax Body) : DefinitionSyntax(Tokens, Namespace); public record ExternFuncSyntax(IReadOnlyList Tokens, string Namespace, string Name, string CallName, FuncSignatureSyntax Signature) : DefinitionSyntax(Tokens, Namespace); public record StructFieldSyntax(IReadOnlyList Tokens, int Index, string Name, TypeSyntax Type, Optional Value) : SyntaxNode(Tokens); public record StructSyntax(IReadOnlyList Tokens, string Namespace, string Name, IReadOnlyList Fields) : DefinitionSyntax(Tokens, Namespace); public record TraitFuncSyntax(IReadOnlyList Tokens, string Name, FuncSignatureSyntax Signature) : SyntaxNode(Tokens); public record TraitSyntax(IReadOnlyList Tokens, string Namespace, string Name, IReadOnlyList Functions) : DefinitionSyntax(Tokens, Namespace); public record TraitFuncImplSyntax(IReadOnlyList Tokens, string Name, FuncSignatureSyntax Signature, BlockSyntax Body) : SyntaxNode(Tokens); public record TraitImplSyntax(IReadOnlyList Tokens, string Namespace, TypeSyntax TraitType, TypeSyntax ForType, IReadOnlyList Functions) : DefinitionSyntax(Tokens, Namespace);