構文要素に対応するクラス(ParameterName クラス:パラメーター名を表す)
<summary>
</summary>
internal class ParameterName : CodeGeneratable
{
<summary>
</summary>
private readonly string name;
public ParameterName(string name)
{
this.name = name;
}
<summary>
</summary>
public string Name => name;
<summary>
</summary>
<param name="env"></param>
<returns></returns>
public Number Eval(Env<FreeMonoidUnion> env)
{
FreeMonoidUnion? val = env.Value(name);
if (val == null)
{
return Number.Zero;
}
else
{
return val.DomainValue;
}
}
<summary>
</summary>
<returns></returns>
public string Print()
{
return name;
}
<summary>
</summary>
<param name="yieldp"></param>
<param name="typep"></param>
<param name="indp"></param>
<param name="indcount"></param>
<param name="perf"></param>
<returns></returns>
public string GeneratePython(bool yieldp, bool typep, bool indp, int indcount, Func<string, string> perf)
{
if (yieldp)
{
return $"yield {name}\r\n";
}
else
{
return name;
}
}
<summary>
</summary>
<param name="yieldp"></param>
<param name="typep"></param>
<param name="indp"></param>
<param name="indcount"></param>
<param name="perf"></param>
<returns></returns>
public string GenerateCS(bool yieldp, bool typep, bool indp, int indcount, Func<string, string> perf)
{
if (yieldp)
{
return $"yield return {name};\r\n";
}
else
{
return $"int {name}";
}
}
}
