Reordering

This commit is contained in:
nub31
2025-07-09 20:32:59 +02:00
parent 0aa0911b0f
commit a0b7b9026c
8 changed files with 96 additions and 72 deletions

View File

@@ -0,0 +1,60 @@
using NubLang.Syntax.Parsing.Node;
namespace NubLang.Syntax.Binding;
public class DefinitionTable
{
private readonly List<DefinitionSyntax> _definitions;
public DefinitionTable(IEnumerable<SyntaxTree> syntaxTrees)
{
_definitions = syntaxTrees.SelectMany(x => x.Definitions).ToList();
}
public IEnumerable<LocalFuncSyntax> LookupLocalFunc(string @namespace, string name)
{
return _definitions
.OfType<LocalFuncSyntax>()
.Where(x => x.Namespace == @namespace && x.Name == name);
}
public IEnumerable<ExternFuncSyntax> LookupExternFunc(string @namespace, string name)
{
return _definitions
.OfType<ExternFuncSyntax>()
.Where(x => x.Namespace == @namespace && x.Name == name);
}
public IEnumerable<StructSyntax> LookupStruct(string @namespace, string name)
{
return _definitions
.OfType<StructSyntax>()
.Where(x => x.Namespace == @namespace && x.Name == name);
}
public IEnumerable<StructFieldSyntax> LookupStructField(StructSyntax structNode, string field)
{
return structNode.Fields.Where(x => x.Name == field);
}
public IEnumerable<TraitFuncImplSyntax> LookupTraitFuncImpl(NubType forType, string name)
{
return _definitions
.OfType<TraitImplSyntax>()
.Where(x => x.ForType == forType)
.SelectMany(x => x.Functions)
.Where(x => x.Name == name);
}
public IEnumerable<TraitSyntax> LookupTrait(string @namespace, string name)
{
return _definitions
.OfType<TraitSyntax>()
.Where(x => x.Namespace == @namespace && x.Name == name);
}
public IEnumerable<TraitFuncSyntax> LookupTraitFunc(TraitSyntax trait, string name)
{
return trait.Functions.Where(x => x.Name == name);
}
}