class Context
{
private string input;
private string output;
public string Input { get => input; set => input = value; }
public string Output { get => output; set => output = value; }
}
abstract class AbstractExpression
{
public abstract void Interpret(Context context);
}
class TerminalExpression : AbstractExpression
{
public override void Interpret(Context context)
{
Console.WriteLine("終端解釋器");
}
}
class NonterminalExpression : AbstractExpression
{
public override void Interpret(Context context)
{
Console.WriteLine("非終端解釋器");
}
}
class Program
{
static void Main(string[] args)
{
Context context = new Context();
IList<AbstractExpression> expressions = new List<AbstractExpression>();
expressions.Add(new TerminalExpression());
expressions.Add(new NonterminalExpression());
expressions.Add(new TerminalExpression());
expressions.Add(new TerminalExpression());
foreach(AbstractExpression expression in expressions)
{
expression.Interpret(context);
}
}
}