version 1.2, 2000/01/23 05:28:33 |
version 1.7, 2000/09/09 21:59:13 |
|
|
%% $OpenXM: OpenXM/doc/OpenXM-specs/formal-expression.tex,v 1.1.1.1 2000/01/20 08:52:46 noro Exp $ |
%% $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 |
|
|
% (¥¿¥°¤Î¾ÊάµË¡¤¬¤Û¤·¤¤.) |
% (¥¿¥°¤Î¾ÊάµË¡¤¬¤Û¤·¤¤.) |
*/ |
*/ |
/*&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 80 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 88 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 ``---''. |
|
|
32 bit integer $n$ ¤òɽ¸½¤·¤Æ¤¤¤ë¤ó¤À¤È¤¤¤¦¤³¤È¤¬, 1 ¹Ô¤Ç¤ï¤«¤ë. |
32 bit integer $n$ ¤òɽ¸½¤·¤Æ¤¤¤ë¤ó¤À¤È¤¤¤¦¤³¤È¤¬, 1 ¹Ô¤Ç¤ï¤«¤ë. |
*/ |
*/ |
/*&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 164 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/Basic0 requires nothing'' |
``Group CMObject/Primitive requires nothing'' |
means that there is no super group to define CMO's in the group Basic0. |
means that there is no super group to define CMO's in the group Primitive. |
``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 227 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 272 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 323 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. |
|
*/ |