generic abstract syntax trees in the domain of formal languages.
In order to meet these design goals, OSN pursues the following features.
</body>
- <list><style class="red-mark"><item><style class="alpha">
+ <list><item class="red-mark"><style class="alpha">
<link to="https://en.wikipedia.org/wiki/S-expression">Symbolic expressions</link>
based on widely accepted syntactical conventions
provide for a <notice text="lightweight"/> and <notice text="generic"/> grammar,
as well as the support for canonicalization.
Apparently, these features fall outside the scope of OSN,
which targets the data structures of <notice text="formal languages"/>.
- </style></item></style>
- <newline/>
- <style class="blue-mark"><item><style class="alpha">
+ </style></item></list>
+ <list><item class="blue-mark"><style class="alpha">
Optionally <link to="https://en.wikipedia.org/wiki/Namespace">qualified</link> symbolic expressions
allow OSN texts to mix data from different domains preserving their own semantics
because name conflicts can be avoided.
As a consequence OSN documents are <notice text="easy to extend"/> in that
domain-specific OSN applications can work as expected even if
data from different domains is added to the text they process.
- </style></item></style>
- <newline/>
- <style class="green-mark"><item><style class="alpha">
+ </style></item></list>
+ <list><item class="green-mark"><style class="alpha">
The <link to="https://en.wikipedia.org/wiki/ASCII">US-ASCII</link> character set,
extended to <link to="http://www.utf-8.com/">UTF-8</link> in
free-form text strings for the convenience of human readers,
makes OSN documents <notice text="easy to visualize and transport"/> over communication media.
OSN design aims at supporting <notice text="application-independent"/> standard encodings.
- </style></item></style></list>
+ </style></item></list>
<section6 name="grammar">Grammar</section6>
<str2 of="a"/> <etc/> <str2 of="z"/>
<stop/>
</ebnf>
- </item><newline/><item>
+ </item></list>
+ <list><item>
This token contains free-form text with commonly accepted escape sequences:
<newline/><ebnf>
<prod of="string"/> <def/>
<str2 of="a"/> <etc/> <str2 of="f"/>
<stop/>
</ebnf>
- </item><newline/><item>
+ </item></list>
+ <list><item>
This token is a widely used alternative of the former token:
<newline/><ebnf>
<prod of="string-alt"/> <def/>
<str1 of="'"/>
<stop/>
</ebnf>
- </item><newline/><item>
+ </item></list>
+ <list><item>
This token separates the qualifiers of a symbolic expression:
<newline/><ebnf>
<prod of="sep"/> <def/> <str2 of=":"/> <stop/>
</ebnf>
- </item><newline/><item>
+ </item></list>
+ <list><item>
This token starts a compound symbolic expression:
<newline/><ebnf>
<prod of="open"/> <def/>
<str2 of="("/> <or/> <str2 of="<"/> <or/> <str2 of="["/> <or/> <str2 of="{"/>
<stop/>
</ebnf>
- </item><newline/><item>
+ </item></list>
+ <list><item>
This token ends a compound symbolic expression:
<newline/><ebnf>
<prod of="close"/> <def/>
<str2 of=")"/> <or/> <str2 of=">"/> <or/> <str2 of="]"/> <or/> <str2 of="}"/>
<stop/>
</ebnf>
- </item><newline/><item>
+ </item></list>
+ <list><item>
This token is ignored and separates the other tokens:
<newline/><ebnf>
<prod of="gap"/> <def/>
<star/> <prod of="q-expr"/>
<stop/>
</ebnf>
- </item><newline/><item>
+ </item></list>
+ <list><item>
A qualified symbolic expression:
<newline/><ebnf>
<prod of="q-expr"/> <def/>
<prod of="expr"/>
<stop/>
</ebnf>
- </item><newline/><item>
+ </item></list>
+ <list><item>
An unqualified symbolic expression:
<newline/><ebnf>
<prod of="expr"/> <def/>