当前位置: 首页 > 知识库问答 >
问题:

门JAPE规则优先级不受尊重

萧宏远
2023-03-14

我有以下案文:

1 hwb wert: 330 kWh

在第一步中,下面的映射是tacking place:

JAPE规则:

Phase: composedUnits
Input: Token Lookup
Options: control=appelt debug=true

Rule: TableRow
Priority:10
 (
  ({Lookup.majorType == "keyword"})
  ({Token.kind == punctuation})[0,4]
  ({Lookup.majorType == "unit"})
 )

Rule: ReversedTableRow
Priority: -2
(
 ({Token.kind == number})
 ({Lookup.majorType == "keyword"})
)

我不明白为什么reversedtableRow-rule是匹配的,而不是tableRow

共有1个答案

葛玉堂
2023-03-14

appelt优先级只适用于相同的文本区域(例如,较早的匹配获胜和较长的匹配获胜)。前一个规则使用的文本不能与后一个规则匹配。..

从文档中:

使用appelt样式,根据一组优先级规则,同一文本区域只能修改一个规则。优先级的操作方式如下。

    null

规则tableRow可以通过以下修改获得更长的时间,请注意,我添加了:tableRow标签,该标签不包括前导数字标记。

(
 ({Token.kind == number})?
 (
  ({Lookup.majorType == "keyword"})
  ({Token.kind == punctuation})[0,4]
  ({Lookup.majorType == "unit"})
 ):tableRow
)
 类似资料:
  • 本文向大家介绍ANTLR 优先规则,包括了ANTLR 优先规则的使用技巧和注意事项,需要的朋友参考一下 示例 几个词法分析器规则可以匹配相同的输入文本。在这种情况下,令牌类型将选择如下: 首先,选择与最长输入匹配的词法分析器规则 如果文本与隐式定义的标记匹配(例如'{'),请使用隐式规则 如果多个词法分析器规则匹配相同的输入长度,请根据定义顺序选择第一个 以下是组合语法: 给出以下输入: 将从词法

  • 我希望它们按以下顺序运行:job3、job4、job1、job2 在20次运行中,只有大约3次我得到了预期的结果。对于其他任务,要运行的第一个任务几乎是随机的,其余任务的顺序是正确的。一次运行如下:job1,job3,job4,job2或job4,job3,job1,job2 我是不是没有正确理解Quartz中的优先级是如何工作的?我找不到到底发生了什么。

  • 正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。 相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序: 运算符 描述 \ 转义符 (), (?:), (?=), [] 圆括号和方括号 *, +, ?, {n}, {n,}, {n,m} 限定符 ^, $, \任何元字符、任何字符 定位点和序列(即:位置和顺序) | 替

  • 在输出中它只给了令牌,空间令牌有人能帮我解决问题吗?

  • 问题内容: 我的网页包含: 引用的样式表包含: 我在ID中有一张表格,希望单元格有一些填充。但是,引用的样式表优先于内联样式。我可以通过Firebug直观地看到这一点。如果我关闭Firebug中的指令,则向左填充将生效。 我该如何上班? 问题答案: 正如其他人提到的那样,您有一个特异性问题。当确定两个规则中的哪一个优先时,CSS引擎会计算每个选择器中的s 数量。如果一个比另一个多,就使用它。否则,

  • 代码生成器用于将Blockly的程序转换为JavaScript,Python,PHP,Lua,Dart等。在为新块编写代码生成器时,最具挑战性的问题是处理操作顺序,以使生成的代码按预期执行。 圆括号 考虑下面的块组装。 如果生成器不知道运算符的优先级,则生成的JavaScript代码将是: alert(2*3+4); 这显然是不正确的,因为乘法运算符会撕裂加法,自己获取“ 3”。一种解决方案是将每