+<?xml version="1.0" encoding="UTF-8"?>
+
+<page xmlns="http://lambdadelta.info/"
+ description = "\lambda\delta home page: Open Symbolic Notation"
+ title = "\lambda\delta home page: Open Symbolic Notation"
+ logo = "osn"
+ head = "Open Symbolic Notation"
+>
+ <body>
+ Open Symbolic Notation, abbreviated OSN,
+ is an easy and flexible data-interchange text format
+ intended for the lightweight representation of
+ generic abstract syntax trees in the domain of formal systems.
+ In order to meet theese design goals, OSN pursues the following features.
+ </body>
+ <list><style class="red-mark"><item><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,
+ which is both <notice text="easy for machines to process"/>,
+ and <notice text="easy for humans to understand"/>.
+ As a mean to support <notice text="efficient"/> information processing,
+ OSN aims at an economic representation of data
+ contrary to <link to="http://www.w3.org/TR/2008/REC-xml-20081126/#sec-origin-goals">XML design goal 10</link>.
+ Compared to other data-interchange formats based on symbolic expressions,
+ like <link to="http://people.csail.mit.edu/rivest/Sexp.txt">canonical symbolic expressions</link>,
+ representing arbitrary data in binary format is a secondary concern in the designn of OSN,
+ as well as the support for canonicalization.
+ Apparently, theese features fall outside the scope of OSN,
+ which targets the data structures of <notice text="formal systems"/>.
+ </style></item></style>
+ <newline/>
+ <style class="blue-mark"><item><style class="alpha">
+ Optionally <link to="https://en.wikipedia.org/wiki/Namespace">qualified</link> symbolic expressions
+
+ </style></item></style>
+ <newline/>
+ <style class="green-mark"><item><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>
+ <body>
+
+ </body>
+<!--
+ flexibility: S-expressions should make it relatively simple to
+ modify and extend data structures.
+ OSN is completely language independent but uses .
+-->
+
+
+ <section6 name="syntax">Syntax</section6>
+
+ <body>
+ An OSN text uses the <link to="http://www.utf-8.com/">UTF-8</link> character set
+ and contains the next seven tokens that we define in a very common EBNF variant.
+ Characters not starting a token are not allowed.
+ The ones in the range U+0021 ... U+007E are ! # $ % & * / ? @ \ ^ | ~
+ and are available for extensions of OSN.
+ </body>
+ <list><item>
+ <ebnf>
+ <prod of="symbol"/> <def/>
+ <plus/> <prod of="symbol-char"/>
+ <stop/> <newline/>
+ <prod of="symbol-char"/> <def/>
+ <str2 of="+"/> <or/> <str2 of="-"/> <or/> <str2 of="."/> <or/>
+ <str2 of="0"/> <etc/> <str2 of="9"/> <or/>
+ <str2 of="A"/> <etc/> <str2 of="Z"/> <or/>
+ <str2 of="_"/> <or/> <str2 of="`"/> <or/>
+ <str2 of="a"/> <etc/> <str2 of="z"/>
+ <stop/>
+ </ebnf><newline/>
+ this token can represent the identifiers and the numerical constants of most programming languages;
+ </item><newline/><item>
+ <ebnf>
+ <prod of="string"/> <def/>
+ <str2 of="""/> <and/>
+ <star/> <open/>
+ <prod of="string-char"/> <or/>
+ <str1 of="'"/> <or/>
+ <str2 of="\"/> <prod of="escape"/>
+ <close/> <and/>
+ <str2 of="""/>
+ <stop/> <newline/>
+ <prod of="string-char"/> <def/>
+ <open/>
+ <xchr of="0"/> <etc/> <xchr of="10FFFF"/>
+ <close/> <but/> <open/>
+ <xchr of="0"/> <etc/> <xchr of="1F"/> <or/>
+ <str1 of="'"/> <or/> <str2 of="\"/> <or/>
+ <str2 of="""/> <or/> <xchr of="7F"/>
+ <close/>
+ <stop/> <newline/>
+ <prod of="escape"/> <def/>
+ <plus/> <prod of="space"/> <or/>
+ <str2 of="""/> <or/> <str1 of="'"/> <or/>
+ <str2 of="("/> <or/> <str2 of=")"/> <or/>
+ <str2 of="0"/> <or/> <str2 of="\"/> <or/>
+ <str2 of="a"/> <or/> <str2 of="b"/> <or/>
+ <str2 of="e"/> <or/>
+ <str2 of="f"/> <or/> <str2 of="n"/> <or/>
+ <str2 of="r"/> <or/> <str2 of="t"/> <or/>
+ <open/>
+ <str2 of="u"/> <and/> <spec of="4"/> <prod of="hex"/>
+ <close/> <or/>
+ <str2 of="v"/> <or/>
+ <open/>
+ <str2 of="x"/> <and/> <spec of="2"/> <prod of="hex"/>
+ <close/>
+ <stop/> <newline/>
+ <prod of="space"/> <def/>
+ <xchr of="9"/> <etc/> <xchr of="D"/> <or/>
+ <xchr of="20"/>
+ <stop/> <newline/>
+ <prod of="hex"/> <def/>
+ <str2 of="0"/> <etc/> <str2 of="9"/> <or/>
+ <str2 of="A"/> <etc/> <str2 of="F"/> <or/>
+ <str2 of="a"/> <etc/> <str2 of="f"/>
+ <stop/>
+ </ebnf><newline/>
+ this token contains free-form text with commonly accepted escape sequences;
+ </item><newline/><item>
+ <ebnf>
+ <prod of="string-alt"/> <def/>
+ <str1 of="'"/> <and/>
+ <star/> <open/>
+ <prod of="string-char"/> <or/>
+ <str2 of="""/> <or/>
+ <str2 of="\"/> <prod of="escape"/>
+ <close/> <and/>
+ <str1 of="'"/>
+ <stop/>
+ </ebnf><newline/>
+ this token is a widely used alternative of the former;
+ </item><newline/><item>
+ <ebnf>
+ <prod of="sep"/> <def/> <str2 of=":"/> <stop/>
+ </ebnf><newline/>
+ this token separates the qualifiers of a symbolic expression;
+ </item><newline/><item>
+ <ebnf>
+ <prod of="open"/> <def/>
+ <str2 of="("/> <or/> <str2 of="<"/> <or/> <str2 of="["/> <or/> <str2 of="{"/>
+ <stop/>
+ </ebnf><newline/>
+ this token starts a compound symbolic expression;
+ </item><newline/><item>
+ <ebnf>
+ <prod of="close"/> <def/>
+ <str2 of=")"/> <or/> <str2 of=">"/> <or/> <str2 of="]"/> <or/> <str2 of="}"/>
+ <stop/>
+ </ebnf><newline/>
+ this token ends a compound symbolic expression;
+ </item><newline/><item>
+ <ebnf>
+ <prod of="gap"/> <def/>
+ <prod of="space"/> <or/>
+ <str2 of=","/> <or/> <str2 of=";"/> <or/> <str2 of="="/>
+ <stop/>
+ </ebnf><newline/>
+ this token is ignored and separates the other tokens.
+ </item></list>
+
+ <body>
+ </body>
+
+<!--
+ morover, the escape sequences \x <two hexadecimal digits> and \u <four hexadecimal digits>
+ allow to specify a character by its code point <newline/>
+ finally the escape sequences \( for U+0002 and \) for U+0003 are available
+-->
+
+ <footer/>
+</page>