VCL表达式

我最近一直在研究VCL的表达方式,现在我们已经接近尾声了。

从普通编程语言的角度来看,VCL中的数据类型“有点奇怪”,因为它们不是“通用”类型,而是为手头的任务量身定做的类型。

例如,我们同时有时间和持续时间类型,对于编程语言来说,这是一个非常不寻常的星座。

但在HTTP上下文中,这很有意义,您真的必须跟踪什么是相对时间(年龄),什么是绝对时间(过期)。

显然,你可以加上一个时间和持续时间,结果就是一个时间。

同样明显的是,您不能将时间与时间相加,但可以从时间中减去时间,从而得到一个持续时间。

VCL也有“裸”数字,如int和Real,但您可以用它们做的事情非常有限。例如,您可以将持续时间乘以实数,但不能将时间乘以任何值。

鉴于我们有自己的类型,下一个问题是运算符的优先顺序是什么。

C编程语言以其优先规则中有几个Gotcha而闻名,并且考虑到我们有限且狭隘的类型指令集,盲目地导入一组优先规则可能会带来更多的混乱。

以下是我已经确定的优先规则,从最高优先级到最低优先级:

原子

‘True’、‘False’、常量

函数调用

变数

‘(’表达式‘)’

乘/除

INT*INT

INT/INT

持续时间*实数

加/减

字符串+字符串

INT+/-INT

时间+/-持续时间

时间-时间

持续时间+/-持续时间

比较

‘==’、‘!=’、‘<’、‘>’、‘~’和‘!~’

字符串存在检查(->BOOL)

布尔型注释

‘!’

布尔AND

‘&&’

布尔或

‘||’

欢迎您的参与和反馈!

直到下一次,

保尔-亨宁,2010-09-21