123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- using System;
- using NTERA.EmuEra.Game.EraEmu.GameData.Expression;
- namespace NTERA.EmuEra.Game.EraEmu.Sub
- {
- internal abstract class Word
- {
- public abstract char Type { get; }
- public bool IsMacro;
- public virtual void SetIsMacro()
- {
- IsMacro = true;
- }
- }
- internal sealed class NullWord : Word
- {
- public override char Type => '\0';
- public override string ToString()
- {
- return "/null/";
- }
- }
- internal sealed class IdentifierWord : Word
- {
- public IdentifierWord(string s) { code = s; }
- readonly string code;
- public string Code => code;
- public override char Type => 'A';
- public override string ToString()
- {
- return code;
- }
- }
- internal sealed class LiteralIntegerWord : Word
- {
- public LiteralIntegerWord(Int64 i) { code = i; }
- readonly Int64 code;
- public Int64 Int => code;
- public override char Type => '0';
- public override string ToString()
- {
- return code.ToString();
- }
- }
- internal sealed class LiteralStringWord : Word
- {
- public LiteralStringWord(string s) { code = s; }
- readonly string code;
- public string Str => code;
- public override char Type => '\"';
- public override string ToString()
- {
- return "\"" + code + "\"";
- }
- }
- internal sealed class OperatorWord : Word
- {
- public OperatorWord(OperatorCode op) { code = op; }
- readonly OperatorCode code;
- public OperatorCode Code => code;
- public override char Type => '=';
- public override string ToString()
- {
- return code.ToString();
- }
- }
- internal sealed class SymbolWord : Word
- {
- public SymbolWord(char c) { code = c; }
- readonly char code;
- public override char Type => code;
- public override string ToString()
- {
- return code.ToString();
- }
- }
- internal sealed class StrFormWord : Word
- {
- public StrFormWord(string[] s, SubWord[] SWT) { strs = s; subwords = SWT; }
- readonly string[] strs;
- readonly SubWord[] subwords;
- public string[] Strs => strs;
- public SubWord[] SubWords => subwords;
- public override char Type //@はSymbolがつかっちゃった
- => 'F';
- public override void SetIsMacro()
- {
- IsMacro = true;
- foreach(SubWord subword in SubWords)
- {
- subword.SetIsMacro();
- }
- }
- }
- internal sealed class TermWord : Word
- {
- public TermWord(IOperandTerm term) { this.term = term; }
- readonly IOperandTerm term;
- public IOperandTerm Term => term;
- public override char Type => 'T';
- }
-
- internal sealed class MacroWord : Word
- {
- public MacroWord(int num) { this.num = num; }
- readonly int num;
- public int Number => num;
- public override char Type => 'M';
- public override string ToString()
- {
- return "Arg" + num;
- }
- }
-
-
-
-
-
- }
|