我正在为结构化文本构建解析器和类型检查器。 ST是Pascal的派生词。
很明显,ST允许相等地比较两个声明的实变量X和Y为
X = Y
很明显你可以写
X <> Y
和
X > Y
如果我有两个声明的布尔变量A和B,则为
A = B
合法吗?帕斯卡肯定会这样说。我对ST拥有的参考文件(包括2004版的澳大利亚标准以及一些供应商的实现)尚不清楚。
我可以写:
A > B
什么意思?
[摘要上,我对用于比较字符串的相同问题感兴趣。布朗尼也指出了解决该问题的方法]。
[不,我不能只在真实的控制器上尝试;我实际上没有人,离我最近的人实际上离我有两天了。]
答案是什么,您查阅的参考文献中显示的答案是什么?
答案 0 :(得分:3)
这个问题的答案实际上取决于IDE。尽管ST有一个标准,但是每个供应商在实现它方面都略有不同。
通常,这是有效的声明。
username=312412&real_name=Dean&phone=13412345678&email=xxx@yahoo.com
这是IEC 61131-3草案中的内容。不幸的是,它不是开放文档,而且要花钱,所以我不能在此处发布或提供链接。
https://webstore.iec.ch/publication/4552
VAR
a, b: BOOL;
END_VAR
IF a = b THEN
// Do something
END_IF
GT
降序:>
OUT := (IN1>IN2) & (IN2>IN3) & ... & (INn-1 > INn)
GE
单调序列:>=
OUT := (IN1>=IN2)&(IN2>=IN3)& ... & (INn-1 >= INn)
EQ
平等:=
OUT := (IN1=IN2) & (IN2=IN3) & ... & (INn-1 = INn)
LE
=单调序列:<
OUT := (IN1<=IN2)&(IN2<=IN3)& ... & (INn-1 <= INn)
LT
递增顺序:<
OUT := (IN1<IN2) & (IN2<IN3) & ... & (INn-1 < INn)
NE
不等式(不可扩展)<>
这还意味着您可以在某些IDE中使用
OUT := (IN1 <> IN2)
这也应该有效。
我可以写: A> B 这是什么意思?
如果IF EQ(a, b) THEN
// Do something
END_IF
大于A
,则此表达式将返回B
,否则返回TRUE
。