A grammar for the OpenMath objects
according to the draft specification of SD
 
 
integer
sym_name
cd_name
fpdec
fphex
utf7
base64
 
 

om_var                    =           '<OMV name=" ' sym_name ' ">' 
                            .

om_sym                  =            '<OMS cd="' cd_name '" name="' sym_name '">'
                                       .

om_float                  =           '<OMF  dec="' fpdec '">'
                                        |           '<OMF  hex="' fphex '">'
                                        .

om_string                =           '<OMSTR>' utf7 '</OMSTR>'
                                        .

om_byte_array      =           '<OMB>'   base64   '</OMB>'
                                        .
 
 

 basic_obj             =            integer
                                      |            om_sym
                                      |            om_var
                                      |            om_float
                                      |            om_string
                                      |            om_byte_array
                                      .
 

start                     =        '<OMOBJ> '   om_obj   '</OMOBJ>'
 

om_obj                      =         basic_obj
                                        |         '<OMA> '   om_sym     om_obj_seq   '</OMA>'                    %  om_sym or om_obj?
                                        I         '<OME>'    om_sym     om_obj_seq   '</OME>'
                                        |         '<OMATTR>'   om_attr_seq     '</OMATTR>'   om_obj
                                        .
 

om_obj_seq            =          om_obj
                                        |          om_obj   om_obj_seq
                                        .

om_attr                      =          om_sym  om_obj
                                         .

om_attr_seq             =            om_attr
                                          |             om_attr   om_attr_seq
                                          .