Skip to content

Commit

Permalink
refactor: Cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
furesoft committed Dec 14, 2024
1 parent d00995a commit 474caa6
Show file tree
Hide file tree
Showing 18 changed files with 296 additions and 224 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,26 @@ public AstNode Parse(Parser parser, Token token)
{
var name = parser.Consume(Name);
names.Add(name);
if (parser.LookAhead(0).Type != Comma)
if (parser.LookAhead(0).Type != ",")
{
break;
}

parser.Consume(Comma);
parser.Consume(",");
}

if (names.Count == 1 && parser.LookAhead(0).Type == PredefinedSymbols.Equals)
if (names.Count == 1 && parser.LookAhead(0).Type == "=")
{
parser.Consume(PredefinedSymbols.Equals);
parser.Consume("=");

// No parameter with single name
var value = parser.Parse(0);
return new VariableBindingNode(names[0], [], value).WithRange(names[0], parser.LookAhead(0));
}

if (names.Count > 1 && parser.LookAhead(0).Type == PredefinedSymbols.Equals)
if (names.Count > 1 && parser.LookAhead(0).Type == "=")
{
parser.Consume(PredefinedSymbols.Equals);
parser.Consume("=");

// Tuple-Destructuring
var value = parser.Parse(0);
Expand Down
4 changes: 2 additions & 2 deletions Source/Samples/Sample.JSON/JsonPrinter.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using MrKWatkins.Ast.Listening;
using Sample.JSON.Nodes;
using Silverfly.Nodes;
using Silverfly.Sample.JSON.Nodes;

namespace Sample.JSON;
namespace Silverfly.Sample.JSON;

internal class JsonPrinter
{
Expand Down
4 changes: 2 additions & 2 deletions Source/Samples/Sample.JSON/Parselets/JsonArrayParselet.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Sample.JSON.Nodes;
using Silverfly.Nodes;
using Silverfly.Nodes;
using Silverfly.Parselets;
using Silverfly.Sample.JSON.Nodes;

namespace Silverfly.Sample.JSON.Parselets;

Expand Down
2 changes: 1 addition & 1 deletion Source/Samples/Sample.JSON/Parselets/NullParselet.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Silverfly.Nodes;
using Silverfly.Parselets;

namespace Silverfly.Sample.JSON.Nodes;
namespace Silverfly.Sample.JSON.Parselets;

public class NullParselet : IPrefixParselet
{
Expand Down
2 changes: 1 addition & 1 deletion Source/Samples/Sample.JSON/Parselets/ObjectParselet.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Sample.JSON.Nodes;
using Silverfly.Nodes;
using Silverfly.Parselets;
using Silverfly.Sample.JSON.Nodes;

namespace Silverfly.Sample.JSON.Parselets;

Expand Down
6 changes: 1 addition & 5 deletions Source/Silverfly.Backend/Silverfly.Backend.csproj
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>1.0.80</Version>
<LangVersion>preview</LangVersion>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Title>Silverfly.Backend</Title>
<Copyright>furesoft</Copyright>
<RepositoryUrl>https://github.com/furesoft/Silverfly</RepositoryUrl>
<Description>Helpers to convert from Silverfly to a Distil backend</Description>
<PackageTags>silverfly, distil</PackageTags>
<TargetFramework>net8.0</TargetFramework>
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
<IsTrimmable>true</IsTrimmable>
<Nullable>enable</Nullable>
Expand All @@ -20,7 +16,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="DistIL.Core" Version="0.8.0-preview" />
<PackageReference Include="DistIL.Core" Version="0.11.1-preview" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions Source/Silverfly.Backend/TypeSystem/Rules/BinaryTypeRule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ public override TypeDesc InferType(AstNode node, TypeEngine engine)
throw new InvalidOperationException("Incompatible type");
}

var inferredLeft = engine.InferType(binary.LeftExpr);
var inferredRight = engine.InferType(binary.RightExpr);
var inferredLeft = engine.InferType(binary.Left);
var inferredRight = engine.InferType(binary.Right);

if (inferredLeft == inferredRight)
{
Expand Down
14 changes: 5 additions & 9 deletions Source/Silverfly.Testing/SnapshotParserTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@
using System.Threading.Tasks;
using Argon;
using Silverfly.Testing.Converter;
using VerifyNUnit;
using VerifyTests;
using static VerifyTests.VerifierSettings;

namespace Silverfly.Testing;

/// <summary>
/// Base class for snapshot parser tests using a specific parser type <typeparamref name="TParser" />.
/// Base class for snapshot parser tests using a specific parser type <typeparamref name="TParser"/>.
/// </summary>
/// <typeparam name="TParser">The type of the parser being tested.</typeparam>
public class SnapshotParserTestBase<TParser>
Expand All @@ -35,12 +34,10 @@ public static void Init(TestOptions options)
Settings.UseDirectory("TestResults");
}

public static TranslationUnit Parse(string src)
{
return new TParser().Parse(src, _options.Filename);
}
public TParser Parser { get; } = new();
public TranslationUnit Parse(string src) => Parser.Parse(src, _options.Filename);

public static Task Test(string source)
public Task Test(string source)
{
var parsed = Parse(source);

Expand All @@ -49,10 +46,9 @@ public static Task Test(string source)
{
var builder = new StringBuilder();
PrintListener.Listener.Listen(builder, parsed.Tree);

result = new TestResult(builder.ToString(), parsed.Document);
}

return Verifier.Verify(result, Settings);
return VerifyNUnit.Verifier.Verify(result, Settings);
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>1.0.80</Version>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PackAsTool>true</PackAsTool>
<ToolCommandName>silver-tree</ToolCommandName>

<LangVersion>preview</LangVersion>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Title>Silverfly.TreeVisualizer</Title>
<Copyright>furesoft</Copyright>
<RepositoryUrl>https://github.com/furesoft/Silverfly</RepositoryUrl>
<Description>A tool to view Silverfly trees</Description>
<PackageTags>parser, pratt, silverfly, ast</PackageTags>
</PropertyGroup>
Expand Down
5 changes: 4 additions & 1 deletion Source/Silverfly.TreeVisualizer/TreeCommand.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
using System.Collections;
using System;
using System.Collections;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Reflection;
using Silverfly.Nodes;
using Spectre.Console;
Expand Down
8 changes: 7 additions & 1 deletion Source/Silverfly/Helpers/GenericTypeName.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

namespace Silverfly.Helpers;

public record GenericTypeName(Token Token, ImmutableList<TypeName> GenericArguments) : TypeName(Token)
public class GenericTypeName : TypeName
{
public GenericTypeName(Token token, ImmutableList<TypeName> genericArguments) : base(token)
{
Properties.Set(nameof(GenericArguments), genericArguments);
}

public ImmutableList<TypeName> GenericArguments => Properties.GetOrThrow<ImmutableList<TypeName>>(nameof(GenericArguments));
}
11 changes: 10 additions & 1 deletion Source/Silverfly/Helpers/PointerTypeName.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,17 @@

namespace Silverfly.Helpers;

public record PointerTypeName(Token Token, TypeName Type, PointerKind Kind) : TypeName(Token)
public class PointerTypeName : TypeName
{
public PointerTypeName(Token token, TypeName type, PointerKind kind) : base(token)
{
Properties.Set(nameof(Type), type);
Properties.Set(nameof(Kind), kind);
}

public TypeName Type => Properties.GetOrThrow<TypeName>(nameof(Type));
public PointerKind Kind => Properties.GetOrThrow<PointerKind>(nameof(Kind));

public override string ToString()
{
var builder = new StringBuilder();
Expand Down
9 changes: 8 additions & 1 deletion Source/Silverfly/Helpers/TypeName.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,14 @@

namespace Silverfly.Helpers;

public record TypeName(Token Token) : AstNode
public class TypeName : AstNode
{
public TypeName(Token token)
{
Properties.Set(nameof(Token), token);
}

public Token Token => Properties.GetOrThrow<Token>(nameof(Token));

public override string ToString() => Token.ToString();
}
Loading

0 comments on commit 474caa6

Please sign in to comment.