diff --git a/src/compiler/CLI/CLI.csproj b/src/compiler/CLI/CLI.csproj
index a598c50..6a0f8fe 100644
--- a/src/compiler/CLI/CLI.csproj
+++ b/src/compiler/CLI/CLI.csproj
@@ -10,8 +10,7 @@
-
-
+
diff --git a/src/compiler/CLI/Program.cs b/src/compiler/CLI/Program.cs
index a5c6ee6..98a2359 100644
--- a/src/compiler/CLI/Program.cs
+++ b/src/compiler/CLI/Program.cs
@@ -1,12 +1,12 @@
using System.Reflection;
using CLI;
-using Generation.QBE;
-using Syntax;
-using Syntax.Diagnostics;
-using Syntax.Node;
-using Syntax.Parsing;
-using Syntax.Tokenization;
-using Binder = Syntax.Binding.Binder;
+using NubLang;
+using NubLang.Diagnostics;
+using NubLang.Generation.QBE;
+using NubLang.Syntax.Node;
+using NubLang.Syntax.Parsing;
+using NubLang.Syntax.Tokenization;
+using Binder = NubLang.Syntax.Binding.Binder;
const string BIN_DIR = "bin";
const string INT_DIR = "bin-int";
@@ -207,4 +207,7 @@ async Task CreateBuiltinRuntime()
return runtimePath;
}
-internal class RuntimeCreationException(string message) : Exception(message);
\ No newline at end of file
+namespace CLI
+{
+ internal class RuntimeCreationException(string message) : Exception(message);
+}
\ No newline at end of file
diff --git a/src/compiler/Compiler.sln b/src/compiler/Compiler.sln
index 702f726..f72e1d8 100644
--- a/src/compiler/Compiler.sln
+++ b/src/compiler/Compiler.sln
@@ -1,11 +1,9 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Syntax", "Syntax\Syntax.csproj", "{5047E21F-590D-4CB3-AFF3-064316485009}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NubLang", "NubLang\NubLang.csproj", "{5047E21F-590D-4CB3-AFF3-064316485009}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CLI", "CLI\CLI.csproj", "{A22F17ED-FA17-45AB-92BA-CD02C28B3524}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Generation", "Generation\Generation.csproj", "{F903F1B9-69A6-4522-B483-81A4B072C8B1}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csproj", "{91ECE034-32D4-48E6-A905-5F95DB95A3D4}"
EndProject
Global
@@ -22,10 +20,6 @@ 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
diff --git a/src/compiler/Syntax/DefinitionTable.cs b/src/compiler/NubLang/DefinitionTable.cs
similarity index 98%
rename from src/compiler/Syntax/DefinitionTable.cs
rename to src/compiler/NubLang/DefinitionTable.cs
index d21843d..7ab652c 100644
--- a/src/compiler/Syntax/DefinitionTable.cs
+++ b/src/compiler/NubLang/DefinitionTable.cs
@@ -1,6 +1,6 @@
-using Syntax.Node;
+using NubLang.Syntax.Node;
-namespace Syntax;
+namespace NubLang;
public sealed class DefinitionTable
{
diff --git a/src/compiler/Syntax/Diagnostics/ConsoleColors.cs b/src/compiler/NubLang/Diagnostics/ConsoleColors.cs
similarity index 98%
rename from src/compiler/Syntax/Diagnostics/ConsoleColors.cs
rename to src/compiler/NubLang/Diagnostics/ConsoleColors.cs
index d963905..cdfcaf1 100644
--- a/src/compiler/Syntax/Diagnostics/ConsoleColors.cs
+++ b/src/compiler/NubLang/Diagnostics/ConsoleColors.cs
@@ -1,7 +1,7 @@
using System.Text;
-using Syntax.Tokenization;
+using NubLang.Syntax.Tokenization;
-namespace Syntax.Diagnostics;
+namespace NubLang.Diagnostics;
public static class ConsoleColors
{
diff --git a/src/compiler/Syntax/Diagnostics/Diagnostic.cs b/src/compiler/NubLang/Diagnostics/Diagnostic.cs
similarity index 98%
rename from src/compiler/Syntax/Diagnostics/Diagnostic.cs
rename to src/compiler/NubLang/Diagnostics/Diagnostic.cs
index db4ee55..2f7e6da 100644
--- a/src/compiler/Syntax/Diagnostics/Diagnostic.cs
+++ b/src/compiler/NubLang/Diagnostics/Diagnostic.cs
@@ -1,8 +1,8 @@
using System.Text;
-using Syntax.Parsing;
-using Syntax.Tokenization;
+using NubLang.Syntax.Node;
+using NubLang.Syntax.Tokenization;
-namespace Syntax.Diagnostics;
+namespace NubLang.Diagnostics;
public class Diagnostic
{
@@ -25,7 +25,7 @@ public class Diagnostic
return this;
}
- public DiagnosticBuilder At(Node.Node node)
+ public DiagnosticBuilder At(Node node)
{
_sourceSpan = SourceSpan.Merge(node.Tokens.Select(t => t.Span));
return this;
diff --git a/src/compiler/Generation/QBE/QBEGenerator.cs b/src/compiler/NubLang/Generation/QBE/QBEGenerator.cs
similarity index 99%
rename from src/compiler/Generation/QBE/QBEGenerator.cs
rename to src/compiler/NubLang/Generation/QBE/QBEGenerator.cs
index ab59939..f9ead92 100644
--- a/src/compiler/Generation/QBE/QBEGenerator.cs
+++ b/src/compiler/NubLang/Generation/QBE/QBEGenerator.cs
@@ -2,11 +2,10 @@
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Text;
-using Syntax;
-using Syntax.Node;
-using Syntax.Tokenization;
+using NubLang.Syntax.Node;
+using NubLang.Syntax.Tokenization;
-namespace Generation.QBE;
+namespace NubLang.Generation.QBE;
public static class QBEGenerator
{
diff --git a/src/compiler/Generation/QBE/QBEWriter.cs b/src/compiler/NubLang/Generation/QBE/QBEWriter.cs
similarity index 96%
rename from src/compiler/Generation/QBE/QBEWriter.cs
rename to src/compiler/NubLang/Generation/QBE/QBEWriter.cs
index 9d50c26..8408924 100644
--- a/src/compiler/Generation/QBE/QBEWriter.cs
+++ b/src/compiler/NubLang/Generation/QBE/QBEWriter.cs
@@ -1,8 +1,7 @@
using System.Text;
-using Syntax;
-using Syntax.Node;
+using NubLang.Syntax.Node;
-namespace Generation.QBE;
+namespace NubLang.Generation.QBE;
internal class QBEWriter
{
diff --git a/src/compiler/Syntax/NubBoundType.cs b/src/compiler/NubLang/NubBoundType.cs
similarity index 99%
rename from src/compiler/Syntax/NubBoundType.cs
rename to src/compiler/NubLang/NubBoundType.cs
index 52aa797..1345286 100644
--- a/src/compiler/Syntax/NubBoundType.cs
+++ b/src/compiler/NubLang/NubBoundType.cs
@@ -1,6 +1,6 @@
using System.Diagnostics.CodeAnalysis;
-namespace Syntax;
+namespace NubLang;
public abstract class BoundNubType : IEquatable
{
diff --git a/src/compiler/Generation/Generation.csproj b/src/compiler/NubLang/NubLang.csproj
similarity index 77%
rename from src/compiler/Generation/Generation.csproj
rename to src/compiler/NubLang/NubLang.csproj
index fbe4e73..672493f 100644
--- a/src/compiler/Generation/Generation.csproj
+++ b/src/compiler/NubLang/NubLang.csproj
@@ -9,7 +9,11 @@
-
+
+
+
+
+
diff --git a/src/compiler/Syntax/NubType.cs b/src/compiler/NubLang/NubType.cs
similarity index 54%
rename from src/compiler/Syntax/NubType.cs
rename to src/compiler/NubLang/NubType.cs
index 52f10d1..fcdc3f6 100644
--- a/src/compiler/Syntax/NubType.cs
+++ b/src/compiler/NubLang/NubType.cs
@@ -1,29 +1,7 @@
-using System.Diagnostics.CodeAnalysis;
-
-namespace Syntax;
+namespace NubLang;
public abstract class NubType : IEquatable
{
- public bool Is8BitInteger => this is NubPrimitiveType { Kind: PrimitiveTypeKind.I8 or PrimitiveTypeKind.U8 };
- public bool Is16BitInteger => this is NubPrimitiveType { Kind: PrimitiveTypeKind.I16 or PrimitiveTypeKind.U16 };
- public bool Is32BitInteger => this is NubPrimitiveType { Kind: PrimitiveTypeKind.I32 or PrimitiveTypeKind.U32 };
- public bool Is64BitInteger => this is NubPrimitiveType { Kind: PrimitiveTypeKind.I64 or PrimitiveTypeKind.U64 };
-
- public bool IsSignedInteger => this is NubPrimitiveType { Kind: PrimitiveTypeKind.I8 or PrimitiveTypeKind.I16 or PrimitiveTypeKind.I32 or PrimitiveTypeKind.I64 };
- public bool IsUnsignedInteger => this is NubPrimitiveType { Kind: PrimitiveTypeKind.U8 or PrimitiveTypeKind.U16 or PrimitiveTypeKind.U32 or PrimitiveTypeKind.U64 };
- public bool IsInteger => IsSignedInteger || IsUnsignedInteger;
-
- public bool IsFloat32 => this is NubPrimitiveType { Kind: PrimitiveTypeKind.F32 };
- public bool IsFloat64 => this is NubPrimitiveType { Kind: PrimitiveTypeKind.F64 };
- public bool IsFloat => IsFloat32 || IsFloat64;
-
- public bool IsNumber => IsFloat || IsInteger;
-
- public bool IsVoid => this is NubVoidType;
- public bool IsString => this is NubStringType;
- public bool IsCString => this is NubCStringType;
- public bool IsBool => this is NubPrimitiveType { Kind: PrimitiveTypeKind.Bool };
-
public override bool Equals(object? obj) => obj is NubType other && Equals(other);
public abstract bool Equals(NubType? other);
@@ -34,25 +12,21 @@ public abstract class NubType : IEquatable
public static bool operator !=(NubType? left, NubType? right) => !Equals(left, right);
}
-public abstract class NubComplexType : NubType;
-
-public abstract class NubSimpleType : NubType;
-
-public class NubCStringType : NubComplexType
+public class NubCStringType : NubType
{
public override string ToString() => "cstring";
public override bool Equals(NubType? other) => other is NubCStringType;
public override int GetHashCode() => HashCode.Combine(typeof(NubCStringType));
}
-public class NubStringType : NubComplexType
+public class NubStringType : NubType
{
public override string ToString() => "string";
public override bool Equals(NubType? other) => other is NubStringType;
public override int GetHashCode() => HashCode.Combine(typeof(NubStringType));
}
-public class NubFuncType(NubType returnType, List parameters) : NubSimpleType
+public class NubFuncType(NubType returnType, List parameters) : NubType
{
public NubType ReturnType { get; } = returnType;
public List Parameters { get; } = parameters;
@@ -75,7 +49,7 @@ public class NubFuncType(NubType returnType, List parameters) : NubSimp
}
}
-public class NubCustomType(string @namespace, string name) : NubComplexType
+public class NubCustomType(string @namespace, string name) : NubType
{
public string Namespace { get; } = @namespace;
public string Name { get; } = name;
@@ -86,7 +60,7 @@ public class NubCustomType(string @namespace, string name) : NubComplexType
public override int GetHashCode() => HashCode.Combine(typeof(NubCustomType), Namespace, Name);
}
-public class NubPointerType(NubType baseType) : NubSimpleType
+public class NubPointerType(NubType baseType) : NubType
{
public NubType BaseType { get; } = baseType;
@@ -96,7 +70,7 @@ public class NubPointerType(NubType baseType) : NubSimpleType
public override int GetHashCode() => HashCode.Combine(typeof(NubPointerType), BaseType);
}
-public class NubArrayType(NubType elementType) : NubComplexType
+public class NubArrayType(NubType elementType) : NubType
{
public NubType ElementType { get; } = elementType;
@@ -106,53 +80,17 @@ public class NubArrayType(NubType elementType) : NubComplexType
public override int GetHashCode() => HashCode.Combine(typeof(NubArrayType), ElementType);
}
-public class NubVoidType : NubSimpleType
+public class NubVoidType : NubType
{
public override string ToString() => "void";
public override bool Equals(NubType? other) => other is NubVoidType;
public override int GetHashCode() => HashCode.Combine(typeof(NubVoidType));
}
-public class NubPrimitiveType(PrimitiveTypeKind kind) : NubSimpleType
+public class NubPrimitiveType(PrimitiveTypeKind kind) : NubType
{
public PrimitiveTypeKind Kind { get; } = kind;
- public static NubPrimitiveType I64 => new(PrimitiveTypeKind.I64);
- public static NubPrimitiveType I32 => new(PrimitiveTypeKind.I32);
- public static NubPrimitiveType I16 => new(PrimitiveTypeKind.I16);
- public static NubPrimitiveType I8 => new(PrimitiveTypeKind.I8);
-
- public static NubPrimitiveType U64 => new(PrimitiveTypeKind.U64);
- public static NubPrimitiveType U32 => new(PrimitiveTypeKind.U32);
- public static NubPrimitiveType U16 => new(PrimitiveTypeKind.U16);
- public static NubPrimitiveType U8 => new(PrimitiveTypeKind.U8);
-
- public static NubPrimitiveType F64 => new(PrimitiveTypeKind.F64);
- public static NubPrimitiveType F32 => new(PrimitiveTypeKind.F32);
-
- public static NubPrimitiveType Bool => new(PrimitiveTypeKind.Bool);
-
- public static bool TryParse(string s, [NotNullWhen(true)] out PrimitiveTypeKind? kind)
- {
- kind = s switch
- {
- "i64" => PrimitiveTypeKind.I64,
- "i32" => PrimitiveTypeKind.I32,
- "i16" => PrimitiveTypeKind.I16,
- "i8" => PrimitiveTypeKind.I8,
- "u64" => PrimitiveTypeKind.U64,
- "u32" => PrimitiveTypeKind.U32,
- "u16" => PrimitiveTypeKind.U16,
- "u8" => PrimitiveTypeKind.U8,
- "f64" => PrimitiveTypeKind.F64,
- "f32" => PrimitiveTypeKind.F32,
- "bool" => PrimitiveTypeKind.Bool,
- _ => null
- };
-
- return kind != null;
- }
-
public override string ToString()
{
return Kind switch
diff --git a/src/compiler/Syntax/Source.cs b/src/compiler/NubLang/Source.cs
similarity index 99%
rename from src/compiler/Syntax/Source.cs
rename to src/compiler/NubLang/Source.cs
index bfeb6af..3f941fe 100644
--- a/src/compiler/Syntax/Source.cs
+++ b/src/compiler/NubLang/Source.cs
@@ -1,6 +1,6 @@
using System.Diagnostics.CodeAnalysis;
-namespace Syntax;
+namespace NubLang;
///
/// Represents a location in source code with line and column information.
diff --git a/src/compiler/Syntax/Binding/Binder.cs b/src/compiler/NubLang/Syntax/Binding/Binder.cs
similarity index 98%
rename from src/compiler/Syntax/Binding/Binder.cs
rename to src/compiler/NubLang/Syntax/Binding/Binder.cs
index c1dde60..64e733e 100644
--- a/src/compiler/Syntax/Binding/Binder.cs
+++ b/src/compiler/NubLang/Syntax/Binding/Binder.cs
@@ -1,11 +1,11 @@
using System.Diagnostics;
using Common;
-using Syntax.Diagnostics;
-using Syntax.Node;
-using Syntax.Tokenization;
-using UnaryExpressionNode = Syntax.Node.UnaryExpressionNode;
+using NubLang.Diagnostics;
+using NubLang.Syntax.Node;
+using NubLang.Syntax.Tokenization;
+using Node_UnaryExpressionNode = NubLang.Syntax.Node.UnaryExpressionNode;
-namespace Syntax.Binding;
+namespace NubLang.Syntax.Binding;
// TODO: Currently anonymous function does not get a new scope
public sealed class Binder
@@ -273,7 +273,7 @@ public sealed class Binder
LiteralNode expression => BindLiteral(expression, expectedType),
MemberAccessNode expression => BindMemberAccess(expression),
StructInitializerNode expression => BindStructInitializer(expression),
- UnaryExpressionNode expression => BindUnaryExpression(expression),
+ Node_UnaryExpressionNode expression => BindUnaryExpression(expression),
_ => throw new ArgumentOutOfRangeException(nameof(node))
};
}
@@ -519,7 +519,7 @@ public sealed class Binder
return new BoundStructInitializerNode(expression.Tokens, BindType(structType), new BoundNubStructType(@struct.Namespace, @struct.Name), initializers);
}
- private BoundUnaryExpressionNode BindUnaryExpression(UnaryExpressionNode expression)
+ private BoundUnaryExpressionNode BindUnaryExpression(Node_UnaryExpressionNode expression)
{
var boundOperand = BindExpression(expression.Operand);
diff --git a/src/compiler/Syntax/Node/Definition.cs b/src/compiler/NubLang/Syntax/Node/Definition.cs
similarity index 97%
rename from src/compiler/Syntax/Node/Definition.cs
rename to src/compiler/NubLang/Syntax/Node/Definition.cs
index c9234de..6995627 100644
--- a/src/compiler/Syntax/Node/Definition.cs
+++ b/src/compiler/NubLang/Syntax/Node/Definition.cs
@@ -1,7 +1,7 @@
using Common;
-using Syntax.Tokenization;
+using NubLang.Syntax.Tokenization;
-namespace Syntax.Node;
+namespace NubLang.Syntax.Node;
public record FuncParameterNode(IEnumerable Tokens, string Name, NubType Type) : DefinitionNode(Tokens);
public record BoundFuncParameterNode(IEnumerable Tokens, string Name, BoundNubType Type) : DefinitionNode(Tokens);
diff --git a/src/compiler/Syntax/Node/Expression.cs b/src/compiler/NubLang/Syntax/Node/Expression.cs
similarity index 98%
rename from src/compiler/Syntax/Node/Expression.cs
rename to src/compiler/NubLang/Syntax/Node/Expression.cs
index a1aac1c..34908ea 100644
--- a/src/compiler/Syntax/Node/Expression.cs
+++ b/src/compiler/NubLang/Syntax/Node/Expression.cs
@@ -1,7 +1,7 @@
using Common;
-using Syntax.Tokenization;
+using NubLang.Syntax.Tokenization;
-namespace Syntax.Node;
+namespace NubLang.Syntax.Node;
public enum UnaryExpressionOperator
{
diff --git a/src/compiler/Syntax/Node/Node.cs b/src/compiler/NubLang/Syntax/Node/Node.cs
similarity index 71%
rename from src/compiler/Syntax/Node/Node.cs
rename to src/compiler/NubLang/Syntax/Node/Node.cs
index 1076dce..a9207d9 100644
--- a/src/compiler/Syntax/Node/Node.cs
+++ b/src/compiler/NubLang/Syntax/Node/Node.cs
@@ -1,6 +1,6 @@
-using Syntax.Tokenization;
+using NubLang.Syntax.Tokenization;
-namespace Syntax.Node;
+namespace NubLang.Syntax.Node;
public abstract record Node(IEnumerable Tokens);
public abstract record BoundNode(IEnumerable Tokens);
diff --git a/src/compiler/Syntax/Node/Statement.cs b/src/compiler/NubLang/Syntax/Node/Statement.cs
similarity index 96%
rename from src/compiler/Syntax/Node/Statement.cs
rename to src/compiler/NubLang/Syntax/Node/Statement.cs
index 04dd10d..f04d0d2 100644
--- a/src/compiler/Syntax/Node/Statement.cs
+++ b/src/compiler/NubLang/Syntax/Node/Statement.cs
@@ -1,7 +1,7 @@
using Common;
-using Syntax.Tokenization;
+using NubLang.Syntax.Tokenization;
-namespace Syntax.Node;
+namespace NubLang.Syntax.Node;
public record StatementNode(IEnumerable Tokens) : Node(Tokens);
diff --git a/src/compiler/Syntax/Node/SyntaxTree.cs b/src/compiler/NubLang/Syntax/Node/SyntaxTree.cs
similarity index 79%
rename from src/compiler/Syntax/Node/SyntaxTree.cs
rename to src/compiler/NubLang/Syntax/Node/SyntaxTree.cs
index b7acb68..54b4dcd 100644
--- a/src/compiler/Syntax/Node/SyntaxTree.cs
+++ b/src/compiler/NubLang/Syntax/Node/SyntaxTree.cs
@@ -1,6 +1,6 @@
-using Syntax.Diagnostics;
+using NubLang.Diagnostics;
-namespace Syntax.Node;
+namespace NubLang.Syntax.Node;
public record SyntaxTree(string Namespace, IEnumerable TopLevelNodes, IEnumerable Diagnostics);
public record BoundSyntaxTree(string Namespace, IEnumerable TopLevelNodes, IEnumerable Diagnostics);
\ No newline at end of file
diff --git a/src/compiler/Syntax/Parsing/Parser.cs b/src/compiler/NubLang/Syntax/Parsing/Parser.cs
similarity index 95%
rename from src/compiler/Syntax/Parsing/Parser.cs
rename to src/compiler/NubLang/Syntax/Parsing/Parser.cs
index 3726d1e..5ce5064 100644
--- a/src/compiler/Syntax/Parsing/Parser.cs
+++ b/src/compiler/NubLang/Syntax/Parsing/Parser.cs
@@ -1,10 +1,10 @@
using System.Diagnostics.CodeAnalysis;
using Common;
-using Syntax.Diagnostics;
-using Syntax.Node;
-using Syntax.Tokenization;
+using NubLang.Diagnostics;
+using NubLang.Syntax.Node;
+using NubLang.Syntax.Tokenization;
-namespace Syntax.Parsing;
+namespace NubLang.Syntax.Parsing;
public sealed class Parser
{
@@ -668,33 +668,35 @@ public sealed class Parser
{
if (TryExpectIdentifier(out var name))
{
- if (name.Value == "void")
+ return name.Value switch
{
- return new NubVoidType();
- }
+ "void" => new NubVoidType(),
+ "string" => new NubStringType(),
+ "cstring" => new NubCStringType(),
+ "i64" => new NubPrimitiveType(PrimitiveTypeKind.I64),
+ "i32" => new NubPrimitiveType(PrimitiveTypeKind.I32),
+ "i16" => new NubPrimitiveType(PrimitiveTypeKind.I16),
+ "i8" => new NubPrimitiveType(PrimitiveTypeKind.I8),
+ "u64" => new NubPrimitiveType(PrimitiveTypeKind.U64),
+ "u32" => new NubPrimitiveType(PrimitiveTypeKind.U32),
+ "u16" => new NubPrimitiveType(PrimitiveTypeKind.U16),
+ "u8" => new NubPrimitiveType(PrimitiveTypeKind.U8),
+ "f64" => new NubPrimitiveType(PrimitiveTypeKind.F64),
+ "f32" => new NubPrimitiveType(PrimitiveTypeKind.F32),
+ "bool" => new NubPrimitiveType(PrimitiveTypeKind.Bool),
+ _ => ParseCustomType()
+ };
- if (name.Value == "string")
+ NubCustomType ParseCustomType()
{
- return new NubStringType();
- }
+ var @namespace = _namespace;
+ if (TryExpectSymbol(Symbol.DoubleColon))
+ {
+ @namespace = ExpectIdentifier().Value;
+ }
- if (name.Value == "cstring")
- {
- return new NubCStringType();
+ return new NubCustomType(@namespace, name.Value);
}
-
- if (NubPrimitiveType.TryParse(name.Value, out var primitiveTypeKind))
- {
- return new NubPrimitiveType(primitiveTypeKind.Value);
- }
-
- var @namespace = _namespace;
- if (TryExpectSymbol(Symbol.DoubleColon))
- {
- @namespace = ExpectIdentifier().Value;
- }
-
- return new NubCustomType(@namespace, name.Value);
}
if (TryExpectSymbol(Symbol.Caret))
diff --git a/src/compiler/Syntax/Tokenization/IdentifierToken.cs b/src/compiler/NubLang/Syntax/Tokenization/IdentifierToken.cs
similarity index 73%
rename from src/compiler/Syntax/Tokenization/IdentifierToken.cs
rename to src/compiler/NubLang/Syntax/Tokenization/IdentifierToken.cs
index 7d8c9e7..78dbbbc 100644
--- a/src/compiler/Syntax/Tokenization/IdentifierToken.cs
+++ b/src/compiler/NubLang/Syntax/Tokenization/IdentifierToken.cs
@@ -1,4 +1,4 @@
-namespace Syntax.Tokenization;
+namespace NubLang.Syntax.Tokenization;
public class IdentifierToken(SourceSpan span, string value) : Token(span)
{
diff --git a/src/compiler/Syntax/Tokenization/LiteralToken.cs b/src/compiler/NubLang/Syntax/Tokenization/LiteralToken.cs
similarity index 85%
rename from src/compiler/Syntax/Tokenization/LiteralToken.cs
rename to src/compiler/NubLang/Syntax/Tokenization/LiteralToken.cs
index f16671e..49452f4 100644
--- a/src/compiler/Syntax/Tokenization/LiteralToken.cs
+++ b/src/compiler/NubLang/Syntax/Tokenization/LiteralToken.cs
@@ -1,4 +1,4 @@
-namespace Syntax.Tokenization;
+namespace NubLang.Syntax.Tokenization;
public class LiteralToken(SourceSpan span, LiteralKind kind, string value) : Token(span)
{
diff --git a/src/compiler/Syntax/Tokenization/ModifierToken.cs b/src/compiler/NubLang/Syntax/Tokenization/ModifierToken.cs
similarity index 81%
rename from src/compiler/Syntax/Tokenization/ModifierToken.cs
rename to src/compiler/NubLang/Syntax/Tokenization/ModifierToken.cs
index 5312667..d90ad48 100644
--- a/src/compiler/Syntax/Tokenization/ModifierToken.cs
+++ b/src/compiler/NubLang/Syntax/Tokenization/ModifierToken.cs
@@ -1,4 +1,4 @@
-namespace Syntax.Tokenization;
+namespace NubLang.Syntax.Tokenization;
public class ModifierToken(SourceSpan span, Modifier modifier) : Token(span)
{
diff --git a/src/compiler/Syntax/Tokenization/SymbolToken.cs b/src/compiler/NubLang/Syntax/Tokenization/SymbolToken.cs
similarity index 93%
rename from src/compiler/Syntax/Tokenization/SymbolToken.cs
rename to src/compiler/NubLang/Syntax/Tokenization/SymbolToken.cs
index b898315..394acde 100644
--- a/src/compiler/Syntax/Tokenization/SymbolToken.cs
+++ b/src/compiler/NubLang/Syntax/Tokenization/SymbolToken.cs
@@ -1,4 +1,4 @@
-namespace Syntax.Tokenization;
+namespace NubLang.Syntax.Tokenization;
public class SymbolToken(SourceSpan span, Symbol symbol) : Token(span)
{
diff --git a/src/compiler/Syntax/Tokenization/Token.cs b/src/compiler/NubLang/Syntax/Tokenization/Token.cs
similarity index 68%
rename from src/compiler/Syntax/Tokenization/Token.cs
rename to src/compiler/NubLang/Syntax/Tokenization/Token.cs
index 89f3f47..65cd107 100644
--- a/src/compiler/Syntax/Tokenization/Token.cs
+++ b/src/compiler/NubLang/Syntax/Tokenization/Token.cs
@@ -1,4 +1,4 @@
-namespace Syntax.Tokenization;
+namespace NubLang.Syntax.Tokenization;
public abstract class Token(SourceSpan span)
{
diff --git a/src/compiler/Syntax/Tokenization/Tokenizer.cs b/src/compiler/NubLang/Syntax/Tokenization/Tokenizer.cs
similarity index 99%
rename from src/compiler/Syntax/Tokenization/Tokenizer.cs
rename to src/compiler/NubLang/Syntax/Tokenization/Tokenizer.cs
index de4b3a7..97d8ecc 100644
--- a/src/compiler/Syntax/Tokenization/Tokenizer.cs
+++ b/src/compiler/NubLang/Syntax/Tokenization/Tokenizer.cs
@@ -1,7 +1,7 @@
using Common;
-using Syntax.Diagnostics;
+using NubLang.Diagnostics;
-namespace Syntax.Tokenization;
+namespace NubLang.Syntax.Tokenization;
public static class Tokenizer
{
diff --git a/src/compiler/Syntax/Syntax.csproj b/src/compiler/Syntax/Syntax.csproj
deleted file mode 100644
index 31addee..0000000
--- a/src/compiler/Syntax/Syntax.csproj
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- net9.0
- enable
- enable
- true
-
-
-
-
-
-
-