version 1.1, 1999/10/29 08:06:42 |
version 1.3, 1999/11/02 19:02:29 |
|
|
## $OpenXM$ |
$OpenXM: OpenXM/src/ox_math/documents/bnf,v 1.2 1999/11/02 06:12:00 ohara Exp $ |
|
|
トークンの集合:: |
トークンの集合:: |
トークンの定義は parse.h にある。 |
トークンは ( ) , \n の4つか、あるいは「大文字で表された文法記号」である。 |
T_ ではじまるマクロがトークンである。 |
「大文字で表された文法記号」の定義は parse.h の TOKEN(...) あるいは T_... |
それ以外のトークンは次の4つ: "(", ")", ",", "\n" |
による。 |
|
|
文法規則:: |
文法規則:: |
省略記法を許すのはフラグが立っているときだけ。 |
省略記法を許すのはフラグが立っているときだけ。 |
the start symbol は line である。 |
開始記号は line である。 |
|
トークンの境界は空白で分けてある。 |
|
-> | {}* は拡張BNFの記号である。 |
|
|
The following BNFs define the grammer of Common Math Objects: |
The following BNFs define the grammer of Common Math Objects: |
|
|
line -> ox '\n' |
line |
| cmo '\n' |
-> ox \n |
| '\n' |
| cmo \n |
|
| \n |
|
|
ox -> '(' T_OX_COMMAND ',' T_SM_COMMAND ')' |
ox |
| '(' T_OX_DATA ',' cmo ')' |
-> ( OX_COMMAND , sm ) |
|
| ( OX_DATA , cmo ) |
|
|
cmo -> '(' cmo_int32 ')' |
sm |
| '(' cmo_string ')' |
-> ( SM_COMMAND ) |
| '(' cmo_list ')' |
|
|
|
cmo_list -> T_CMO_LIST ',' T_INTEGER |
cmo |
| T_CMO_LIST ',' T_INTEGER ',' list_of_cmo /* 空リストも許す. */ |
-> ( cmo_null ) |
|
| ( cmo_int32 ) |
|
| ( cmo_string ) |
|
| ( cmo_mathcap ) |
|
| ( cmo_list ) |
|
| ( cmo_zero ) |
|
| ( cmo_zz ) |
|
| ( cmo_monomial32 ) |
|
| ( cmo_dms_generic ) |
|
| ( cmo_ring_by_name ) |
|
| ( cmo_distributed_polynomial ) |
|
| ( cmo_error2 ) |
|
|
list_of_cmo -> cmo ',' list_of_cmo |
cmo_null |
| /* 空リストも許す. */ |
-> CMO_NULL |
|
|
cmo_null -> T_CMO_NULL |
cmo_int32 |
|
-> CMO_INT32 , INTEGER |
|
|
cmo_int32 -> T_CMO_INT32 ',' T_INTEGER |
cmo_string |
cmo_string -> T_CMO_STRING ',' T_INTEGER ',' T_STRING |
-> CMO_STRING , INTEGER , STRING |
| T_CMO_STRING ',' T_STRING /* 省略記法 */ |
| CMO_STRING , STRING |
|
# 省略記法 |
|
|
cmo_zz -> T_CMO_ZZ ',' T_INTEGER ',' list_of_int |
cmo_mathcap |
| T_CMO_ZZ ',' T_INTEGER /* 省略記法 */ |
-> CMO_MATHCAP , cmo |
|
|
list_of_int -> T_INTEGER ',' list_of_int |
cmo_list |
| T_INTEGER |
-> CMO_LIST , INTEGER { , cmo }* |
|
| CMO_LIST { , cmo }* |
|
# 省略記法 |
|
|
|
cmo_monomial32 |
|
-> CMO_MONOMIAL32 , INTEGER { , INTEGER }* , coef |
|
|
|
cmo_zz |
|
-> CMO_ZZ , INTEGER { , INTEGER }* |
|
| CMO_ZZ , INTEGER |
|
# 省略記法 |
|
|
|
cmo_zero |
|
-> CMO_ZERO |
|
|
|
cmo_dms_generic |
|
-> CMO_DMS_GENERIC |
|
|
|
cmo_ring_by_name |
|
-> CMO_RING_BY_NAME , ( cmo_string ) |
|
|
|
cmo_distributed_polynomial |
|
-> CMO_DISTRIBUTED_POLYNOMIAL , INTEGER , ringdefinition { , monomial }* |
|
# リストの各要素は monomial である. 空リストの場合もOK? |
|
| CMO_DISTRIBUTED_POLYNOMIAL , ringdefinition { , monomial }* |
|
# 省略記法 |
|
|
|
cmo_error2 |
|
-> CMO_ERROR2 , cmo |
|
|
|
monomial |
|
-> ( cmo_zero ) |
|
| ( cmo_monomial32 ) |
|
|
|
ringdefinition |
|
-> ( cmo_dms_generic ) |
|
| ( cmo_ring_by_name ) |
|
|
|
coef |
|
-> ( cmo_zz ) |
|
| ( cmo_int32 ) |
|
|