$OpenXM: OpenXM/src/ox_math/documents/bnf,v 1.3 1999/11/02 19:02:29 ohara Exp $
トークンの集合::
トークンは ( ) , \n の4つか、あるいは「大文字で表された文法記号」である。
「大文字で表された文法記号」の定義は parse.h の TOKEN(...) あるいは T_...
による。
文法規則::
省略記法を許すのはフラグが立っているときだけ。
開始記号は line である。
トークンの境界は空白で分けてある。
-> | {}* は拡張BNFの記号である。
The following BNFs define the grammer of Common Math Objects:
line
-> ox \n
| cmo \n
| \n
ox
-> ( OX_COMMAND , sm )
| ( OX_DATA , cmo )
sm
-> ( SM_COMMAND )
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 )
cmo_null
-> CMO_NULL
cmo_int32
-> CMO_INT32 , INTEGER
cmo_string
-> CMO_STRING , INTEGER , STRING
| CMO_STRING , STRING
# 省略記法
cmo_mathcap
-> CMO_MATHCAP , cmo
cmo_list
-> 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 )