[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:  &amp;  and &#x020; and &#032;
>
> 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">&gt; Phew! That is a lot of different syntaxes.<br>&gt; \
<br>&gt;     Is that good language design to have so many different syntaxes?<br>&gt; \
<br>&gt;     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&#39;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 &lt;t \
/&gt;<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 &lt;<a \
href="mailto:costello@mitre.org">costello@mitre.org</a>&gt; \
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:   &lt;!-- ... --&gt;<br>
<br>
The PI syntax:   &lt;? ... ?&gt;<br>
<br>
The CDATA section syntax:   &lt;![CDATA[ ... ]&gt;<br>
<br>
The DOCTYPE syntax:   &lt;!DOCTYPE ... &gt;<br>
<br>
The entity syntaxes:   &amp;amp;   and &amp;#x020; and &amp;#032;<br>
<br>
The namespace syntax:   xmlns:foo=&quot;...&quot; and \
&lt;foo:bar&gt;...&lt;/foo:bar&gt;<br> <br>
Attribute/value syntax:   x=&quot;blah&quot;<br>
<br>
The start-tag/end-tag syntax:<br>
<br>
&lt;baz&gt;<br>
     &lt;widget&gt;...&lt;/widget&gt;<br>
&lt;/baz&gt;<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&#39;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&#39;ve \
achieved success in your field when you don&#39;t know whether what you&#39;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&#39;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