在为Deckard测试编写镜头时,我遇到了一个问题。
这个镜头
let eol = ws . ((del /[;#]/ ";" . [label "#comment" . store /[^n]*/]
. del_str "n") | (del_str "n"))* . del_str "n"
导致此错误:
$ augparse /usr/share/augeas/lenses/dist/deckard.aug
Syntax error in lens definition
/usr/share/augeas/lenses/dist/deckard.aug:22.0-.119:Failed to compile eol
/usr/share/augeas/lenses/dist/deckard.aug:22.15-.104:exception: ambiguous tree iteration
Iterated regexp: / { /#comment/ = /[^ 01- 04n]*/ }
| ()/
' { "#comment" }' can be split into
'|=| { "#comment" }'
and
' { "#comment" }|=|'
Iterated lens: /usr/share/augeas/lenses/dist/deckard.aug:22.15-.102:
我无法理解 Augeas 的tree -> plaintext
例外符号的符号,所以我不知道augparse
想说什么。
谁能帮我解释或修复镜头?
Augeas在这里想说的是:它试图将树与这种模式相匹配
/{ /#comment/ = /[^ 01- 04n]*/ } | ()/
对于tree -> text
方向,Augeas 讨论了它如何匹配树节点。该表示法使用{ LABEL_RX = VALUE_RX }
来指示它尝试匹配标签与LABEL_RX
匹配且其值与VALUE_RX
匹配的树节点 — 树节点的子节点从不用于匹配。上述模式的第一部分(在|
之前)匹配标签为#comment
且值与[^ 01- 04n]*
匹配的树节点。(