...
This commit is contained in:
@@ -10,8 +10,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Generation\Generation.csproj" />
|
||||
<ProjectReference Include="..\Syntax\Syntax.csproj" />
|
||||
<ProjectReference Include="..\NubLang\NubLang.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -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<string> CreateBuiltinRuntime()
|
||||
return runtimePath;
|
||||
}
|
||||
|
||||
internal class RuntimeCreationException(string message) : Exception(message);
|
||||
namespace CLI
|
||||
{
|
||||
internal class RuntimeCreationException(string message) : Exception(message);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using Syntax.Node;
|
||||
using NubLang.Syntax.Node;
|
||||
|
||||
namespace Syntax;
|
||||
namespace NubLang;
|
||||
|
||||
public sealed class DefinitionTable
|
||||
{
|
||||
@@ -1,7 +1,7 @@
|
||||
using System.Text;
|
||||
using Syntax.Tokenization;
|
||||
using NubLang.Syntax.Tokenization;
|
||||
|
||||
namespace Syntax.Diagnostics;
|
||||
namespace NubLang.Diagnostics;
|
||||
|
||||
public static class ConsoleColors
|
||||
{
|
||||
@@ -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;
|
||||
@@ -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
|
||||
{
|
||||
@@ -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
|
||||
{
|
||||
@@ -1,6 +1,6 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace Syntax;
|
||||
namespace NubLang;
|
||||
|
||||
public abstract class BoundNubType : IEquatable<BoundNubType>
|
||||
{
|
||||
@@ -9,7 +9,11 @@
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Common\Common.csproj" />
|
||||
<ProjectReference Include="..\Syntax\Syntax.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Generation\" />
|
||||
<Folder Include="Syntax\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,29 +1,7 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace Syntax;
|
||||
namespace NubLang;
|
||||
|
||||
public abstract class NubType : IEquatable<NubType>
|
||||
{
|
||||
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<NubType>
|
||||
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<NubType> parameters) : NubSimpleType
|
||||
public class NubFuncType(NubType returnType, List<NubType> parameters) : NubType
|
||||
{
|
||||
public NubType ReturnType { get; } = returnType;
|
||||
public List<NubType> Parameters { get; } = parameters;
|
||||
@@ -75,7 +49,7 @@ public class NubFuncType(NubType returnType, List<NubType> 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
|
||||
@@ -1,6 +1,6 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace Syntax;
|
||||
namespace NubLang;
|
||||
|
||||
/// <summary>
|
||||
/// Represents a location in source code with line and column information.
|
||||
@@ -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);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using Common;
|
||||
using Syntax.Tokenization;
|
||||
using NubLang.Syntax.Tokenization;
|
||||
|
||||
namespace Syntax.Node;
|
||||
namespace NubLang.Syntax.Node;
|
||||
|
||||
public record FuncParameterNode(IEnumerable<Token> Tokens, string Name, NubType Type) : DefinitionNode(Tokens);
|
||||
public record BoundFuncParameterNode(IEnumerable<Token> Tokens, string Name, BoundNubType Type) : DefinitionNode(Tokens);
|
||||
@@ -1,7 +1,7 @@
|
||||
using Common;
|
||||
using Syntax.Tokenization;
|
||||
using NubLang.Syntax.Tokenization;
|
||||
|
||||
namespace Syntax.Node;
|
||||
namespace NubLang.Syntax.Node;
|
||||
|
||||
public enum UnaryExpressionOperator
|
||||
{
|
||||
@@ -1,6 +1,6 @@
|
||||
using Syntax.Tokenization;
|
||||
using NubLang.Syntax.Tokenization;
|
||||
|
||||
namespace Syntax.Node;
|
||||
namespace NubLang.Syntax.Node;
|
||||
|
||||
public abstract record Node(IEnumerable<Token> Tokens);
|
||||
public abstract record BoundNode(IEnumerable<Token> Tokens);
|
||||
@@ -1,7 +1,7 @@
|
||||
using Common;
|
||||
using Syntax.Tokenization;
|
||||
using NubLang.Syntax.Tokenization;
|
||||
|
||||
namespace Syntax.Node;
|
||||
namespace NubLang.Syntax.Node;
|
||||
|
||||
|
||||
public record StatementNode(IEnumerable<Token> Tokens) : Node(Tokens);
|
||||
@@ -1,6 +1,6 @@
|
||||
using Syntax.Diagnostics;
|
||||
using NubLang.Diagnostics;
|
||||
|
||||
namespace Syntax.Node;
|
||||
namespace NubLang.Syntax.Node;
|
||||
|
||||
public record SyntaxTree(string Namespace, IEnumerable<TopLevelNode> TopLevelNodes, IEnumerable<Diagnostic> Diagnostics);
|
||||
public record BoundSyntaxTree(string Namespace, IEnumerable<BoundTopLevelNode> TopLevelNodes, IEnumerable<Diagnostic> Diagnostics);
|
||||
@@ -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,26 +668,27 @@ 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();
|
||||
}
|
||||
|
||||
if (name.Value == "cstring")
|
||||
{
|
||||
return new NubCStringType();
|
||||
}
|
||||
|
||||
if (NubPrimitiveType.TryParse(name.Value, out var primitiveTypeKind))
|
||||
{
|
||||
return new NubPrimitiveType(primitiveTypeKind.Value);
|
||||
}
|
||||
|
||||
var @namespace = _namespace;
|
||||
if (TryExpectSymbol(Symbol.DoubleColon))
|
||||
{
|
||||
@@ -696,6 +697,7 @@ public sealed class Parser
|
||||
|
||||
return new NubCustomType(@namespace, name.Value);
|
||||
}
|
||||
}
|
||||
|
||||
if (TryExpectSymbol(Symbol.Caret))
|
||||
{
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Syntax.Tokenization;
|
||||
namespace NubLang.Syntax.Tokenization;
|
||||
|
||||
public class IdentifierToken(SourceSpan span, string value) : Token(span)
|
||||
{
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Syntax.Tokenization;
|
||||
namespace NubLang.Syntax.Tokenization;
|
||||
|
||||
public class LiteralToken(SourceSpan span, LiteralKind kind, string value) : Token(span)
|
||||
{
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Syntax.Tokenization;
|
||||
namespace NubLang.Syntax.Tokenization;
|
||||
|
||||
public class ModifierToken(SourceSpan span, Modifier modifier) : Token(span)
|
||||
{
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Syntax.Tokenization;
|
||||
namespace NubLang.Syntax.Tokenization;
|
||||
|
||||
public class SymbolToken(SourceSpan span, Symbol symbol) : Token(span)
|
||||
{
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Syntax.Tokenization;
|
||||
namespace NubLang.Syntax.Tokenization;
|
||||
|
||||
public abstract class Token(SourceSpan span)
|
||||
{
|
||||
@@ -1,7 +1,7 @@
|
||||
using Common;
|
||||
using Syntax.Diagnostics;
|
||||
using NubLang.Diagnostics;
|
||||
|
||||
namespace Syntax.Tokenization;
|
||||
namespace NubLang.Syntax.Tokenization;
|
||||
|
||||
public static class Tokenizer
|
||||
{
|
||||
@@ -1,14 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<IsAotCompatible>true</IsAotCompatible>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Common\Common.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
Reference in New Issue
Block a user