diff --git a/build.sh b/build.sh deleted file mode 100755 index 4799dcf..0000000 --- a/build.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -dotnet run --project src/Nub.Lang.CLI/ example \ No newline at end of file diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..e9adf39 --- /dev/null +++ b/run.sh @@ -0,0 +1,3 @@ +#!/bin/bash +dotnet run --project src/Nub.Lang.CLI/ example +./bin/out \ No newline at end of file diff --git a/src/Nub.Lang.CLI/Nub.Lang.CLI.csproj b/src/Nub.Lang.CLI/Nub.Lang.CLI.csproj index d5213cd..b06150f 100644 --- a/src/Nub.Lang.CLI/Nub.Lang.CLI.csproj +++ b/src/Nub.Lang.CLI/Nub.Lang.CLI.csproj @@ -10,7 +10,8 @@ - + + diff --git a/src/Nub.Lang.CLI/Program.cs b/src/Nub.Lang.CLI/Program.cs index 23df91a..f72995f 100644 --- a/src/Nub.Lang.CLI/Program.cs +++ b/src/Nub.Lang.CLI/Program.cs @@ -1,11 +1,11 @@ using System.Diagnostics; using System.Reflection; -using Nub.Lang; -using Nub.Lang.Frontend; -using Nub.Lang.Frontend.Generation; -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Common; +using Nub.Lang.Generation.QBE; +using Nub.Lang.Syntax; +using Nub.Lang.Syntax.Parsing; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; const string BIN_DIR = "bin"; const string BIN_INT_DIR = "bin-int"; @@ -48,7 +48,7 @@ foreach (var file in Directory.EnumerateFiles(srcDir, "*.nub", SearchOption.AllD var content = File.ReadAllText(file); var sourceText = new SourceText(file, content); - var tokenizeResult = Lexer.Tokenize(sourceText); + var tokenizeResult = Tokenizer.Tokenize(sourceText); tokenizeResult.PrintAllDiagnostics(); error = error || tokenizeResult.HasErrors; @@ -96,12 +96,10 @@ foreach (var compilationUnit in compilationUnits) var asmPath = Path.Combine(BIN_INT_DIR, $"{baseOutputName}.s"); await File.WriteAllTextAsync(asmPath, assemblyCode); - Console.Out.WriteLine($"Generated: {asmPath}"); var objPath = Path.Combine(BIN_INT_DIR, $"{baseOutputName}.o"); await InvokeAssembler(asmPath, objPath); objectFiles.Add(objPath); - Console.Out.WriteLine($"Assembled: {objPath}"); } catch (Exception ex) { @@ -135,7 +133,6 @@ foreach (var resourceName in runtimeResources) await InvokeAssembler(asmPath, objPath); objectFiles.Add(objPath); - Console.Out.WriteLine($"Runtime assembled: {objPath}"); File.Delete(asmPath); } @@ -150,7 +147,6 @@ try { var outputPath = Path.Combine(BIN_DIR, "out"); await InvokeLinker(objectFiles, outputPath); - Console.Out.WriteLine($"Linked executable: {outputPath}"); } catch (Exception ex) { diff --git a/src/Nub.Lang/Nub.Lang.csproj b/src/Nub.Lang.Common/Nub.Lang.Common.csproj similarity index 82% rename from src/Nub.Lang/Nub.Lang.csproj rename to src/Nub.Lang.Common/Nub.Lang.Common.csproj index b682a68..17b910f 100644 --- a/src/Nub.Lang/Nub.Lang.csproj +++ b/src/Nub.Lang.Common/Nub.Lang.Common.csproj @@ -4,7 +4,6 @@ net9.0 enable enable - true diff --git a/src/Nub.Lang/Optional.cs b/src/Nub.Lang.Common/Optional.cs similarity index 98% rename from src/Nub.Lang/Optional.cs rename to src/Nub.Lang.Common/Optional.cs index 0824254..7e0a782 100644 --- a/src/Nub.Lang/Optional.cs +++ b/src/Nub.Lang.Common/Optional.cs @@ -1,6 +1,6 @@ using System.Diagnostics.CodeAnalysis; -namespace Nub.Lang; +namespace Nub.Lang.Common; public readonly struct Optional { diff --git a/src/Nub.Lang/Variant.cs b/src/Nub.Lang.Common/Variant.cs similarity index 97% rename from src/Nub.Lang/Variant.cs rename to src/Nub.Lang.Common/Variant.cs index 02b7347..d947ff2 100644 --- a/src/Nub.Lang/Variant.cs +++ b/src/Nub.Lang.Common/Variant.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang; +namespace Nub.Lang.Common; public readonly struct Variant where T1 : notnull where T2 : notnull { diff --git a/src/Nub.Lang.Generation/Nub.Lang.Generation.csproj b/src/Nub.Lang.Generation/Nub.Lang.Generation.csproj new file mode 100644 index 0000000..2a78ccc --- /dev/null +++ b/src/Nub.Lang.Generation/Nub.Lang.Generation.csproj @@ -0,0 +1,14 @@ + + + + net9.0 + enable + enable + + + + + + + + diff --git a/src/Nub.Lang/Frontend/Generation/QBEGenerator.cs b/src/Nub.Lang.Generation/QBE/QBEGenerator.cs similarity index 99% rename from src/Nub.Lang/Frontend/Generation/QBEGenerator.cs rename to src/Nub.Lang.Generation/QBE/QBEGenerator.cs index ab6111b..9af5317 100644 --- a/src/Nub.Lang/Frontend/Generation/QBEGenerator.cs +++ b/src/Nub.Lang.Generation/QBE/QBEGenerator.cs @@ -1,14 +1,15 @@ using System.Diagnostics; using System.Globalization; using System.Text; -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing; -using Nub.Lang.Frontend.Parsing.Definitions; -using Nub.Lang.Frontend.Parsing.Expressions; -using Nub.Lang.Frontend.Parsing.Statements; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Syntax; +using Nub.Lang.Syntax.Parsing; +using Nub.Lang.Syntax.Parsing.Definitions; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Parsing.Statements; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; -namespace Nub.Lang.Frontend.Generation; +namespace Nub.Lang.Generation.QBE; public static class QBEGenerator { diff --git a/src/Nub.Lang/Frontend/DefinitionTable.cs b/src/Nub.Lang.Syntax/DefinitionTable.cs similarity index 90% rename from src/Nub.Lang/Frontend/DefinitionTable.cs rename to src/Nub.Lang.Syntax/DefinitionTable.cs index edb0615..830c85e 100644 --- a/src/Nub.Lang/Frontend/DefinitionTable.cs +++ b/src/Nub.Lang.Syntax/DefinitionTable.cs @@ -1,7 +1,8 @@ -using Nub.Lang.Frontend.Parsing; -using Nub.Lang.Frontend.Parsing.Definitions; +using Nub.Lang.Common; +using Nub.Lang.Syntax.Parsing; +using Nub.Lang.Syntax.Parsing.Definitions; -namespace Nub.Lang.Frontend; +namespace Nub.Lang.Syntax; public class DefinitionTable { diff --git a/src/Nub.Lang/Diagnostics/ConsoleColors.cs b/src/Nub.Lang.Syntax/Diagnostics/ConsoleColors.cs similarity index 97% rename from src/Nub.Lang/Diagnostics/ConsoleColors.cs rename to src/Nub.Lang.Syntax/Diagnostics/ConsoleColors.cs index c1d05a0..a2f5128 100644 --- a/src/Nub.Lang/Diagnostics/ConsoleColors.cs +++ b/src/Nub.Lang.Syntax/Diagnostics/ConsoleColors.cs @@ -1,8 +1,7 @@ using System.Text; -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Diagnostics; +namespace Nub.Lang.Syntax.Diagnostics; public static class ConsoleColors { @@ -131,7 +130,7 @@ public static class ConsoleColors public static string ColorizeSource(string source) { var sourceText = new SourceText(string.Empty, source); - var tokens = Lexer.Tokenize(sourceText).Value; + var tokens = Tokenizer.Tokenize(sourceText).Value; var result = new StringBuilder(); var lastCharIndex = 0; diff --git a/src/Nub.Lang/Diagnostics/Diagnostic.cs b/src/Nub.Lang.Syntax/Diagnostics/Diagnostic.cs similarity index 98% rename from src/Nub.Lang/Diagnostics/Diagnostic.cs rename to src/Nub.Lang.Syntax/Diagnostics/Diagnostic.cs index b6b151a..cb2781d 100644 --- a/src/Nub.Lang/Diagnostics/Diagnostic.cs +++ b/src/Nub.Lang.Syntax/Diagnostics/Diagnostic.cs @@ -1,8 +1,8 @@ using System.Text; -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing; +using Nub.Lang.Syntax.Parsing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Diagnostics; +namespace Nub.Lang.Syntax.Diagnostics; public class Diagnostic { diff --git a/src/Nub.Lang/Diagnostics/DiagnosticsResult.cs b/src/Nub.Lang.Syntax/Diagnostics/DiagnosticsResult.cs similarity index 93% rename from src/Nub.Lang/Diagnostics/DiagnosticsResult.cs rename to src/Nub.Lang.Syntax/Diagnostics/DiagnosticsResult.cs index f1c761e..48d8786 100644 --- a/src/Nub.Lang/Diagnostics/DiagnosticsResult.cs +++ b/src/Nub.Lang.Syntax/Diagnostics/DiagnosticsResult.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Diagnostics; +namespace Nub.Lang.Syntax.Diagnostics; public class DiagnosticsResult(List diagnostics) { diff --git a/src/Nub.Lang.Syntax/Nub.Lang.Syntax.csproj b/src/Nub.Lang.Syntax/Nub.Lang.Syntax.csproj new file mode 100644 index 0000000..ecd1e16 --- /dev/null +++ b/src/Nub.Lang.Syntax/Nub.Lang.Syntax.csproj @@ -0,0 +1,14 @@ + + + + net9.0 + enable + enable + true + + + + + + + diff --git a/src/Nub.Lang/Frontend/Parsing/CompilationUnit.cs b/src/Nub.Lang.Syntax/Parsing/CompilationUnit.cs similarity index 70% rename from src/Nub.Lang/Frontend/Parsing/CompilationUnit.cs rename to src/Nub.Lang.Syntax/Parsing/CompilationUnit.cs index 52247f0..80eb523 100644 --- a/src/Nub.Lang/Frontend/Parsing/CompilationUnit.cs +++ b/src/Nub.Lang.Syntax/Parsing/CompilationUnit.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Parsing.Definitions; +using Nub.Lang.Syntax.Parsing.Definitions; -namespace Nub.Lang.Frontend.Parsing; +namespace Nub.Lang.Syntax.Parsing; public class CompilationUnit(string @namespace, List definitions) { diff --git a/src/Nub.Lang/Frontend/Parsing/Definitions/DefinitionNode.cs b/src/Nub.Lang.Syntax/Parsing/Definitions/DefinitionNode.cs similarity index 70% rename from src/Nub.Lang/Frontend/Parsing/Definitions/DefinitionNode.cs rename to src/Nub.Lang.Syntax/Parsing/Definitions/DefinitionNode.cs index 13a47f9..8a7470e 100644 --- a/src/Nub.Lang/Frontend/Parsing/Definitions/DefinitionNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Definitions/DefinitionNode.cs @@ -1,6 +1,7 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Common; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Definitions; +namespace Nub.Lang.Syntax.Parsing.Definitions; public abstract class DefinitionNode(IReadOnlyList tokens, Optional documentation, string @namespace) : Node(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Definitions/FuncDefinitionNode.cs b/src/Nub.Lang.Syntax/Parsing/Definitions/FuncDefinitionNode.cs similarity index 90% rename from src/Nub.Lang/Frontend/Parsing/Definitions/FuncDefinitionNode.cs rename to src/Nub.Lang.Syntax/Parsing/Definitions/FuncDefinitionNode.cs index bd83b98..e32f502 100644 --- a/src/Nub.Lang/Frontend/Parsing/Definitions/FuncDefinitionNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Definitions/FuncDefinitionNode.cs @@ -1,8 +1,9 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Statements; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Common; +using Nub.Lang.Syntax.Parsing.Statements; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; -namespace Nub.Lang.Frontend.Parsing.Definitions; +namespace Nub.Lang.Syntax.Parsing.Definitions; public class FuncParameter(string name, NubType type) { diff --git a/src/Nub.Lang/Frontend/Parsing/Definitions/StructDefinitionNode.cs b/src/Nub.Lang.Syntax/Parsing/Definitions/StructDefinitionNode.cs similarity index 74% rename from src/Nub.Lang/Frontend/Parsing/Definitions/StructDefinitionNode.cs rename to src/Nub.Lang.Syntax/Parsing/Definitions/StructDefinitionNode.cs index 09bb11a..a039e2e 100644 --- a/src/Nub.Lang/Frontend/Parsing/Definitions/StructDefinitionNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Definitions/StructDefinitionNode.cs @@ -1,8 +1,9 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Expressions; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Common; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; -namespace Nub.Lang.Frontend.Parsing.Definitions; +namespace Nub.Lang.Syntax.Parsing.Definitions; public class StructField(string name, NubType type, Optional value) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/AddressOfNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/AddressOfNode.cs similarity index 66% rename from src/Nub.Lang/Frontend/Parsing/Expressions/AddressOfNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/AddressOfNode.cs index 9209ffe..ac4f135 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/AddressOfNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/AddressOfNode.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class AddressOfNode(IReadOnlyList tokens, LValueNode expression) : ExpressionNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/AnonymousFuncNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/AnonymousFuncNode.cs similarity index 61% rename from src/Nub.Lang/Frontend/Parsing/Expressions/AnonymousFuncNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/AnonymousFuncNode.cs index 2162e0a..9b06149 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/AnonymousFuncNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/AnonymousFuncNode.cs @@ -1,9 +1,9 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Definitions; -using Nub.Lang.Frontend.Parsing.Statements; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Syntax.Parsing.Definitions; +using Nub.Lang.Syntax.Parsing.Statements; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class AnonymousFuncNode(IReadOnlyList tokens, List parameters, BlockNode body, NubType returnType) : ExpressionNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/ArrayIndexAccessNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/ArrayIndexAccessNode.cs similarity index 73% rename from src/Nub.Lang/Frontend/Parsing/Expressions/ArrayIndexAccessNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/ArrayIndexAccessNode.cs index c0a1338..705d763 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/ArrayIndexAccessNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/ArrayIndexAccessNode.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class ArrayIndexAccessNode(IReadOnlyList tokens, ExpressionNode array, ExpressionNode index) : LValueNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/ArrayInitializerNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/ArrayInitializerNode.cs similarity index 68% rename from src/Nub.Lang/Frontend/Parsing/Expressions/ArrayInitializerNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/ArrayInitializerNode.cs index 6b92ba4..960075d 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/ArrayInitializerNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/ArrayInitializerNode.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class ArrayInitializerNode(IReadOnlyList tokens, ExpressionNode capacity, NubType elementType) : ExpressionNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/BinaryExpressionNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/BinaryExpressionNode.cs similarity index 85% rename from src/Nub.Lang/Frontend/Parsing/Expressions/BinaryExpressionNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/BinaryExpressionNode.cs index 1564591..6cc5912 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/BinaryExpressionNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/BinaryExpressionNode.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class BinaryExpressionNode(IReadOnlyList tokens, ExpressionNode left, BinaryExpressionOperator @operator, ExpressionNode right) : ExpressionNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/DereferenceNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/DereferenceNode.cs similarity index 66% rename from src/Nub.Lang/Frontend/Parsing/Expressions/DereferenceNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/DereferenceNode.cs index e91584e..1f6cd7e 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/DereferenceNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/DereferenceNode.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class DereferenceNode(IReadOnlyList tokens, ExpressionNode expression) : LValueNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/ExpressionNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/ExpressionNode.cs similarity index 76% rename from src/Nub.Lang/Frontend/Parsing/Expressions/ExpressionNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/ExpressionNode.cs index 9a749c3..1e3c0f8 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/ExpressionNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/ExpressionNode.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public abstract class ExpressionNode(IReadOnlyList tokens) : Node(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/FixedArrayInitializerNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/FixedArrayInitializerNode.cs similarity index 67% rename from src/Nub.Lang/Frontend/Parsing/Expressions/FixedArrayInitializerNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/FixedArrayInitializerNode.cs index 2c952c7..e709967 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/FixedArrayInitializerNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/FixedArrayInitializerNode.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class FixedArrayInitializerNode(IReadOnlyList tokens, NubType elementType, int capacity) : ExpressionNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/FuncCallNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/FuncCallNode.cs similarity index 80% rename from src/Nub.Lang/Frontend/Parsing/Expressions/FuncCallNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/FuncCallNode.cs index 7a44a78..b50a6ef 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/FuncCallNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/FuncCallNode.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class FuncCallNode(IReadOnlyList tokens, ExpressionNode expression, List parameters) : ExpressionNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/IdentifierNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/IdentifierNode.cs similarity index 74% rename from src/Nub.Lang/Frontend/Parsing/Expressions/IdentifierNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/IdentifierNode.cs index e1086f8..1ff9afa 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/IdentifierNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/IdentifierNode.cs @@ -1,6 +1,7 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Common; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class IdentifierNode(IReadOnlyList tokens, Optional @namespace, string name) : LValueNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/LiteralNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/LiteralNode.cs similarity index 70% rename from src/Nub.Lang/Frontend/Parsing/Expressions/LiteralNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/LiteralNode.cs index 1f52d00..9b02bcc 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/LiteralNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/LiteralNode.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class LiteralNode(IReadOnlyList tokens, string literal, LiteralKind kind) : ExpressionNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/MemberAccessNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/MemberAccessNode.cs similarity index 72% rename from src/Nub.Lang/Frontend/Parsing/Expressions/MemberAccessNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/MemberAccessNode.cs index c2aff51..54ffc5b 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/MemberAccessNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/MemberAccessNode.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class MemberAccessNode(IReadOnlyList tokens, ExpressionNode expression, string member) : LValueNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/StructInitializerNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/StructInitializerNode.cs similarity index 72% rename from src/Nub.Lang/Frontend/Parsing/Expressions/StructInitializerNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/StructInitializerNode.cs index b7d6861..d6198dd 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/StructInitializerNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/StructInitializerNode.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class StructInitializerNode(IReadOnlyList tokens, NubStructType structType, Dictionary initializers) : ExpressionNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Expressions/UnaryExpressionNode.cs b/src/Nub.Lang.Syntax/Parsing/Expressions/UnaryExpressionNode.cs similarity index 79% rename from src/Nub.Lang/Frontend/Parsing/Expressions/UnaryExpressionNode.cs rename to src/Nub.Lang.Syntax/Parsing/Expressions/UnaryExpressionNode.cs index ec75ff8..aa2f01f 100644 --- a/src/Nub.Lang/Frontend/Parsing/Expressions/UnaryExpressionNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Expressions/UnaryExpressionNode.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Expressions; +namespace Nub.Lang.Syntax.Parsing.Expressions; public class UnaryExpressionNode(IReadOnlyList tokens, UnaryExpressionOperator @operator, ExpressionNode operand) : ExpressionNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Node.cs b/src/Nub.Lang.Syntax/Parsing/Node.cs similarity index 62% rename from src/Nub.Lang/Frontend/Parsing/Node.cs rename to src/Nub.Lang.Syntax/Parsing/Node.cs index 7f84457..0fba550 100644 --- a/src/Nub.Lang/Frontend/Parsing/Node.cs +++ b/src/Nub.Lang.Syntax/Parsing/Node.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing; +namespace Nub.Lang.Syntax.Parsing; public abstract class Node(IReadOnlyList tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Parser.cs b/src/Nub.Lang.Syntax/Parsing/Parser.cs similarity index 99% rename from src/Nub.Lang/Frontend/Parsing/Parser.cs rename to src/Nub.Lang.Syntax/Parsing/Parser.cs index 9514d59..16179e4 100644 --- a/src/Nub.Lang/Frontend/Parsing/Parser.cs +++ b/src/Nub.Lang.Syntax/Parsing/Parser.cs @@ -1,13 +1,14 @@ using System.Diagnostics; using System.Diagnostics.CodeAnalysis; -using Nub.Lang.Diagnostics; -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Definitions; -using Nub.Lang.Frontend.Parsing.Expressions; -using Nub.Lang.Frontend.Parsing.Statements; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Common; +using Nub.Lang.Syntax.Diagnostics; +using Nub.Lang.Syntax.Parsing.Definitions; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Parsing.Statements; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; -namespace Nub.Lang.Frontend.Parsing; +namespace Nub.Lang.Syntax.Parsing; public static class Parser { diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/ArrayIndexAssignmentNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/ArrayIndexAssignmentNode.cs similarity index 69% rename from src/Nub.Lang/Frontend/Parsing/Statements/ArrayIndexAssignmentNode.cs rename to src/Nub.Lang.Syntax/Parsing/Statements/ArrayIndexAssignmentNode.cs index 1737521..890feee 100644 --- a/src/Nub.Lang/Frontend/Parsing/Statements/ArrayIndexAssignmentNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Statements/ArrayIndexAssignmentNode.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Expressions; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Statements; +namespace Nub.Lang.Syntax.Parsing.Statements; public class ArrayIndexAssignmentNode(IReadOnlyList tokens, ArrayIndexAccessNode arrayIndexAccess, ExpressionNode value) : StatementNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/BlockNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/BlockNode.cs similarity index 66% rename from src/Nub.Lang/Frontend/Parsing/Statements/BlockNode.cs rename to src/Nub.Lang.Syntax/Parsing/Statements/BlockNode.cs index 0d6b50e..89732b7 100644 --- a/src/Nub.Lang/Frontend/Parsing/Statements/BlockNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Statements/BlockNode.cs @@ -1,6 +1,6 @@ -using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Statements; +namespace Nub.Lang.Syntax.Parsing.Statements; public class BlockNode(IReadOnlyList tokens, List statements) : Node(tokens) { diff --git a/src/Nub.Lang.Syntax/Parsing/Statements/BreakNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/BreakNode.cs new file mode 100644 index 0000000..e8e4300 --- /dev/null +++ b/src/Nub.Lang.Syntax/Parsing/Statements/BreakNode.cs @@ -0,0 +1,5 @@ +using Nub.Lang.Syntax.Tokenization; + +namespace Nub.Lang.Syntax.Parsing.Statements; + +public class BreakNode(IReadOnlyList tokens) : StatementNode(tokens); \ No newline at end of file diff --git a/src/Nub.Lang.Syntax/Parsing/Statements/ContinueNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/ContinueNode.cs new file mode 100644 index 0000000..3309119 --- /dev/null +++ b/src/Nub.Lang.Syntax/Parsing/Statements/ContinueNode.cs @@ -0,0 +1,5 @@ +using Nub.Lang.Syntax.Tokenization; + +namespace Nub.Lang.Syntax.Parsing.Statements; + +public class ContinueNode(IReadOnlyList tokens) : StatementNode(tokens); \ No newline at end of file diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/DereferenceAssignmentNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/DereferenceAssignmentNode.cs similarity index 67% rename from src/Nub.Lang/Frontend/Parsing/Statements/DereferenceAssignmentNode.cs rename to src/Nub.Lang.Syntax/Parsing/Statements/DereferenceAssignmentNode.cs index 60b1632..77b140e 100644 --- a/src/Nub.Lang/Frontend/Parsing/Statements/DereferenceAssignmentNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Statements/DereferenceAssignmentNode.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Expressions; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Statements; +namespace Nub.Lang.Syntax.Parsing.Statements; public class DereferenceAssignmentNode(IReadOnlyList tokens, DereferenceNode dereference, ExpressionNode value) : StatementNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/IfNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/IfNode.cs similarity index 68% rename from src/Nub.Lang/Frontend/Parsing/Statements/IfNode.cs rename to src/Nub.Lang.Syntax/Parsing/Statements/IfNode.cs index e9934df..a84af29 100644 --- a/src/Nub.Lang/Frontend/Parsing/Statements/IfNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Statements/IfNode.cs @@ -1,7 +1,8 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Expressions; +using Nub.Lang.Common; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Statements; +namespace Nub.Lang.Syntax.Parsing.Statements; public class IfNode(IReadOnlyList tokens, ExpressionNode condition, BlockNode body, Optional> @else) : StatementNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/MemberAssignmentNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/MemberAssignmentNode.cs similarity index 67% rename from src/Nub.Lang/Frontend/Parsing/Statements/MemberAssignmentNode.cs rename to src/Nub.Lang.Syntax/Parsing/Statements/MemberAssignmentNode.cs index acf23cd..19c169a 100644 --- a/src/Nub.Lang/Frontend/Parsing/Statements/MemberAssignmentNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Statements/MemberAssignmentNode.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Expressions; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Statements; +namespace Nub.Lang.Syntax.Parsing.Statements; public class MemberAssignmentNode(IReadOnlyList tokens, MemberAccessNode expression, ExpressionNode value) : StatementNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/ReturnNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/ReturnNode.cs similarity index 53% rename from src/Nub.Lang/Frontend/Parsing/Statements/ReturnNode.cs rename to src/Nub.Lang.Syntax/Parsing/Statements/ReturnNode.cs index 1ece587..3acc5fd 100644 --- a/src/Nub.Lang/Frontend/Parsing/Statements/ReturnNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Statements/ReturnNode.cs @@ -1,7 +1,8 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Expressions; +using Nub.Lang.Common; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Statements; +namespace Nub.Lang.Syntax.Parsing.Statements; public class ReturnNode(IReadOnlyList tokens, Optional value) : StatementNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/StatementExpressionNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/StatementExpressionNode.cs similarity index 58% rename from src/Nub.Lang/Frontend/Parsing/Statements/StatementExpressionNode.cs rename to src/Nub.Lang.Syntax/Parsing/Statements/StatementExpressionNode.cs index 7ce7e98..d9400e6 100644 --- a/src/Nub.Lang/Frontend/Parsing/Statements/StatementExpressionNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Statements/StatementExpressionNode.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Expressions; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Statements; +namespace Nub.Lang.Syntax.Parsing.Statements; public class StatementExpressionNode(IReadOnlyList tokens, ExpressionNode expression) : StatementNode(tokens) { diff --git a/src/Nub.Lang.Syntax/Parsing/Statements/StatementNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/StatementNode.cs new file mode 100644 index 0000000..aaa2cea --- /dev/null +++ b/src/Nub.Lang.Syntax/Parsing/Statements/StatementNode.cs @@ -0,0 +1,5 @@ +using Nub.Lang.Syntax.Tokenization; + +namespace Nub.Lang.Syntax.Parsing.Statements; + +public abstract class StatementNode(IReadOnlyList tokens) : Node(tokens); \ No newline at end of file diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/VariableAssignmentNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/VariableAssignmentNode.cs similarity index 66% rename from src/Nub.Lang/Frontend/Parsing/Statements/VariableAssignmentNode.cs rename to src/Nub.Lang.Syntax/Parsing/Statements/VariableAssignmentNode.cs index dd64213..e6878f4 100644 --- a/src/Nub.Lang/Frontend/Parsing/Statements/VariableAssignmentNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Statements/VariableAssignmentNode.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Expressions; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Statements; +namespace Nub.Lang.Syntax.Parsing.Statements; public class VariableAssignmentNode(IReadOnlyList tokens, IdentifierNode identifier, ExpressionNode value) : StatementNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/VariableDeclarationNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/VariableDeclarationNode.cs similarity index 65% rename from src/Nub.Lang/Frontend/Parsing/Statements/VariableDeclarationNode.cs rename to src/Nub.Lang.Syntax/Parsing/Statements/VariableDeclarationNode.cs index 24ea259..d5beed9 100644 --- a/src/Nub.Lang/Frontend/Parsing/Statements/VariableDeclarationNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Statements/VariableDeclarationNode.cs @@ -1,8 +1,9 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Expressions; -using Nub.Lang.Frontend.Typing; +using Nub.Lang.Common; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Tokenization; +using Nub.Lang.Syntax.Typing; -namespace Nub.Lang.Frontend.Parsing.Statements; +namespace Nub.Lang.Syntax.Parsing.Statements; public class VariableDeclarationNode(IReadOnlyList tokens, string name, Optional explicitType, Optional value) : StatementNode(tokens) { diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/WhileNode.cs b/src/Nub.Lang.Syntax/Parsing/Statements/WhileNode.cs similarity index 63% rename from src/Nub.Lang/Frontend/Parsing/Statements/WhileNode.cs rename to src/Nub.Lang.Syntax/Parsing/Statements/WhileNode.cs index 4dce315..13aa304 100644 --- a/src/Nub.Lang/Frontend/Parsing/Statements/WhileNode.cs +++ b/src/Nub.Lang.Syntax/Parsing/Statements/WhileNode.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing.Expressions; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Parsing.Statements; +namespace Nub.Lang.Syntax.Parsing.Statements; public class WhileNode(IReadOnlyList tokens, ExpressionNode condition, BlockNode body) : StatementNode(tokens) { diff --git a/src/Nub.Lang/Source.cs b/src/Nub.Lang.Syntax/Source.cs similarity index 99% rename from src/Nub.Lang/Source.cs rename to src/Nub.Lang.Syntax/Source.cs index c2d3ef7..3cd0095 100644 --- a/src/Nub.Lang/Source.cs +++ b/src/Nub.Lang.Syntax/Source.cs @@ -1,6 +1,6 @@ using System.Diagnostics.CodeAnalysis; -namespace Nub.Lang; +namespace Nub.Lang.Syntax; /// /// Represents a location in source code with line and column information. diff --git a/src/Nub.Lang/Frontend/Lexing/DocumentationToken.cs b/src/Nub.Lang.Syntax/Tokenization/DocumentationToken.cs similarity index 69% rename from src/Nub.Lang/Frontend/Lexing/DocumentationToken.cs rename to src/Nub.Lang.Syntax/Tokenization/DocumentationToken.cs index d276789..d0b4ccc 100644 --- a/src/Nub.Lang/Frontend/Lexing/DocumentationToken.cs +++ b/src/Nub.Lang.Syntax/Tokenization/DocumentationToken.cs @@ -1,4 +1,6 @@ -namespace Nub.Lang.Frontend.Lexing; +using Nub.Lang.Common; + +namespace Nub.Lang.Syntax.Tokenization; public class DocumentationToken(SourceSpan span, string documentation) : Token(span) { diff --git a/src/Nub.Lang/Frontend/Lexing/IdentifierToken.cs b/src/Nub.Lang.Syntax/Tokenization/IdentifierToken.cs similarity index 63% rename from src/Nub.Lang/Frontend/Lexing/IdentifierToken.cs rename to src/Nub.Lang.Syntax/Tokenization/IdentifierToken.cs index f0e60ad..512a31c 100644 --- a/src/Nub.Lang/Frontend/Lexing/IdentifierToken.cs +++ b/src/Nub.Lang.Syntax/Tokenization/IdentifierToken.cs @@ -1,4 +1,6 @@ -namespace Nub.Lang.Frontend.Lexing; +using Nub.Lang.Common; + +namespace Nub.Lang.Syntax.Tokenization; public class IdentifierToken(SourceSpan span, string value) : Token(span) { diff --git a/src/Nub.Lang/Frontend/Lexing/LiteralToken.cs b/src/Nub.Lang.Syntax/Tokenization/LiteralToken.cs similarity index 78% rename from src/Nub.Lang/Frontend/Lexing/LiteralToken.cs rename to src/Nub.Lang.Syntax/Tokenization/LiteralToken.cs index 2164ca4..3ee15bd 100644 --- a/src/Nub.Lang/Frontend/Lexing/LiteralToken.cs +++ b/src/Nub.Lang.Syntax/Tokenization/LiteralToken.cs @@ -1,4 +1,6 @@ -namespace Nub.Lang.Frontend.Lexing; +using Nub.Lang.Common; + +namespace Nub.Lang.Syntax.Tokenization; public class LiteralToken(SourceSpan span, LiteralKind kind, string value) : Token(span) { diff --git a/src/Nub.Lang/Frontend/Lexing/ModifierToken.cs b/src/Nub.Lang.Syntax/Tokenization/ModifierToken.cs similarity index 73% rename from src/Nub.Lang/Frontend/Lexing/ModifierToken.cs rename to src/Nub.Lang.Syntax/Tokenization/ModifierToken.cs index d9d0a25..fae5977 100644 --- a/src/Nub.Lang/Frontend/Lexing/ModifierToken.cs +++ b/src/Nub.Lang.Syntax/Tokenization/ModifierToken.cs @@ -1,4 +1,6 @@ -namespace Nub.Lang.Frontend.Lexing; +using Nub.Lang.Common; + +namespace Nub.Lang.Syntax.Tokenization; public class ModifierToken(SourceSpan span, Modifier modifier) : Token(span) { diff --git a/src/Nub.Lang/Frontend/Lexing/SymbolToken.cs b/src/Nub.Lang.Syntax/Tokenization/SymbolToken.cs similarity index 90% rename from src/Nub.Lang/Frontend/Lexing/SymbolToken.cs rename to src/Nub.Lang.Syntax/Tokenization/SymbolToken.cs index 24fcc56..708adce 100644 --- a/src/Nub.Lang/Frontend/Lexing/SymbolToken.cs +++ b/src/Nub.Lang.Syntax/Tokenization/SymbolToken.cs @@ -1,4 +1,6 @@ -namespace Nub.Lang.Frontend.Lexing; +using Nub.Lang.Common; + +namespace Nub.Lang.Syntax.Tokenization; public class SymbolToken(SourceSpan span, Symbol symbol) : Token(span) { diff --git a/src/Nub.Lang/Frontend/Lexing/Token.cs b/src/Nub.Lang.Syntax/Tokenization/Token.cs similarity index 57% rename from src/Nub.Lang/Frontend/Lexing/Token.cs rename to src/Nub.Lang.Syntax/Tokenization/Token.cs index 6dabe8c..b76d8cb 100644 --- a/src/Nub.Lang/Frontend/Lexing/Token.cs +++ b/src/Nub.Lang.Syntax/Tokenization/Token.cs @@ -1,4 +1,6 @@ -namespace Nub.Lang.Frontend.Lexing; +using Nub.Lang.Common; + +namespace Nub.Lang.Syntax.Tokenization; public abstract class Token(SourceSpan span) { diff --git a/src/Nub.Lang/Frontend/Lexing/Lexer.cs b/src/Nub.Lang.Syntax/Tokenization/Tokenizer.cs similarity index 98% rename from src/Nub.Lang/Frontend/Lexing/Lexer.cs rename to src/Nub.Lang.Syntax/Tokenization/Tokenizer.cs index c5f9473..6fe56ba 100644 --- a/src/Nub.Lang/Frontend/Lexing/Lexer.cs +++ b/src/Nub.Lang.Syntax/Tokenization/Tokenizer.cs @@ -1,8 +1,9 @@ -using Nub.Lang.Diagnostics; +using Nub.Lang.Common; +using Nub.Lang.Syntax.Diagnostics; -namespace Nub.Lang.Frontend.Lexing; +namespace Nub.Lang.Syntax.Tokenization; -public static class Lexer +public static class Tokenizer { private static readonly Dictionary Keywords = new() { diff --git a/src/Nub.Lang/Frontend/Typing/NubType.cs b/src/Nub.Lang.Syntax/Typing/NubType.cs similarity index 99% rename from src/Nub.Lang/Frontend/Typing/NubType.cs rename to src/Nub.Lang.Syntax/Typing/NubType.cs index aee1a68..25d5a4f 100644 --- a/src/Nub.Lang/Frontend/Typing/NubType.cs +++ b/src/Nub.Lang.Syntax/Typing/NubType.cs @@ -1,6 +1,6 @@ using System.Diagnostics.CodeAnalysis; -namespace Nub.Lang.Frontend.Typing; +namespace Nub.Lang.Syntax.Typing; public abstract class NubType { diff --git a/src/Nub.Lang/Frontend/Typing/TypeChecker.cs b/src/Nub.Lang.Syntax/Typing/TypeChecker.cs similarity index 98% rename from src/Nub.Lang/Frontend/Typing/TypeChecker.cs rename to src/Nub.Lang.Syntax/Typing/TypeChecker.cs index 9623e2f..ff0d2f5 100644 --- a/src/Nub.Lang/Frontend/Typing/TypeChecker.cs +++ b/src/Nub.Lang.Syntax/Typing/TypeChecker.cs @@ -1,12 +1,12 @@ using System.Diagnostics; -using Nub.Lang.Diagnostics; -using Nub.Lang.Frontend.Lexing; -using Nub.Lang.Frontend.Parsing; -using Nub.Lang.Frontend.Parsing.Definitions; -using Nub.Lang.Frontend.Parsing.Expressions; -using Nub.Lang.Frontend.Parsing.Statements; +using Nub.Lang.Syntax.Diagnostics; +using Nub.Lang.Syntax.Parsing; +using Nub.Lang.Syntax.Parsing.Definitions; +using Nub.Lang.Syntax.Parsing.Expressions; +using Nub.Lang.Syntax.Parsing.Statements; +using Nub.Lang.Syntax.Tokenization; -namespace Nub.Lang.Frontend.Typing; +namespace Nub.Lang.Syntax.Typing; public static class TypeChecker { diff --git a/src/Nub.Lang.sln b/src/Nub.Lang.sln index 3b0a90e..6cc6537 100644 --- a/src/Nub.Lang.sln +++ b/src/Nub.Lang.sln @@ -1,9 +1,13 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nub.Lang", "Nub.Lang\Nub.Lang.csproj", "{5047E21F-590D-4CB3-AFF3-064316485009}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nub.Lang.Syntax", "Nub.Lang.Syntax\Nub.Lang.Syntax.csproj", "{5047E21F-590D-4CB3-AFF3-064316485009}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nub.Lang.CLI", "Nub.Lang.CLI\Nub.Lang.CLI.csproj", "{A22F17ED-FA17-45AB-92BA-CD02C28B3524}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nub.Lang.Generation", "Nub.Lang.Generation\Nub.Lang.Generation.csproj", "{F903F1B9-69A6-4522-B483-81A4B072C8B1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nub.Lang.Common", "Nub.Lang.Common\Nub.Lang.Common.csproj", "{91ECE034-32D4-48E6-A905-5F95DB95A3D4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -18,5 +22,13 @@ Global {A22F17ED-FA17-45AB-92BA-CD02C28B3524}.Debug|Any CPU.Build.0 = Debug|Any CPU {A22F17ED-FA17-45AB-92BA-CD02C28B3524}.Release|Any CPU.ActiveCfg = Release|Any CPU {A22F17ED-FA17-45AB-92BA-CD02C28B3524}.Release|Any CPU.Build.0 = Release|Any CPU + {F903F1B9-69A6-4522-B483-81A4B072C8B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F903F1B9-69A6-4522-B483-81A4B072C8B1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F903F1B9-69A6-4522-B483-81A4B072C8B1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F903F1B9-69A6-4522-B483-81A4B072C8B1}.Release|Any CPU.Build.0 = Release|Any CPU + {91ECE034-32D4-48E6-A905-5F95DB95A3D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91ECE034-32D4-48E6-A905-5F95DB95A3D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91ECE034-32D4-48E6-A905-5F95DB95A3D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91ECE034-32D4-48E6-A905-5F95DB95A3D4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/BreakNode.cs b/src/Nub.Lang/Frontend/Parsing/Statements/BreakNode.cs deleted file mode 100644 index 40b2cef..0000000 --- a/src/Nub.Lang/Frontend/Parsing/Statements/BreakNode.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Nub.Lang.Frontend.Lexing; - -namespace Nub.Lang.Frontend.Parsing.Statements; - -public class BreakNode(IReadOnlyList tokens) : StatementNode(tokens); \ No newline at end of file diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/ContinueNode.cs b/src/Nub.Lang/Frontend/Parsing/Statements/ContinueNode.cs deleted file mode 100644 index 5674333..0000000 --- a/src/Nub.Lang/Frontend/Parsing/Statements/ContinueNode.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Nub.Lang.Frontend.Lexing; - -namespace Nub.Lang.Frontend.Parsing.Statements; - -public class ContinueNode(IReadOnlyList tokens) : StatementNode(tokens); \ No newline at end of file diff --git a/src/Nub.Lang/Frontend/Parsing/Statements/StatementNode.cs b/src/Nub.Lang/Frontend/Parsing/Statements/StatementNode.cs deleted file mode 100644 index cc22374..0000000 --- a/src/Nub.Lang/Frontend/Parsing/Statements/StatementNode.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Nub.Lang.Frontend.Lexing; - -namespace Nub.Lang.Frontend.Parsing.Statements; - -public abstract class StatementNode(IReadOnlyList tokens) : Node(tokens); \ No newline at end of file