小编Jos*_*ron的帖子

用C#编写解释器:实现指令的最佳方法是什么?

我正在使用C#编写PLC语言解释器.该PLC语言包含20多种数据类型和25种左右的指令.一旦我开始生成代码,我就会平衡两种不同的方式来编写指令:

1)每种指令都在一个包含大的类中表示switch,以便选择数据类型.例:

public class ADD : Instruction
{
    private string type;

    public ADD(string type)
    {
        this.type = type;
    }

    public bool Exec(Context c)
    {
        switch (type)
        {
            case "INT":
                short valor2 = c.PopINT();
                short valor = c.PopINT();
                short result = (short)(valor + valor2);
                c.PushINT(result);
                break;
            case "DINT":
                int valor4 = c.PopDINT();
                int valor3 = c.PopDINT();
                int result2 = (int)(valor4 + valor3);
                c.PushDINT(result2);
                break;
            case "BOOL":
                // Implement BOOL
                break;
            // Implement other types...
            default:
                break;
        }

        c.IP++;
        return …
Run Code Online (Sandbox Code Playgroud)

c# interpreter plc instruction-set

2
推荐指数
1
解决办法
2177
查看次数

标签 统计

c# ×1

instruction-set ×1

interpreter ×1

plc ×1