我真的花了很多时间来解决这个问题并四处搜索以找到解决方案,但我似乎无法找到问题所在。
我正在学习如何编写 occam 代码并拥有以下程序:
PROC light (CHAN OF BYTE screen, CHAN OF INT light.change)
INT light.on :
WHILE TRUE
SEQ
light.change ? light.on
IF
light.on = 1
screen ! 'y'
TRUE
SKIP
:
PROC test(CHAN OF BYTE keyboard, scr)
CHAN OF INT to.light :
INITIAL INT on IS 1(INT) :
BYTE b :
SEQ
light(scr, to.light)
WHILE TRUE
SEQ
keyboard ? b
IF
b = 'o'
to.light ! on
TRUE
SKIP
:
我要做的就是在按下“ o
”键时从一个进程到另一个进程进行通信。
我从 (KR o C) 编译器得到的错误消息是:
Error at lift.occ:11
Program failed, state = e, eflags = 00000000
这是light.on = 1
行。
据我所见,将等待其上的一些输入,然后将其分配给其. 然后程序将继续执行条件语句,在这种情况下,该行应计算为。但相反,我得到了这个错误。light
PROC
light.change
channel
light.on
variable
IF
light.on = 1
true
我曾尝试使用该-verbose
标志,但编译器说您不能将其用于 .occ 文件。
有谁知道我如何或是否可以从编译器获得更详细的信息?
对此的任何帮助将不胜感激。
谢谢