VCL表达式¶
我最近一直在研究VCL的表达方式,现在我们已经接近尾声了。
从普通编程语言的角度来看,VCL中的数据类型“有点奇怪”,因为它们不是“通用”类型,而是为手头的任务量身定做的类型。
例如,我们同时有时间和持续时间类型,对于编程语言来说,这是一个非常不寻常的星座。
但在HTTP上下文中,这很有意义,您真的必须跟踪什么是相对时间(年龄),什么是绝对时间(过期)。
显然,你可以加上一个时间和持续时间,结果就是一个时间。
同样明显的是,您不能将时间与时间相加,但可以从时间中减去时间,从而得到一个持续时间。
VCL也有“裸”数字,如int和Real,但您可以用它们做的事情非常有限。例如,您可以将持续时间乘以实数,但不能将时间乘以任何值。
鉴于我们有自己的类型,下一个问题是运算符的优先顺序是什么。
C编程语言以其优先规则中有几个Gotcha而闻名,并且考虑到我们有限且狭隘的类型指令集,盲目地导入一组优先规则可能会带来更多的混乱。
以下是我已经确定的优先规则,从最高优先级到最低优先级:
- 原子
‘True’、‘False’、常量
函数调用
变数
‘(’表达式‘)’
- 乘/除
INT*INT
INT/INT
持续时间*实数
- 加/减
字符串+字符串
INT+/-INT
时间+/-持续时间
时间-时间
持续时间+/-持续时间
- 比较
‘==’、‘!=’、‘<’、‘>’、‘~’和‘!~’
字符串存在检查(->BOOL)
- 布尔型注释
‘!’
- 布尔AND
‘&&’
- 布尔或
‘||’
欢迎您的参与和反馈!
直到下一次,
保尔-亨宁,2010-09-21