如何解决像new Date()。getTime()这样的表达式中的歧义?

时间:2019-01-09 09:43:22

标签: rascal

我们正在使用Rascal开发新版本的JavaScript语法。根据语言规范(版本6)和现有的JavaScript语法,以下是表达式的有效形式:

syntax Expression = ... 
                  | new: "new" Expression
                  | call: Expression Args

syntax Args = ... 

但是,当我们尝试解析“ new Date()。getTime()”之类的表达式时,会出现歧义错误。我们尝试使用“ left”和“>”运算符的组合来修复它,例如

| left "new" Expression
> Expression Args

,但我们无法解决此问题。我认为这可能很容易解决,但是花了几个小时之后,我们找不到解决方案。

1 个答案:

答案 0 :(得分:1)

我已尝试在此处完成您的示例,并且该操作不会引发INSERT INTO Demo2 (UPC, DAIRY_CLM, KOSHER_CLM, FAT, CALORIES) SELECT min(CASE WHEN ATTR_NAME = 'UPC' THEN VALUE END) , min(CASE WHEN ATTR_NAME = 'DAIRY_CLM' THEN VALUE END), min(CASE WHEN ATTR_NAME = 'KOSHER_CLM' THEN VALUE END), min(CASE WHEN ATTR_NAME = 'FAT' THEN VALUE END), min(CASE WHEN ATTR_NAME = 'CALORIES' THEN VALUE END) FROM Demo1 group by DIM_KEY; 异常。

Ambiguity()