This commit is contained in:
nub31
2025-06-13 00:07:14 +02:00
parent 95dd7a1399
commit 351d4ebd68
64 changed files with 167 additions and 176 deletions

View File

@@ -0,0 +1,44 @@
using common;
using syntax.Parsing;
using syntax.Parsing.Definitions;
namespace syntax;
public class DefinitionTable
{
private readonly IEnumerable<CompilationUnit> _compilationUnits;
public DefinitionTable(IEnumerable<CompilationUnit> compilationUnits)
{
_compilationUnits = compilationUnits;
}
public Optional<IFuncSignature> LookupFunc(string @namespace, string name)
{
var definition = _compilationUnits
.Where(c => c.Namespace == @namespace)
.SelectMany(c => c.Definitions)
.OfType<IFuncSignature>()
.SingleOrDefault(f => f.Name == name);
return Optional.OfNullable(definition);
}
public Optional<StructDefinitionNode> LookupStruct(string @namespace, string name)
{
var definition = _compilationUnits
.Where(c => c.Namespace == @namespace)
.SelectMany(c => c.Definitions)
.OfType<StructDefinitionNode>()
.SingleOrDefault(f => f.Name == name);
return Optional.OfNullable(definition);
}
public IEnumerable<StructDefinitionNode> GetStructs()
{
return _compilationUnits
.SelectMany(c => c.Definitions)
.OfType<StructDefinitionNode>();
}
}