Files
better-genshin-impact/BetterGenshinImpact.CombatScript/InstructionSymbol.cs
DismissedLight d4aae4508a init test
2025-01-21 17:31:09 +08:00

50 lines
1.2 KiB
C#

using System.Collections.Immutable;
namespace BetterGenshinImpact.CombatScript;
public abstract class InstructionSymbol : BaseSymbol
{
protected InstructionSymbol(string name, ImmutableArray<TriviaSymbol> trivia)
{
Name = name;
HasParameterList = false;
TriviaList = trivia;
}
protected InstructionSymbol(string name, ImmutableArray<IParameterSymbol> parameterList, ImmutableArray<TriviaSymbol> trivia)
{
Name = name;
HasParameterList = true;
ParameterList = parameterList;
TriviaList = trivia;
}
public string Name { get; }
public bool HasParameterList { get; }
public ImmutableArray<IParameterSymbol> ParameterList { get; }
public ImmutableArray<TriviaSymbol> TriviaList { get; }
public override void Emit(ISymbolEmitter emitter)
{
if (this is IInstructionSymbolHasAlias {IsAlias: true } hasAlias)
{
emitter.Append(hasAlias.AliasName);
}
else
{
emitter.Append(Name);
}
if (HasParameterList)
{
emitter.Append('(');
emitter.Append(ParameterList);
emitter.Append(')');
}
emitter.Append(TriviaList);
}
}