using NubLang.Common; using NubLang.Syntax.Tokenization; namespace NubLang.Syntax.Parsing.Node; public abstract record DefinitionSyntax(IReadOnlyList Tokens, string Namespace) : SyntaxNode(Tokens); public abstract record DefinitionMemberSyntax(IReadOnlyList Tokens) : SyntaxNode(Tokens); public record FuncParameterSyntax(IReadOnlyList Tokens, string Name, NubType Type) : DefinitionMemberSyntax(Tokens); public record FuncSignatureSyntax(IReadOnlyList Tokens, IReadOnlyList Parameters, NubType ReturnType) : DefinitionMemberSyntax(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, NubType Type, Optional Value) : DefinitionMemberSyntax(Tokens); public record StructSyntax(IReadOnlyList Tokens, string Namespace, string Name, IReadOnlyList Fields) : DefinitionSyntax(Tokens, Namespace); public record TraitFuncSyntax(IReadOnlyList Tokens, string Name, FuncSignatureSyntax Signature) : DefinitionMemberSyntax(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) : DefinitionMemberSyntax(Tokens); public record TraitImplSyntax(IReadOnlyList Tokens, string Namespace, NubType TraitType, NubType ForType, IReadOnlyList Functions) : DefinitionSyntax(Tokens, Namespace);