Move syntax models to own folder

This commit is contained in:
Yoshi Askharoun
2024-01-31 09:21:30 -06:00
parent c54fab21e7
commit d77d2953b8
4 changed files with 11 additions and 8 deletions
+31
View File
@@ -0,0 +1,31 @@
using Microsoft.Iris.Markup;
using System.Collections.Generic;
using System.Linq;
namespace Microsoft.Iris.Asm.Models;
public interface IBodyItem { }
public interface IImport { }
public record Instruction(string Mnemonic, IEnumerable<Operand> Operands) : IBodyItem
{
public OpCode OpCode => LexerMaps.MnemonicToOpCode(Mnemonic);
public OperationType? OperationType => LexerMaps.TryOperationMnemonicToType(Mnemonic);
public override string ToString() => $"{Mnemonic} {string.Join(", ", Operands)}";
}
public record Label(string Name) : IBodyItem
{
public override string ToString() => $"{Name}:";
}
public record Operand(object Value, string Content = null)
{
public override string ToString() => Content ?? Value.ToString();
}
public record Program(IEnumerable<IImport> Imports, IEnumerable<IBodyItem> Body)
{
public override string ToString() => string.Join("\r\n", Imports.Select(i => i.ToString()).Concat(Body.Select(b => b.ToString())));
}