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:[email protected]] > Sent: Wednesday, March 22, 2017 11:11 AM > To: Mol, Xavier (SCC) > Cc: [email protected] > 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: [email protected] > >> [mailto:[email protected]] On Behalf Of Štepán Balážik > >> Sent: Tuesday, March 21, 2017 6:16 PM > >> To: [email protected] > >> 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 > >> [email protected] > >> https://www.redhat.com/mailman/listinfo/augeas-devel
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ augeas-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/augeas-devel
