]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/www/lambdadelta/web/home/implementation.ldw.xml
EBNF definition of OSN begins ...
[helm.git] / helm / www / lambdadelta / web / home / implementation.ldw.xml
index bd3f4e23bddfed69aca5d4499473a22f4057e8cb..229c5e88b45471517ff70ea0dcaf9f847e68fe34 100644 (file)
       </item></list>
    </topitem>
 
+   <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>
+      <ebnf>
+         <prod of="symbol"/> <def/> 
+            <prod of="symbol_char"/> <prod of="symbol_char"/> <star/>
+         <stop/> <newline/>
+         <prod of="symbol_char"/> <def/>
+            <chr of="+"/> <or/> <chr of="-"/> <or/> <chr of="."/> <or/>
+            <chr of="0"/> <or/> <etc/> <or/> <chr of="9"/> <or/>
+            <chr of="A"/> <or/> <etc/> <or/> <chr of="Z"/> <or/>
+            <chr of="_"/> <or/> <chr of="a"/> <or/> <etc/> <or/> <chr of="z"/>
+         <stop/>
+      </ebnf> <newline/>
+      this token can represent the identifiers and the numerical constants of most programming languages;
+   </item><item>
+      <ebnf>
+         <prod of="string"/> <def/>
+            <chr of="&quot;"/> <open/>
+            <prod of="string_char"/> <or/>
+            <chr of="\"/> <prod of="escape"/>
+            <close/> <star/> <chr of="&quot;"/>
+         <stop/>
+      </ebnf> <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 &lt;two hexadecimal digits&gt; and \u &lt;four hexadecimal digits&gt;
+      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>
+      <ebnf>
+         <prod of="qualifier"/> <def/> <chr of=":"/> <stop/>
+      </ebnf>
+   </item><item>
+      <ebnf>
+         <prod of="left"/> <def/>
+            <chr of="("/> <or/> <chr of="&lt;"/> <or/> <chr of="["/> <or/> <chr of="{"/>
+         <stop/>
+      </ebnf> <newline/>
+      this token starts a compound symbolic expression;
+   </item><item>
+      <ebnf>
+         <prod of="right"/> <def/>
+            <chr of=")"/> <or/> <chr of="&gt;"/> <or/> <chr of="]"/> <or/> <chr of="}"/>
+         <stop/>
+      </ebnf> <newline/>
+      this token ends a compound symbolic expression;
+   </item><item>
+      &lt;ignored&gt; each of the characters U+0009..U+000D U+0020 , ; = <newline/>
+      these characters are ignored and separate the other tokens
+   </item><item>
+      &lt;reserved&gt; any character not starting any other token <newline/>
+      these characters are not allowed,
+      and those in the range U+0021..U+007E are
+      ! # $ % &amp; ' * / ? @ \ ^ ` | ~
+   </item></list>
+
    <footer/>
 </page>