From 456e13cc6ea9ecc8be25193ae14b9ded7de1ed4e Mon Sep 17 00:00:00 2001 From: nub31 Date: Mon, 18 Aug 2025 13:47:53 +0200 Subject: [PATCH] Small refactoring --- .../NubLang/Generation/QBE/QBEGenerator.cs | 7 +-- src/compiler/NubLang/Parsing/Parser.cs | 55 ++++++++----------- 2 files changed, 23 insertions(+), 39 deletions(-) diff --git a/src/compiler/NubLang/Generation/QBE/QBEGenerator.cs b/src/compiler/NubLang/Generation/QBE/QBEGenerator.cs index cdd9024..af0acbd 100644 --- a/src/compiler/NubLang/Generation/QBE/QBEGenerator.cs +++ b/src/compiler/NubLang/Generation/QBE/QBEGenerator.cs @@ -1247,15 +1247,10 @@ public class QBEGenerator return (offset + alignment - 1) & ~(alignment - 1); } - private int OffsetOf(StructNode structDef, string member) + private static int OffsetOf(StructNode structDef, string member) { var offset = 0; - // if (structDef.InterfaceImplementations.Any()) - // { - // offset = 8; - // } - foreach (var field in structDef.Fields) { if (field.Name == member) diff --git a/src/compiler/NubLang/Parsing/Parser.cs b/src/compiler/NubLang/Parsing/Parser.cs index ea09d34..08b0b41 100644 --- a/src/compiler/NubLang/Parsing/Parser.cs +++ b/src/compiler/NubLang/Parsing/Parser.cs @@ -75,16 +75,12 @@ public sealed class Parser while (!TryExpectSymbol(Symbol.CloseParen)) { - var parameter = ParseFuncParameter(); - parameters.Add(parameter); + parameters.Add(ParseFuncParameter()); - if (!TryExpectSymbol(Symbol.Comma) && CurrentToken is not SymbolToken { Symbol: Symbol.CloseParen }) + if (!TryExpectSymbol(Symbol.Comma)) { - _diagnostics.Add(Diagnostic - .Warning("Missing comma between function parameters") - .WithHelp("Add a ',' to separate parameters") - .At(CurrentToken) - .Build()); + ExpectSymbol(Symbol.CloseParen); + break; } } @@ -491,17 +487,14 @@ public sealed class Parser if (TryExpectSymbol(Symbol.OpenParen)) { var parameters = new List(); + while (!TryExpectSymbol(Symbol.CloseParen)) { - var parameter = ParseExpression(); - parameters.Add(parameter); - if (!TryExpectSymbol(Symbol.Comma) && CurrentToken is not SymbolToken { Symbol: Symbol.CloseParen }) + parameters.Add(ParseExpression()); + if (!TryExpectSymbol(Symbol.Comma)) { - _diagnostics.Add(Diagnostic - .Warning("Missing comma between function arguments") - .WithHelp("Add a ',' to separate arguments") - .At(CurrentToken) - .Build()); + ExpectSymbol(Symbol.CloseParen); + break; } } @@ -524,17 +517,14 @@ public sealed class Parser if (TryExpectSymbol(Symbol.OpenParen)) { var parameters = new List(); + while (!TryExpectSymbol(Symbol.CloseParen)) { - var parameter = ParseExpression(); - parameters.Add(parameter); - if (!TryExpectSymbol(Symbol.Comma) && CurrentToken is not SymbolToken { Symbol: Symbol.CloseParen }) + parameters.Add(ParseExpression()); + if (!TryExpectSymbol(Symbol.Comma)) { - _diagnostics.Add(Diagnostic - .Warning("Missing comma between function arguments") - .WithHelp("Add a ',' to separate arguments") - .At(CurrentToken) - .Build()); + ExpectSymbol(Symbol.CloseParen); + break; } } @@ -635,22 +625,21 @@ public sealed class Parser if (TryExpectSymbol(Symbol.Func)) { ExpectSymbol(Symbol.OpenParen); + List parameters = []; while (!TryExpectSymbol(Symbol.CloseParen)) { - var parameter = ParseType(); - parameters.Add(parameter); - if (!TryExpectSymbol(Symbol.Comma) && CurrentToken is not SymbolToken { Symbol: Symbol.CloseParen }) + parameters.Add(ParseType()); + if (!TryExpectSymbol(Symbol.Comma)) { - _diagnostics.Add(Diagnostic - .Warning("Missing comma between func type arguments") - .WithHelp("Add a ',' to separate arguments") - .At(CurrentToken) - .Build()); + ExpectSymbol(Symbol.CloseParen); + break; } } - var returnType = TryExpectSymbol(Symbol.Colon) ? ParseType() : new VoidTypeSyntax([]); + var returnType = TryExpectSymbol(Symbol.Colon) + ? ParseType() + : new VoidTypeSyntax([]); return new FuncTypeSyntax(GetTokens(startIndex), parameters, returnType); }