]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/www/lambdadelta/web/home/osn.ldw.xml
- initial page for osn ...
[helm.git] / helm / www / lambdadelta / web / home / osn.ldw.xml
index d83efaaafb2949fdc03c5527266ad078b754ecb7..1f56010588f35eb77b065d0dcf5d5359a2e667d7 100644 (file)
@@ -10,7 +10,7 @@
       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.
+      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">
       representing arbitrary data in binary format is a secondary concern in the design of OSN,
       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 systems"/>. 
+      which targets the data structures of <notice text="formal languages"/>. 
    </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 
-
+      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">
       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>
+   <section6 name="grammar">Grammar</section6>
 
    <body>
       An OSN text uses the <link to="http://www.utf-8.com/">UTF-8</link> character set
@@ -62,7 +57,8 @@
       and are available for extensions of OSN.
    </body>
    <list><item>
-      <ebnf>
+      This token can represent the identifiers and the numerical constants of most programming languages:
+      <newline/><ebnf>
          <prod of="symbol"/> <def/> 
             <plus/> <prod of="symbol-char"/>
          <stop/> <newline/>
             <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;
+      </ebnf>
    </item><newline/><item>
-      <ebnf>
+      This token contains free-form text with commonly accepted escape sequences:
+      <newline/><ebnf>
          <prod of="string"/> <def/>
             <str2 of="&quot;"/> <and/>
             <star/> <open/>
             <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;
+      </ebnf>
    </item><newline/><item>
-      <ebnf>
+      This token is a widely used alternative of the former token:
+      <newline/><ebnf>
          <prod of="string-alt"/> <def/>
             <str1 of="'"/> <and/>
             <star/> <open/>
             <close/> <and/>
             <str1 of="'"/>
          <stop/>
-      </ebnf><newline/>
-      this token is a widely used alternative of the former;
+      </ebnf>
    </item><newline/><item>
-      <ebnf>
+      This token separates the qualifiers of a symbolic expression:
+      <newline/><ebnf>
          <prod of="sep"/> <def/> <str2 of=":"/> <stop/>
-      </ebnf><newline/>
-      this token separates the qualifiers of a symbolic expression;
+      </ebnf>
    </item><newline/><item>
-      <ebnf>
+      This token starts a compound symbolic expression:
+      <newline/><ebnf>
          <prod of="open"/> <def/>
             <str2 of="("/> <or/> <str2 of="&lt;"/> <or/> <str2 of="["/> <or/> <str2 of="{"/>
          <stop/>
-      </ebnf><newline/>
-      this token starts a compound symbolic expression;
+      </ebnf>
    </item><newline/><item>
-      <ebnf>
+      This token ends a compound symbolic expression:
+      <newline/><ebnf>
          <prod of="close"/> <def/>
             <str2 of=")"/> <or/> <str2 of="&gt;"/> <or/> <str2 of="]"/> <or/> <str2 of="}"/>
          <stop/>
-      </ebnf><newline/>
-      this token ends a compound symbolic expression;
+      </ebnf>
    </item><newline/><item>
-      <ebnf>
+      This token is ignored and separates the other tokens:
+      <newline/><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.
+      </ebnf>
    </item></list>
 
    <body>
+      The grammar of OSN is very liberal by design.
+      Spaces of the form <ebnf><plus/> <prod of="gap"/></ebnf> can appear between any pair of tokens.
    </body>
+   <list><item>
+      An OSN text:
+      <newline/><ebnf>
+         <prod of="text"/> <def/>
+            <star/> <prod of="q-expr"/>
+         <stop/>
+      </ebnf>
+   </item><newline/><item>
+      A qualified symbolic expression:
+      <newline/><ebnf>
+         <prod of="q-expr"/> <def/>
+            <star/> <open/>
+               <prod of="symbol"/> <and/> <plus/> <prod of="sep"/>
+            <close/> <and/>
+            <prod of="expr"/>
+         <stop/>
+      </ebnf>
+   </item><newline/><item>
+      An unqualified symbolic expression:
+      <newline/><ebnf>
+         <prod of="expr"/> <def/>
+            <prod of="symbol"/> <or/>
+            <prod of="string"/> <or/>
+            <prod of="string-alt"/> <or/>
+            <open/>
+               <prod of="open"/> <and/>
+               <prod of="text"/> <and/>
+               <prod of="close"/> 
+            <close/>
+         <stop/>
+      </ebnf>
+   </item></list>
+
+   <section1 name="semantics">Semantics</section1>
 
+   <body>
+      Forthcoming ...
+   </body>
 <!--
       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
 -->
 
+   <section5 name="implementation">Implementation</section5>
+
+   <body>
+      Forthcoming ...
+   </body>
+
    <footer/>
 </page>