All MathML elements are stored in the tables constructors!*, relations!* and functions!*. These tables determine what functions must be called for each MathML element encountered and what the equivalent intermediate representation operator is.
When a MathML object is encountered, the first element will inform us of how the expression is constructed. We look this element up in the constructors!* table to call the proper function which deals with objects constructed in this manner.
If the expression constructor is the <reln>
element then the relations!* table is used. This table will determine which function to
call as well as containing the equivalent intermediate representation operator. The functions!* table is the same as the relations!*
table only that it contains all operators appearing within <apply>
...</apply>
instead.
These tables together will inform the translator of how to deal with all MathML elements
New MathML elements can be added to these tables to modify the translator's scope. An existing procedure can be related to the new element, or a new procedure can be implemented and added to the table next to the element's entry. An equivalent intermediate operator must also be defined here.