$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 )