基础4.2I-如果块语句结构在ABEL状态机赋值中使用{,},则生成不正确的方程。

描述

关键词:Xabel,ABEL,.abl,状态机,GOTO,状态方程,不正确

紧迫性:标准

一般描述:
当我使用{,}来封装状态方程时,忽略了赋值。

例如

状态图
异步复位状态:CLR;

国家状态:如果!(a b b)然后初始化;
否则,如果(a)则{Goto Stiste1;}
否则{GOTO STATE2;}
州政府一:GTO to NITTHEAT;
州政府2:GTO to NITTHATE;

上面所述的简单状态机将产生下列方程:

“状态1=(iNITS.Q);
“状态2=(iNITS.Q);

代替这些期望的方程:

“Std.
“状态2=(iNATS.Q &!)!A、B);

解决方案

根据ABEL语法,编译器正在寻找一个单一的状态方程,例如“STATE1”或“GOTO STATE1”。因为{,}的使用指示包含多个语句,所以它们在ABEL语法中没有意义。

当{,}不被使用时,ABEL码将编译正确的方程。当包含{ }时,将忽略附加到语句的条件。

如果状态机必须用某些寄存器集转换到下一个状态,则应该使用“带”语句。

(对语法检查器提出了增强请求,以便在{ } s与状态方程结合使用时报告错误或警告)。
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-29 19:18:32 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它