Hi Xavier,
I suppose the 'eol' lens isn't named very descriptively since I need it
to match:
* whitespace at the end of line
* comment at the end of the line
* all 'comment only' lines
* all empty (or whitespace) only lines
So if I had a text:
blahblah #comment1
#comment2
#comment3
blahblah
I need the lens to match everything marked between asterisks:
blahblah* #comment1
#comment2
#comment3
*blahblah
Yes, I'm trying to match both ; and # comments.
I couldn't get the lens with Util.comment_generic, so I tried to write
it myself, which I found a bit easier to debug.
Also ws is just 'del [\t ]* ""'.
I would still appreciate at least a bit of insight into what is augparse
trying to say by the exception.
Thanks for help,
Štěpán
On 03/22/2017 08:47 AM, Mol, Xavier (SCC) wrote:
Hi Štěpán,
I guess, you should not try to match the line break twice. So something similar
to the following (which I have not verified to work properly) might work better:
let eol = ws* . [ label "#comment" . del /[;#]/ ";" . store /[^\n]*/ ]? . del_str
"\n"
Furthermore, I guess that you try to match for comments with a ';' as well as
'#', right? Then maybe you could try to use the Util.comment_generic lens,
which allows you redefine the #comment node with a different regular expression?
Ciao,
Xavier.
-----Original Message-----
From: augeas-devel-boun...@redhat.com [mailto:augeas-devel-boun...@redhat.com]
On Behalf Of Štepán Balážik
Sent: Tuesday, March 21, 2017 6:16 PM
To: augeas-devel@redhat.com
Subject: [augeas-devel] Iterated lens leads to 'ambiguous tree iteration'
Hi,
While writing a lens for Deckard tests
(https://gitlab.labs.nic.cz/knot/deckard) I ran into a problem.
This lens
let eol = ws . ((del /[;#]/ ";" . [label "#comment" . store /[^\n]*/]
. del_str "\n") | (del_str "\n"))* . del_str "\n"
results in this error:
$ 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/ = /[^\001-\004\n]*/ }
| ()/
' { "#comment" }' can be split into
'|=| { "#comment" }'
and
' { "#comment" }|=|'
Iterated lens: /usr/share/augeas/lenses/dist/deckard.aug:22.15-.102:
I can't get my head around the notation of Augeas' `tree -> plaintext`
exception notation so I have no idea what is `augparse` trying to say.
Can anyone help me with an explanation or a fix for the lens?
Thanks for tips and help,
Štěpán
_______________________________________________
augeas-devel mailing list
augeas-devel@redhat.com
https://www.redhat.com/mailman/listinfo/augeas-devel
_______________________________________________
augeas-devel mailing list
augeas-devel@redhat.com
https://www.redhat.com/mailman/listinfo/augeas-devel