## $OpenXM: OpenXM/src/ox_math/documents/bnf,v 1.2 1999/11/02 06:12:00 ohara Exp $ トークンの集合:: トークンは "(", ")", ",", "\n" の4つか、あるいはTOKEN(...) である。 TOKEN(...)の定義は parse.h にある。 文法規則:: 省略記法を許すのはフラグが立っているときだけ。 開始記号は line である。 The following BNFs define the grammer of Common Math Objects: line -> ox '\n' | cmo '\n' | '\n' ox -> '(' TOKEN(OX_COMMAND) ',' sm ')' | '(' TOKEN(OX_DATA) ',' cmo ')' sm -> '(' TOKEN(SM_COMMAND) ')' cmo -> '(' cmo_int32 ')' | '(' cmo_string ')' | '(' cmo_list ')' cmo_null -> TOKEN(CMO_NULL) cmo_int32 -> TOKEN(CMO_INT32 ) ',' T_INTEGER cmo_string -> TOKEN(CMO_STRING) ',' T_INTEGER ',' T_STRING | TOKEN(CMO_STRING) ',' T_STRING /* 省略記法 */ cmo_mathcap -> TOKEN(CMO_MATHCAP) ',' cmo cmo_list -> TOKEN(CMO_LIST) ',' T_INTEGER /* 空リスト */ | TOKEN(CMO_LIST) ',' T_INTEGER ',' list_of_cmo | list_of_cmo /* 省略記法 */ list_of_cmo -> cmo ',' list_of_cmo | /* 空リストも許す. */ cmo_monomial32 -> TOKEN(CMO_MONOMIAL32) ',' T_INTEGER ',' list_of_int ',' cmo cmo_zz -> TOKEN(CMO_ZZ) ',' T_INTEGER ',' list_of_int | TOKEN(CMO_ZZ) ',' T_INTEGER /* 省略記法 */ list_of_int -> T_INTEGER ',' list_of_int | T_INTEGER cmo_zero -> TOKEN(CMO_ZERO) cmo_dms_generic -> TOKEN(CMO_DMS_GENERIC) cmo_ring_by_name -> TOKEN(CMO_MATHCAP) ',' cmo /* ただし cmo_string でなければならない */ cmo_error2 -> TOKEN(CMO_ERROR2) ',' cmo