[BACK]Return to formal-expression.tex CVS log [TXT][DIR] Up to [local] / OpenXM / doc / OpenXM-specs

Diff for /OpenXM/doc/OpenXM-specs/formal-expression.tex between version 1.1 and 1.7

version 1.1, 2000/01/20 08:52:46 version 1.7, 2000/09/09 21:59:13
Line 1 
Line 1 
 %% $OpenXM$  %% $OpenXM: OpenXM/doc/OpenXM-specs/formal-expression.tex,v 1.6 2000/09/09 16:32:26 takayama Exp $
 //&jp \section{ CMO ¤Î·Á¼°ÅªÉ½¸½ÊýË¡ }  //&jp \section{ CMO ¤Î·Á¼°ÅªÉ½¸½ÊýË¡ }
 //&eg \section{ A formal expression of CMO }  //&eg \section{ A formal expression of CMO }
   
 /*&jp  /*&jp
 Á°¤ÎÀá¤Ç CMO ¤Îɽ¸½ÊýË¡¤ò·Á¼°Åª¤ËÄêµÁ¤»¤º,  Á°¤ÎÀá¤Ç CMO ¤Îɽ¸½ÊýË¡¤ò·Á¼°Åª¤ËÄêµÁ¤»¤º,
 CMO ¤ÎBasic0 ¤Îɽ¸½Ë¡¤òÀâÌÀ¤·¤¿¤¬,  CMO ¤ÎPrimitive ¤Îɽ¸½Ë¡¤òÀâÌÀ¤·¤¿¤¬,
 ¤³¤³¤Ç¤Ï, CMO ¤Î Lisp É÷ɽ¸½ (Lisp-like expression)  ¤³¤³¤Ç¤Ï, CMO ¤Î Lisp É÷ɽ¸½ (Lisp-like expression)
 ¤Ç¤¢¤ë  ¤Ç¤¢¤ë
 CMOexpression  CMOexpression
Line 12  CMOexpression
Line 12  CMOexpression
 % (¥¿¥°¤Î¾Êάµ­Ë¡¤¬¤Û¤·¤¤.)  % (¥¿¥°¤Î¾Êάµ­Ë¡¤¬¤Û¤·¤¤.)
 */  */
 /*&eg  /*&eg
 In the previous setion, we have explained the format of CMO's in the  In the previous section, we have explained the format of CMO's in the
 Basic0 group.  Primitive group.
 In this section, we will introduce CMOexpression which is like the  In this section, we will introduce CMOexpression which is like the
 bracket expression of Lisp.  bracket expression of Lisp.
 We again explain a standard encoding method of CMO,  We again explain a standard encoding method of CMO,
 which we have already explained in the previous section.  which we have already explained in the previous section, but
   the explanation is more formal.
 */  */
   
 /*&jp  /*&jp
Line 60  By using this notation, CMOexpression is defined as fo
Line 61  By using this notation, CMOexpression is defined as fo
 Îó¤Ç¤¢¤ë.  Îó¤Ç¤¢¤ë.
 ½ªÃ¼µ­¹æ {\tt string} ¤Ï''ʸ»ú''¤ÎÎó¤Ç¤¢¤ë.  ½ªÃ¼µ­¹æ {\tt string} ¤Ï''ʸ»ú''¤ÎÎó¤Ç¤¢¤ë.
 ½ªÃ¼µ­¹æ {\tt byte} ¤Ï 8 bit ¥Ç¡¼¥¿¤òɽ¤¹, 10 ¿Ê¤Þ¤¿¤Ï 16 ¿Ê¤Î¿ô»ú¤ÎÎó¤Ç¤¢¤ë.  ½ªÃ¼µ­¹æ {\tt byte} ¤Ï 8 bit ¥Ç¡¼¥¿¤òɽ¤¹, 10 ¿Ê¤Þ¤¿¤Ï 16 ¿Ê¤Î¿ô»ú¤ÎÎó¤Ç¤¢¤ë.
   
 */  */
 /*&jp  /*&eg
 Terminal {\tt int32} is signed 32 bit integer.  Terminal {\tt int32} is signed 32 bit integer.
 Terminal {\tt string} is a byte array which usually expresses a string.  Terminal {\tt string} is a byte array which usually expresses a string.
 Terminal {\tt byte} is 8 bit data.  Terminal {\tt byte} is 8 bit data.
   
 */  */
   
 /*&jp  /*&jp
Line 82  The comma ({\tt ,}) may be used to separate each eleme
Line 81  The comma ({\tt ,}) may be used to separate each eleme
 */  */
   
 /*&jp  /*&jp
 ¤³¤Îɽµ­Ë¡ CMOexpression ¤òÍøÍѤ·¤Æ, CMO Basic0 ¤Î object ¤òµ­½Ò  ¤³¤Îɽµ­Ë¡ CMOexpression ¤òÍøÍѤ·¤Æ, CMO Primitive ¤Î object ¤òµ­½Ò
 ¤·¤Æ¤ß¤è¤¦.  ¤·¤Æ¤ß¤è¤¦.
 Object ¼«ÂΤι½Â¤¤òÀâÌÀ¤¹¤ë¤¿¤á,  Object ¼«ÂΤι½Â¤¤òÀâÌÀ¤¹¤ë¤¿¤á,
 BNF ¤ò¤â¤¦¤¹¤³¤·³ÈÄ¥¤·¤Æ, Èó½ªÃ¼µ­¹æ, ½ªÃ¼µ­¹æ̾¤Î¤ß¤Ê¤é¤º, ÊÑ¿ô¤Î  BNF ¤ò¤â¤¦¤¹¤³¤·³ÈÄ¥¤·¤Æ, Èó½ªÃ¼µ­¹æ, ½ªÃ¼µ­¹æ̾¤Î¤ß¤Ê¤é¤º, ÊÑ¿ô¤Î
Line 90  BNF ¤ò¤â¤¦¤¹¤³¤·³ÈÄ¥¤·¤Æ, Èó½ªÃ¼µ­¹æ, ½ªÃ¼µ­¹æ̾¤Î¤ß¤Ê
Line 89  BNF ¤ò¤â¤¦¤¹¤³¤·³ÈÄ¥¤·¤Æ, Èó½ªÃ¼µ­¹æ, ½ªÃ¼µ­¹æ̾¤Î¤ß¤Ê
 ¤«¤é¤Ç¤¢¤ë. ¤Þ¤¿ ``---'' ¤Ç¥³¥á¥ó¥È¤Î¤Ï¤¸¤Þ¤ê¤òɽ¤¹¤â¤Î¤È¤¹¤ë.  ¤«¤é¤Ç¤¢¤ë. ¤Þ¤¿ ``---'' ¤Ç¥³¥á¥ó¥È¤Î¤Ï¤¸¤Þ¤ê¤òɽ¤¹¤â¤Î¤È¤¹¤ë.
 */  */
 /*&eg  /*&eg
 Let us describe CMO's in the Basic0 group.  Let us describe CMO's in the Primitive group.
 In order to explain the meaning of objects,  In order to explain the meaning of objects,
 we may also put variable names to CMOexpressions.  we may also put variable names to CMOexpressions.
 The start of comments are denoted by ``---''.  The start of comments are denoted by ``---''.
Line 117  CMObject ¤Î 
Line 116  CMObject ¤Î 
 ¤Ï,  ¤Ï,
 32 bit integer $n$ ¤òɽ¸½¤·¤Æ¤¤¤ë¤ó¤À¤È¤¤¤¦¤³¤È¤¬, 1 ¹Ô¤Ç¤ï¤«¤ë.  32 bit integer $n$ ¤òɽ¸½¤·¤Æ¤¤¤ë¤ó¤À¤È¤¤¤¦¤³¤È¤¬, 1 ¹Ô¤Ç¤ï¤«¤ë.
 */  */
 /*&eg  
 (This part has not yet been translated.)  
 */  
 /*&jp  /*&jp
 ¤³¤Îµ­Ë¡¤òÍѤ¤¤Æ, Á°Àá¤ÇƳÆþ¤·¤¿, Basic0 ¤Î CMObject ¤ò  ¤³¤Îµ­Ë¡¤òÍѤ¤¤Æ, Á°Àá¤ÇƳÆþ¤·¤¿, Primitive ¤Î CMObject ¤ò
 ·Á¼°Åª¤ËÄêµÁ¤·¤è¤¦.  ·Á¼°Åª¤ËÄêµÁ¤·¤è¤¦.
 */  */
 /*&eg  /*&eg
 By using this notation, let us define formally CMObjects in the group  By using this notation, let us define formally CMObjects in the group
 Basic0.  Primitive.
 */  */
   
 /*&C  /*&C
   
 \bigbreak  \bigbreak
 \noindent  \noindent
 Group CMObject/Basic0  requires nothing. \\  Group CMObject/Primitive  requires nothing. \\
 Error2, Null, Integer32, Datum, Cstring, Mathcap, List $\in$ CMObject/Basic0. \\  Error2, Null, Integer32, Datum, Cstring, Mathcap, List $\in$ CMObject/Primitive. \\
 Document of CMObject/Basic0 is at {\tt http://www.math.kobe-u.ac.jp/OpenXM}  Document of CMObject/Primitive is at {\tt http://www.math.kobe-u.ac.jp/OpenXM}
 (in English and Japanese) \\  (in English and Japanese) \\
 \begin{eqnarray*}  \begin{eqnarray*}
 \mbox{Error2}&:& ({\tt CMO\_ERROR2}, {\sl CMObject}\, \mbox{ob}) \\  \mbox{Error2}&:& ({\tt CMO\_ERROR2}, {\sl CMObject}\, \mbox{ob}) \\
Line 169  Document of CMObject/Basic0 is at {\tt http://www.math
Line 165  Document of CMObject/Basic0 is at {\tt http://www.math
 //&jp ¤È¤Ê¤ë.  //&jp ¤È¤Ê¤ë.
 /*&jp  /*&jp
 ¤Þ¤¿,  ¤Þ¤¿,
 ``Group CMObject/Basic0  requires nothing''  ``Group CMObject/Primitive  requires nothing''
 ¤Ï, °Ê²¼¤Ï, ¥°¥ë¡¼¥× CMObject/Basic0 ¤ÎÄêµÁ¤Ç¤¢¤ê,  ¤Ï, °Ê²¼¤Ï, ¥°¥ë¡¼¥× CMObject/Primitive ¤ÎÄêµÁ¤Ç¤¢¤ê,
 ¤³¤Î¥°¥ë¡¼¥×¤Î CMObject ¤òÄêµÁ¤¹¤ë¤Î¤Ë, Í×ÀÁ¤µ¤ì¤ë CMObject ¤Î¥°¥ë¡¼¥×¤Ï  ¤³¤Î¥°¥ë¡¼¥×¤Î CMObject ¤òÄêµÁ¤¹¤ë¤Î¤Ë, Í×ÀÁ¤µ¤ì¤ë CMObject ¤Î¥°¥ë¡¼¥×¤Ï
 ¤Ê¤¤¤³¤È¤ò¼¨¤¹.  ¤Ê¤¤¤³¤È¤ò¼¨¤¹.
 ``Error2, Null, Integer32, Datum, Cstring, Mathcap, List  ``Error2, Null, Integer32, Datum, Cstring, Mathcap, List
 $\in$ CMObject/Basic0''  $\in$ CMObject/Primitive''
 ¤Ï, ¥°¥ë¡¼¥× CMObject/Basic0 ¤Ë¤Ï,  Error2, Null, Integer32,  ¤Ï, ¥°¥ë¡¼¥× CMObject/Primitive ¤Ë¤Ï,  Error2, Null, Integer32,
 Datum, Cstring ¤Ê¤ë¥¯¥é¥¹¤Î object ¤¬Â°¤¹¤ë¤³¤È¤ò¼¨¤¹.  Datum, Cstring ¤Ê¤ë¥¯¥é¥¹¤Î object ¤¬Â°¤¹¤ë¤³¤È¤ò¼¨¤¹.
 */  */
 /*&eg  /*&eg
 ¤Þ¤¿,  ``Group CMObject/Primitive  requires nothing''
 ``Group CMObject/Basic0  requires nothing''  means that there is no super group to define CMO's in the group Primitive.
 means that there is no super group to define CMO's in the group Basic0.  
 ``Error2, Null, Integer32, Datum, Cstring, Mathcap, List  ``Error2, Null, Integer32, Datum, Cstring, Mathcap, List
 $\in$ CMObject/Basic0''  $\in$ CMObject/Primitive''
 means that  means that
 Error2, Null, Integer32, Datum, Cstring  Error2, Null, Integer32, Datum, Cstring
 are members of the group CMObject/Basic0.  are members of the group CMObject/Primitive.
 */  */
   
 /*&C  /*&C
Line 233  CMOexpression ¤È, CMObject ¤Î¶èÊ̤òÍý²ò¤·¤Æ¤ª¤¯¤Î¤Ï½ÅÍ
Line 228  CMOexpression ¤È, CMObject ¤Î¶èÊ̤òÍý²ò¤·¤Æ¤ª¤¯¤Î¤Ï½ÅÍ
 ¤³¤ì¤Ï, ʸˡŪ¤Ë¤ÏÀµ¤·¤¤¥×¥í¥°¥é¥à¤À¤¬, ¤Ê¤Ë¤ò¤ä¤ë¤Î¤«¤ÏÁ´¤¯ÉÔÌÀ¤Ê  ¤³¤ì¤Ï, ʸˡŪ¤Ë¤ÏÀµ¤·¤¤¥×¥í¥°¥é¥à¤À¤¬, ¤Ê¤Ë¤ò¤ä¤ë¤Î¤«¤ÏÁ´¤¯ÉÔÌÀ¤Ê
 ¥×¥í¥°¥é¥à¤È»÷¤Æ¤¤¤ë.  ¥×¥í¥°¥é¥à¤È»÷¤Æ¤¤¤ë.
   
   */
   
   /*&jp
 ¤µ¤Æ, Open math É÷ (\cite{openmath})  ¤µ¤Æ, Open math É÷ (\cite{openmath})
 ¤Î SGML ɽ¸½Ë¡¤â²Äǽ¤Ç¤¢¤ê, ¤½¤Î¾ì¹ç¤Ï, ¾å¤ÎÆó¤Ä¤ÎÎã¤Ï¼¡¤Î¤è¤¦¤Ë  ¤Î XML ɽ¸½Ë¡¤â²Äǽ¤Ç¤¢¤ê, ¤½¤Î¾ì¹ç¤Ï, ¾å¤ÎÆó¤Ä¤ÎÎã¤Ï¼¡¤Î¤è¤¦¤Ë
 ½ñ¤¯.  ½ñ¤¯.
   */
   /*&eg
   CMO's are expressed by XML like Open Math (\cite{openmath}).
   See example below.
   */
   
   /*&C
   
 \begin{verbatim}  \begin{verbatim}
 <CMO_INT32>  <cmo>
 1234   <cmo_int32>
 </CMO_INT32>     <int32> 1234 </int32>
    </cmo_int32>
   
 <CMO_STRING>   <cmo_string>
 5     <int32 for="length"> 5 </int32>
 "Hello"     <string> "Hello" </string>
 </CMO_STRING>   </cmo_string>
   </cmo>
 \end{verbatim}  \end{verbatim}
 */  */
   
   //&jp \noindent cmo\_string ¤Ï¼¡¤Î¤è¤¦¤Ë¤¢¤é¤ï¤·¤Æ¤â¤è¤¤.
   //&eg \noindent cmo\_string may be expressed as follows.
 /*&C  /*&C
   \begin{verbatim}
   
   <cmo>
    <cmo_string>
      <int32 for="length"> 5 </int32>
      <byte> 'H' </byte> <byte> 'e' </byte>    <byte> 'l' </byte>
      <byte> 'l' </byte> <byte> 'o' </byte>
    </cmo_string>
   </cmo>
   \end{verbatim}
 */  */
   
   //&jp \noindent ¤³¤Î¾ì¹ç¤Î cmo\_string ¤Î DTD ¤Ë¤è¤ëÄêµÁ¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë. \\
   //&eg \noindent In this case, the DTD for cmo\_string is as follows; \\
   //&C \verb+  <!ELEMENT cmo_string (int32, byte*)>  +
   /*&C
   
   \bigbreak
   */
   
 /*&jp  /*&jp
 ¼¡¤Ë, ɸ½à encoding Ë¡¤òÀâÌÀ¤·¤è¤¦.  ¼¡¤Ë, ɸ½à encoding Ë¡¤òÀâÌÀ¤·¤è¤¦.
 É¸½à encoding Ë¡¤Ç¤Ï, cmo\_tag ¤ò ¥Í¥Ã¥È¥ï¡¼¥¯¥Ð¥¤¥È¥ª¡¼¥À¡¼¤Î  É¸½à encoding Ë¡¤Ç¤Ï, cmo\_tag ¤ò ¥Í¥Ã¥È¥ï¡¼¥¯¥Ð¥¤¥È¥ª¡¼¥À¡¼¤Î
Line 278  and byte data are encoded as it is.
Line 305  and byte data are encoded as it is.
 100Mbps ¤ÎÄÌ¿®Ï©¤Ç 12Mbytes ¤Î {\tt CMO\_ZZ} ¤ÎžÁ÷¤Ç¤Ï  100Mbps ¤ÎÄÌ¿®Ï©¤Ç 12Mbytes ¤Î {\tt CMO\_ZZ} ¤ÎžÁ÷¤Ç¤Ï
 Ìó 90\% ¤Î»þ´Ö¤¬ network byte order ¤Ø¤ÎÊÑ´¹¤Ë¤Ä¤¤¤ä¤µ¤ì¤Æ¤¤¤ë¤È¤¤¤¦  Ìó 90\% ¤Î»þ´Ö¤¬ network byte order ¤Ø¤ÎÊÑ´¹¤Ë¤Ä¤¤¤ä¤µ¤ì¤Æ¤¤¤ë¤È¤¤¤¦
 ¼Â¸³¥Ç¡¼¥¿¤â¤¢¤ë.  ¼Â¸³¥Ç¡¼¥¿¤â¤¢¤ë.
 ¸úΨ¤ò½Å»ë¤·¤¿ encoding Ë¡¤Ë¤Ä¤¤¤Æ¤Ï¸å½Ò¤¹¤ë.  ¸úΨ¤ò½Å»ë¤·¤¿ encoding Ë¡¤Ë¤Ä¤¤¤Æ¤Ï¸å½Ò¤¹¤ë \ref{subsection:byteorder}.
 */  */
 /*&eg  /*&eg
 When we are using a high speed network,  When we are using a high speed network,
 the translation from the internal expression of 32 bit integers to  the translation from the internal expression of 32 bit integers to
 network byte order may become a bottle neck.  network byte order may become a bottle neck.
 There are experimental data which presents that 90 percents of the transmission  There are experimental data which presents that 90 percents of the transmission
 time are  time are used
 for the translation to the network byte order to send {\tt CMO\_ZZ} of size  for the translation to the network byte order to send {\tt CMO\_ZZ} of size
 12M bytes on a 100Mbps network.  12M bytes.
 In a later section, we will discuss a protocol to avoid the translation.  We used a 100Mbps network.
   In a later section \ref{subsection:byteorder},
   we will discuss a protocol to avoid the translation.
 */  */
   
 /*&C  /*&C
Line 329  is the encoding of the CMOexpression
Line 358  is the encoding of the CMOexpression
 ¤Î ɸ½à encoding Ë¡¤Ë¤è¤ëɽ¸½¤Ç¤¢¤ë.  ¤Î ɸ½à encoding Ë¡¤Ë¤è¤ëɽ¸½¤Ç¤¢¤ë.
 */  */
   
   /*&C
   
   \bigbreak
   
   */
   
   /*&jp
   (¼Â¸³Åª)
   CMO ¤ª¤è¤Ó OX packets ¤Ï XML µ¬³Ê \cite{xml} ¤Ë½àµò¤·¤Æ¤¤¤ë.
   XML µ¬³Ê¤Î Attribute ¤ò binary encode ¤¹¤ë¤¿¤á¤Ë
   ÆÃÊ̤ʥ¿¥° \\
   */
   /*&eg
   (Experimental)
   CMO and OX packets are complient to XML specification \cite{xml}.
   In order to encode ``Attribute'' in XML in our binary format,
   we have a tag: \\
   */
   //&C \verb! #define CMO_ATTRIBUTE_LIST  (LARGEID+3) !  \\
   /*&jp
   ¤òÍÑ°Õ¤·¤Æ¤¢¤ë.
   */
   /*&jp
   ¤¿¤È¤¨¤Ð Attribute {\tt font="Times-Roman" }  ¤Ï \\
   */
   /*&eg
   For example, the attibute {\tt font="Times-Roman" } is encoded as \\
   */
   /*&C
   \begin{verbatim}
    (CMO_ATTRIBUTE (CMO_LIST
                     (CMO_LIST (CMO_STRING,"font") (CMO_STRING, "Times-Roman"))))
   \end{verbatim}
   */
   /*&jp
   ¤È encoding ¤µ¤ì¤ë.
   */
   //&C
   /*&jp
   ¤³¤ÎÆÃÊÌ¤Ê CMO tag {\tt CMO\_ATTRIBUTE\_LIST} °Ê³°¤Ï,
   XML ɽ¸½¤Ç¤Ï XML ¤Î¥¿¥°¤È¤·¤ÆÍý²ò¤µ¤ì¤ë.
   */
   /*&eg
   All tags except this special CMO tag {\tt CMO\_ATTRIBUTE\_LIST}
   are XML tags in the CMO/XML expression.
   */
   /*&jp
   CMO/XML ¤Ç {\it comment}, {\it for} ¤È̾Á°¤¬¤Ä¤¤¤¿
   attributes ¤Ï CMO binary expression ¤Ë¤Ï¥¨¥ó¥³¡¼¥É¤µ¤ì¤Ê¤¤.
   */
   /*&eg
   CMO/XML attributes such as {\it comment}, {\it for}
   are not encoded in the CMO binary expression.
   */

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.7

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>