This commit is contained in:
ninemine
2025-07-01 20:34:09 +08:00
parent dbea849f6c
commit bf6b893412
4 changed files with 70 additions and 8 deletions

View File

@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Convention.Symbolization.Internal
{
internal sealed class NamespaceModel
{
}
public sealed class Namespace : Variable
{
private NamespaceModel Data;
public override object Clone()
{
Namespace result = new()
{
Data = Data
};
return result;
}
}
}

View File

@@ -30,5 +30,15 @@ namespace Convention.Symbolization.Internal
} }
return target; return target;
} }
public bool Equals(Structure other)
{
return Name.Equals(other.Name);
}
public override int GetHashCode()
{
return Name.GetHashCode();
}
} }
} }

View File

@@ -6,9 +6,36 @@ using System.Threading.Tasks;
namespace Convention.Symbolization.Internal namespace Convention.Symbolization.Internal
{ {
public abstract class Variable : ICloneable public abstract class Variable : ICloneable, IEquatable<Variable>
{ {
public readonly VariableSymbol SymbolInfo;
/// <summary>
/// for construct
/// </summary>
protected Variable(string symbolName, Type variableType)
{
SymbolInfo = new VariableSymbol(symbolName, variableType);
}
/// <summary>
/// for clone
/// </summary>
protected Variable(string symbolName, Variable variable) : this(symbolName, variable.SymbolInfo.VariableType) { }
public abstract object Clone(); public abstract object Clone();
public abstract bool Equals(Variable other);
public override bool Equals(object obj)
{
return obj is Variable variable && Equals(variable);
}
public abstract int GetVariableHashCode();
public override sealed int GetHashCode()
{
return GetVariableHashCode();
}
} }
public readonly struct VariableSymbol public readonly struct VariableSymbol

View File

@@ -8,24 +8,20 @@ namespace Convention.Symbolization
{ {
public class SymbolizationContext public class SymbolizationContext
{ {
public Internal.VariableContext Context = new();
} }
public class SymbolizationRunner public class SymbolizationRunner
{ {
private readonly Internal.Namespace GlobalNamespace;
private readonly SymbolizationContext Context; private readonly SymbolizationContext Context;
public SymbolizationRunner(SymbolizationContext context) public SymbolizationRunner(SymbolizationContext context)
{ {
GlobalNamespace = new();
Context = context; Context = context;
} }
public SymbolizationRunner() :this(new()){ } public SymbolizationRunner() :this(new()){ }
public void Execute(string funcName)
{
}
public void Execute()=>Execute("main")
} }
} }