[augeas-devel] Iterated lens leads to 'ambiguous tree iteration'

Mol, Xavier (SCC) xavier.mol at kit.edu
Thu Mar 23 10:54:47 UTC 2017


Hi Štěpán,

why do you need it to match that much at once? Isn't it good enough to match and store comments individually instead of a sequence? For that, there are lenses readily available and you can create a larger lens from them if you so desire:

let filler = ((Util.comment_generic /[ \t]*[#;][ \t]*/ "; ")? . Util.eol)+

Ciao,
Xavier.

> -----Original Message-----
> From: Štěpán Balážik [mailto:stepan.balazik at nic.cz]
> Sent: Wednesday, March 22, 2017 11:11 AM
> To: Mol, Xavier (SCC)
> Cc: augeas-devel at redhat.com
> Subject: Re: [augeas-devel] Iterated lens leads to 'ambiguous tree iteration'
> 
> 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-bounces at redhat.com [mailto:augeas-devel-bounces at redhat.com] On Behalf Of Štepán Balážik
> >> Sent: Tuesday, March 21, 2017 6:16 PM
> >> To: augeas-devel at 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 at redhat.com
> >> https://www.redhat.com/mailman/listinfo/augeas-devel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 6401 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/augeas-devel/attachments/20170323/3b46b0a3/attachment.p7s>


More information about the augeas-devel mailing list