我有一个 c++ 库,其中包含一个实现自定义编程语言的虚拟机(称为“VM”)的类。这种语言有一些可以执行的不同指令,其中有“从输入读取值”指令。VM 可以以两种模式运行:逐步执行单个指令(直到机器完成)或一次执行所有指令。它还可以用于两个应用程序:控制台和 GUI 应用程序。
到目前为止,我只有一个控制台应用程序。当执行“从输入读取值”指令时,它只是使用 std::cin 读取值,所以虚拟机停止,直到输入被提交。当我尝试为 VM 创建 GUI 时会出现问题。我将使用典型的文本输入而不是std::cin
.
问题是:您认为从执行指令的角度对此类问题进行建模的最佳方法是什么?执行“从输入中读取值”指令时,VM 应该如何表现?用户在点击“执行单条指令”之前不知道会是什么指令,所以在指令执行之前不能提交输入。
我正在考虑向 VM 添加一个新的状态属性:{working|awaiting_input}
. 在“读取”指令运行时,机器应该挂起直到它得到输入。当 GUI 层从用户那里获取输入时,它会调用 VM 的passInput(inputValue)
新方法,该方法另外唤醒 VM(以完成单个指令或全部指令)。你能想出一个更简单的解决方案(例如,不添加 state 属性)吗?