Re: [xsl] Parsing XPath in XSLT?

Subject: Re: [xsl] Parsing XPath in XSLT?
From: "Wendell Piez wapiez@xxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 1 Apr 2020 13:22:46 -0000
Dear Gerrit,

Thanks indeed for the thorough analysis.

I had gotten so far as to detect the XPath 1.0 EBNF wasn't complete,
but no further. You have shown me the way.

And what a beautiful PR!

Best regards -- Wendell

OT - hey can I mention how inspiring the current work is with XProc
3.0! Very much looking forward to using that.


On Tue, Mar 31, 2020 at 7:45 PM Imsieke, Gerrit, le-tex
gerrit.imsieke@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
wrote:
>
> Hi Wendell,
>
> After comparing your XPath 1 EBNF with the XQuery 1.0 EBNF, I thought
> that there must be some incantation in the latter that makes REx
> understand patterns such as [^"]*. I analyzed the strange error message
> about EquivalenceLookAhead that came with 'Literal'. It dawned on me
> that REx must have been parsing the EBNF with a REx-generated parser,
> for which there must be an EBNF, and there it is:
> https://bottlecaps.de/rex/REx.ebnf.
> I saw that EquivalenceLookAhead also starts with '[', and then I thought
> "there must be a switch token in an EBNF that allows patterns like [^"]*
> to appear, and without that token everything that starts with '[' will
> be expected to be an EquivalenceLookAhead". And then I remembered that I
> already struggled with the <?TOKENS?> PI when editing an EBNF for CSS.
> All the terminals (but also other rules that depend on them, I guess)
> need to be defined after this token.
>
> After I fixed it I noticed another issue that REx is not to blame for:
> Many productions such as NCName were used but not defined in your XPath
> 1 schema. I copied the corresponding definitions from the XQuery schema.
> After that, there were different messages, some of them declared as
> errors, but there was still no output.
>
> It seems that you need to move not only all terminals after <?TOKENS?>,
> but also most (but not all) productions that directly or indirectly
> depend on the terminals.
>
> I finally managed to get *something* out of REx and I filed a pull
> request for that.(https://github.com/wendellpiez/metaschema/pull/2).
>
> I think the use and the overall necessity of the <?TOKENS?> PI in and
> EBNF need to be documented better in REx.
>
> b Gerrit
>
>
> On 31.03.2020 21:36, Wendell Piez wapiez@xxxxxxxxxxxxxxx wrote:
> > Dear XSL-List,
> >
> > Last week readers helped me with this interesting question of parsing
> > a formal language (specifically XPath) in XSLT. A couple of you (John
> > L, Christophe) pointed me to Gunther Rademacher's awesome work on the
> > REx parser generator.
> >
> > This is good stuff and I was indeed able to get XPath 2.0 parsing
> > running very readily. Fantastic!
> >
> > What I haven't managed to do yet is get XPath 1.0 parsing.
> >
> > For that, I need a formal grammar in EBNF that will work in Gunther's
> > tool. Conveniently, his other tool that draws railroad diagrams offers
> > one -- https://www.bottlecaps.de/rr/ui -- which indeed appears to be
> > pulled straight out of the XPath 1.0 Recommendation (see its initial
> > comment). Sounds good.
> >
> > However, while it makes a pretty railroad diagram, this EBNF doesn't
> > work in REx. (There is no good reason to think, I suppose, that it
> > should, but it is hard not to hope. :-) Possibly it is only partial.
> > In any case I need either an EBNF that works, or an education, to
> > provide me with the skills to repair this one.
> >
> > Do you have any helpful hints? What should implementers be looking at,
> > for formal descriptions of XPath 1.0 (assuming they want to do that
> > today, as I do)? In particular might there be somewhere a
> > complete-and-working variant of the XPath 1.0 grammar such as REx can
> > consume, or should it actually be pretty easy to make?
> >
> > Regards, Wendell
> >
> > PS - If anyone wishes to try the XPath 1.0 EBNF I have copied down
> > (which does not work :-):
> >
> > - REx parser generator: https://www.bottlecaps.de/rex/
> > - non-functioning EBNF:
> >
https://github.com/wendellpiez/metaschema/blob/issue39-pipeline-refactor/tool
chains/xslt-proto-v04/metapath/REx/xpath1.ebnf
> >
> > Maybe it is not that far off. REx chokes on the production for "Literal".
> > Thanks ! wap
> >
> > On Thu, Mar 26, 2020 at 7:16 PM Liam R. E. Quin liam@xxxxxxxxxxxxxxxx
> > <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> >>
> >> On Thu, 2020-03-26 at 22:49 +0000, Christophe Marchand
> >> cmarchand@xxxxxxxxxx wrote:
> >>> I've used REx parser (exactly the URL mentioned by John) during XML
> >>> Prague to convert XQuery code into syntax hilighted code in slides,
> >>> for  a XQuery course.
> >>
> >> Yes - i used it in XSLT at one point for some simple XSLT coverage
> >> checking. (perhaps i should talk about that a bit in the course on
> >> analytical XSLT)
> >>
> >> --
> >> Liam Quin, https://www.delightfulcomputing.com/
> >> Available for XML/Document/Information Architecture/XSLT/
> >> XSL/XQuery/Web/Text Processing/A11Y training, work & consulting.
> >> Barefoot Web-slave, antique illustrations:  http://www.fromoldbooks.org
> >>
> >
> >
> >
>



--
...Wendell Piez... ...wendell -at- nist -dot- gov...
...wendellpiez.com... ...pellucidliterature.org... ...pausepress.org...
...github.com/wendellpiez... ...gitlab.coko.foundation/wendell...

Current Thread