我已经用c语言编写了一个基于rosettacode VM的虚拟机,但是随着时间的流逝,我对其进行了很多修改,现在我面对现实了。
我修改了它,就像我的机器现在以完全不同的方式工作一样。它具有不同的数据类型,指令,标签,而不是手动计算偏移量等。
Rosettacode VM还包括一个解析器,该解析器可以解释一种非常基本的脚本语言,您可以在其他情况下使用它,等等。
问题在于RC的vm中包含的解析器很好地解释了语法,但它不适用于标签,而不必使用标签来定义到跳转目标的偏移量。当然还有更多的区别,但是如果有更简单的方法,我不打算将解析器移植到我的需要。
所以我的实际问题是
当我拥有定义良好的指令集的VM和可以将该虚拟指令集转换为可移植字节码的编译器时。
创建可以将基本语法解释为我自己的指令的语法分析器的最佳方法是什么?
如果已经有了一种机制(包括标签),那将是最重要的,因此我只需要重新定义它以匹配我自己的指令集即可。
预先感谢