Esper js 表达式声明

Esper js expression declaration

我正在按照 Esper documentation 中的示例创建一个遵循 js 方言的表达式

这是我的 EPL 声明

expression float js:IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2) [
    IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2);
    function IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2) {
    //get the bottom left and top right points of the intersection triangle
    var xIntersection1 = Math.max(xBottom1,xBottom2);
    var yIntersection1 = Math.max(yBottom1,yBottom2);
    var xIntersection2 = Math.min(xTop1,xTop2);
    var yIntersection2 = Math.min(yTop1,yTop2);

    var interArea = (Math.max(0, xIntersection2 - xIntersection1 +1) * Math.max(0, yIntersection2 - yIntersection1 +1));
    var box1Area = (Math.max(0, xTop1 - xBottom1 +1) * Math.max(0, yTop1 - yBottom1 +1));
    var box2Area = (Math.max(0, xTop2 - xBottom2 +1) * Math.max(0, yTop2 - yBottom2 +1));

    var iou = interArea / parseFloat(box1Area+box2Area-interArea);

    return iou;
   }
]

但是,我得到一个编译错误 Incorrect syntax near 'IOU' at line 2 column 4 [expression float js:IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2)...

我不确定缺少什么以及 Esper Github 中是否有使用表达式的示例?我需要以某种方式配置编译器吗?这在文档的第 19 章的相应章节中没有提到。

澄清一下,我什至尝试使用单行JS脚本并验证了上述JS功能。所以,我认为这与如何在 EPL 中定义脚本有关,而不是在各自的方言中定义语法本身。

独立表达式语法是“创建表达式”。因为我没有看到任何其他东西,所以我认为你想做一个独立的表达式,所以它缺少“创建”。 当它不是一个独立的表达式时,语法是“expression ... select ...”。

Here is a link to one of the regression tests.