MathML has a classification3.2which categorises elements according to the number of arguments they accept and the types of these arguments. This classification can be summarised for our purpose into the following:
This classification is not explicitly stated in the OpenMath standard but can also be used since OpenMath symbols fit well into these categories. By gathering OpenMath and MathML symbols into these defined groups according to their syntax, it is possible to define specific translating procedures which deal with all symbols in one group in the same way.
For instance one procedure could parse through any unary function by reading in the symbol and then the one argument. Printing out unary functions would be done by one procedure which would output the symbol in MathML or OpenMath followed by that one argument.
The advantages of this classification are that it greatly simplifies the translation. Parsing and generation of all symbols would then be the task of a few generic procedures. However, symbols contained in the operators group require more attention, since they have different ways of reading in arguments. Specific procedures need to be implemented for such cases. We will discuss these in more detail later.