This commit is contained in:
nub31
2025-07-22 23:20:56 +02:00
parent 62c9d86cda
commit d993581361
26 changed files with 1002 additions and 1003 deletions

View File

@@ -5,12 +5,11 @@ using NubLang.Common;
using NubLang.Diagnostics;
using NubLang.Generation;
using NubLang.Generation.QBE;
using NubLang.Syntax.Binding;
using NubLang.Syntax.Binding.Node;
using NubLang.Syntax.Parsing;
using NubLang.Syntax.Parsing.Node;
using NubLang.Syntax.Tokenization;
using Binder = NubLang.Syntax.Binding.Binder;
using NubLang.Parsing;
using NubLang.Parsing.Syntax;
using NubLang.Tokenization;
using NubLang.TypeChecking;
using NubLang.TypeChecking.Node;
const string BIN_DIR = "bin";
const string INT_DIR = "bin-int";
@@ -92,14 +91,14 @@ foreach (var file in options.Files)
var definitionTable = new DefinitionTable(syntaxTrees);
var boundSyntaxTrees = new List<BoundSyntaxTree>();
var typedSyntaxTrees = new List<TypedSyntaxTree>();
foreach (var syntaxTree in syntaxTrees)
{
var binder = new Binder(syntaxTree, definitionTable);
var boundSyntaxTree = binder.Bind();
diagnostics.AddRange(boundSyntaxTree.Diagnostics);
boundSyntaxTrees.Add(boundSyntaxTree);
var typeChecker = new TypeChecker(syntaxTree, definitionTable);
var typedSyntaxTree = typeChecker.Check();
diagnostics.AddRange(typeChecker.GetDiagnostics());
typedSyntaxTrees.Add(typedSyntaxTree);
}
foreach (var diagnostic in diagnostics)
@@ -112,15 +111,15 @@ if (diagnostics.Any(diagnostic => diagnostic.Severity == DiagnosticSeverity.Erro
return 1;
}
var boundDefinitionTable = new BoundDefinitionTable(boundSyntaxTrees);
var typedDefinitionTable = new TypedDefinitionTable(typedSyntaxTrees);
var objectFiles = new List<string>();
foreach (var syntaxTree in boundSyntaxTrees)
foreach (var syntaxTree in typedSyntaxTrees)
{
var outFileName = HexString.CreateUnique(8);
var generator = new QBEGenerator(syntaxTree, boundDefinitionTable);
var generator = new QBEGenerator(syntaxTree, typedDefinitionTable);
var ssa = generator.Emit();
File.WriteAllText(Path.Join(INT_DEBUG_DIR, $"{outFileName}.ssa"), ssa);