【问题标题】:What characters are allowed in the name of a rule in Drools?Drools 中的规则名称中允许使用哪些字符?
【发布时间】:2021-02-15 17:03:39
【问题描述】:

我无法在 Drools 文档中找到,在 Drools 的规则名称中允许/禁止哪些字符(字母除外) - 有人知道或有参考吗?

目前我发现的Drools doc的唯一相关部分没有指定:

每个规则在规则包中必须有一个唯一的名称。如果您在包中的任何 DRL 文件中多次使用相同的规则名称,则规则无法编译。始终用双引号将规则名称括起来(规则“规则名称”)以防止可能的编译错误,尤其是在规则名称中使用空格时。


我想我发现,有趣的是,一些“分组”字符在规则名称中不起作用(似乎无法找到或不包括以 命名的规则) - 或者至少在 extension 规则(扩展规则似乎适用于分组字符,但不适用于其扩展;示例如下):分组字符包括括号“()”、方括号“[]”和“花括号”“{}” .虽然小于 & 大于 "" 的工作,所以我到目前为止用后者替换前者。

或者有问题的分组字符是否有转义字符?

示例

rule "(grouping chars, and commas, work here)"
when
    // conditions LHS
then
end

// removing parentheses, or replacing with < >,
// from below line works
rule "(grouping chars DON'T work here)"
extends "(grouping chars, and commas, work here)"
when
then
    // consequences RHS

我还没有发现所有其他字符的任何一种方式(例如,其他标点符号;除了我发现逗号“,”有效)。但最好提前知道允许使用哪些字符。

【问题讨论】:

  • 你应该可以在 GitHub 上找到描述 drl 语言的 antlr 定义。

标签: character drools naming punctuation


【解决方案1】:

理论上,字符串中的每个标识符都应该有效,但您可能已经凭经验发现某些组合会以某种方式破坏grammar

感谢调查,我已经填了Jira,请看一下

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多