+ <subsection name="osn"><osn-icon/>Open Symbolic Notation</subsection>
+ <body>
+ Open Symbolic Notation (OSN) is an easy data-interchange textual format
+ based on <link to="https://en.wikipedia.org/wiki/S-expression">symbolic expressions</link>.
+ OSN is completely language independent but uses widely accepted conventions.
+ These features make OSN ideal for storing and exchanging tree-like data structures
+ in a lightweight manner.
+ </body>
+ <body>
+ An OSN text uses the <link to="http://www.utf-8.com/">UTF-8</link> character set
+ and contains the next tokens:
+ </body>
+ <list><item>
+ <symbol> a non-empty sequence of the 66 characters + - . 0..9 A..Z _ a..z <newline/>
+ this sequence can represents the identifiers and the numerical constants of most programming languages
+ </item><item>
+ <string> a sequence of characters wrapped with the delimiter " <newline/>
+ every valid UTF-8 character whose code point is greater than U+001F is accepted eccept " \ <newline/>
+ the next commonly accepted escape sequences are recognized: \0 \a \b \t \n \v \f \r \e \" \\ <newline/>
+ 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
+ </item><item>
+ <qualifier> the character :
+ </item><item>
+ <left> each of the characters ( < [ { <newline/>
+ this token starts a compound symbolic expression
+ </item><item>
+ <right> each of the characters ) > ] } <newline/>
+ this token ends a compound symbolic expression
+ </item><item>
+ <ignored> each of the characters U+0009..U+000D U+0020 , ; = <newline/>
+ these characters are ignored and separate the other tokens
+ </item><item>
+ <reserved> any character not starting any other token <newline/>
+ these characters are not allowed,
+ and those in the range U+0021..U+007E are
+ ! # $ % & ' * / ? @ \ ^ ` | ~
+ </item></list>
+