[prev in list] [next in list] [prev in thread] [next in thread]
List: xml-dev
Subject: Re: [xml-dev] Many different syntaxes in XML - is that good language design?
From: Dimitre Novatchev <dnovatchev () gmail ! com>
Date: 2022-03-09 3:57:22
Message-ID: CAK4KnZcYX008CO0utVgz43Nj_YTaZUsk_20xmT_Om+We1etK_A () mail ! gmail ! com
[Download RAW message or body]
> Phew! That is a lot of different syntaxes.
>
> Is that good language design to have so many different syntaxes?
>
> Dealing with lots of different syntaxes is hard.
In 2008 I implemented a generic LR-1 parser in XSLT. It uses the XML
representation of a set of parsing tables for a given LR-1 grammar. The
parsing tables are generated by YACC (with a function I added to YACC's
output generator).
The lexer also would use a set of monstrous-looking RegEx expressions for
the terminal symbols of the specific language.
So any complaints of having to deal with a few languages that we know about
in advance, fade in comparison with this LR-1 parser, written in XSLT,
which (the XSLT) is actually an XML document, that uses the parsing tables
of any possible (and unknown in advance) LR-1 languages and itself
generates an abstract tree (in XML, of course), representing the parse.
For the case when the language to be parsed happens to be XPath 2.0:
https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/func-lrParse.xsl
https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPATH-Grammar.y
https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPATH-ParseTables.xml
https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPathParse1.xsl
And this is example of invoking this parser to parse one (the first) of
many possible XPath expressions contained in this transformation:
https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPathParse1.xsl
Just invoke this transformation on any XML document (not used) such as <t />
Cheers,
Dimitre
On Mon, Mar 7, 2022 at 4:14 AM Roger L Costello <costello@mitre.org> wrote:
> Hi Folks,
>
> There are many different syntaxes in XML:
>
> The comment syntax: <!-- ... -->
>
> The PI syntax: <? ... ?>
>
> The CDATA section syntax: <![CDATA[ ... ]>
>
> The DOCTYPE syntax: <!DOCTYPE ... >
>
> The entity syntaxes: & and   and  
>
> The namespace syntax: xmlns:foo="..." and <foo:bar>...</foo:bar>
>
> Attribute/value syntax: x="blah"
>
> The start-tag/end-tag syntax:
>
> <baz>
> <widget>...</widget>
> </baz>
>
> Phew! That is a lot of different syntaxes.
>
> Is that good language design to have so many different syntaxes?
>
> Dealing with lots of different syntaxes is hard. For example, I never
> remember the syntax for CDATA sections (in fact, I had to look it up just
> now).
>
> Isn't it better language design to have a small number of syntaxes?
>
> /Roger
>
> _______________________________________________________________________
>
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
> to support XML implementation and development. To minimize
> spam in the archives, you must subscribe before posting.
>
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org
> List archive: http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>
>
--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
To achieve the impossible dream, try going to sleep.
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
Typing monkeys will write all Shakespeare's works in 200yrs.Will they write
all patents, too? :)
-------------------------------------
Sanity is madness put to good use.
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.
[Attachment #3 (text/html)]
<div dir="ltr"><div dir="ltr">> Phew! That is a lot of different syntaxes.<br>> \
<br>> Is that good language design to have so many different syntaxes?<br>> \
<br>> Dealing with lots of different syntaxes is hard. <br></div><div \
dir="ltr"><br></div><div>In 2008 I implemented a generic LR-1 parser in XSLT. It uses \
the XML representation of a set of parsing tables for a given LR-1 grammar. The \
parsing tables are generated by YACC (with a function I added to YACC's output \
generator).</div><div>The lexer also would use a set of monstrous-looking RegEx \
expressions for the terminal symbols of the specific language.<br><br>So any \
complaints of having to deal with a few languages that we know about in advance, fade \
in comparison with this LR-1 parser, written in XSLT, which (the XSLT) is actually an \
XML document, that uses the parsing tables of any possible (and unknown in advance) \
LR-1 languages and itself generates an abstract tree (in XML, of course), \
representing the parse.<br><br>For the case when the language to be parsed happens \
to be XPath 2.0:<br><br><a \
href="https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/func-lrParse.xsl">h \
ttps://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/func-lrParse.xsl</a><br><br><a \
href="https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPATH-Grammar.y">ht \
tps://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPATH-Grammar.y</a><br><br><a \
href="https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPATH-ParseTables.x \
ml">https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPATH-ParseTables.xml</a><br><br><a \
href="https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPathParse1.xsl">ht \
tps://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPathParse1.xsl</a><br><br>And \
this is example of invoking this parser to parse one (the first) of many possible \
XPath expressions contained in this transformation:<br><br><a \
href="https://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPathParse1.xsl">ht \
tps://github.com/dnovatchev/FXSL-XSLT2/blob/master/newWork/XPathParse1.xsl</a><br><br>Just \
invoke this transformation on any XML document (not used) such as <t \
/><br><br><br></div><div><br></div><div>Cheers,</div><div>Dimitre<br> \
</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 7, \
2022 at 4:14 AM Roger L Costello <<a \
href="mailto:costello@mitre.org">costello@mitre.org</a>> \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Folks,<br> <br>
There are many different syntaxes in XML:<br>
<br>
The comment syntax: <!-- ... --><br>
<br>
The PI syntax: <? ... ?><br>
<br>
The CDATA section syntax: <![CDATA[ ... ]><br>
<br>
The DOCTYPE syntax: <!DOCTYPE ... ><br>
<br>
The entity syntaxes: &amp; and &#x020; and &#032;<br>
<br>
The namespace syntax: xmlns:foo="..." and \
<foo:bar>...</foo:bar><br> <br>
Attribute/value syntax: x="blah"<br>
<br>
The start-tag/end-tag syntax:<br>
<br>
<baz><br>
<widget>...</widget><br>
</baz><br>
<br>
Phew! That is a lot of different syntaxes.<br>
<br>
Is that good language design to have so many different syntaxes?<br>
<br>
Dealing with lots of different syntaxes is hard. For example, I never remember the \
syntax for CDATA sections (in fact, I had to look it up just now).<br> <br>
Isn't it better language design to have a small number of syntaxes?<br>
<br>
/Roger<br>
<br>
_______________________________________________________________________<br>
<br>
XML-DEV is a publicly archived, unmoderated list hosted by OASIS<br>
to support XML implementation and development. To minimize<br>
spam in the archives, you must subscribe before posting.<br>
<br>
[Un]Subscribe/change address: <a href="http://www.oasis-open.org/mlmanage/" \
rel="noreferrer" target="_blank">http://www.oasis-open.org/mlmanage/</a><br> Or \
unsubscribe: <a href="mailto:xml-dev-unsubscribe@lists.xml.org" \
target="_blank">xml-dev-unsubscribe@lists.xml.org</a><br>
subscribe: <a href="mailto:xml-dev-subscribe@lists.xml.org" \
target="_blank">xml-dev-subscribe@lists.xml.org</a><br> List archive: <a \
href="http://lists.xml.org/archives/xml-dev/" rel="noreferrer" \
target="_blank">http://lists.xml.org/archives/xml-dev/</a><br> List Guidelines: <a \
href="http://www.oasis-open.org/maillists/guidelines.php" rel="noreferrer" \
target="_blank">http://www.oasis-open.org/maillists/guidelines.php</a><br> <br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" \
class="gmail_signature"><div>Cheers,</div><div>Dimitre \
Novatchev</div><div>---------------------------------------</div><div>Truly great \
madness cannot be achieved without significant \
intelligence.</div><div>---------------------------------------</div><div>To invent, \
you need a good imagination and a pile of \
junk</div><div>-------------------------------------</div><div>Never fight an \
inanimate object</div><div>-------------------------------------</div><div>To avoid \
situations in which you might make mistakes may be the</div><div>biggest mistake of \
all</div><div>------------------------------------</div><div>Quality means doing it \
right when no one is \
looking.</div><div>-------------------------------------</div><div>You've \
achieved success in your field when you don't know whether what you're doing \
is work or play</div><div>-------------------------------------</div><div>To achieve \
the impossible dream, try going to \
sleep.</div><div>-------------------------------------</div><div>Facts do not cease \
to exist because they are \
ignored.</div><div>-------------------------------------</div><div>Typing monkeys \
will write all Shakespeare's works in 200yrs.Will they write all patents, too? \
:)</div><div>-------------------------------------</div><div>Sanity is madness put to \
good use.</div><div>-------------------------------------</div><div>I finally figured \
out the only reason to be alive is to enjoy it.</div><div> </div></div></div>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic