I have started to write a math parser usable by Mozilla-based applications. In particular, this could help to add math editing features to Mozilla's editors (BlueGriffon™, Komposer or Thunderbird etc). Of course, it will also be usable by Mozilla's extensions, such that Firemath. I will probably give more details in subsequent blog posts but the main ideas are given in that one.

First, the parser is usable through classical XPCOM calls. With the current interface, we get something like (in Javascript):

mathparser =
  Components.classes['@mozilla.org/editor/mathparser;1'].
  createInstance(Components.interfaces.nsIMathParser);

node = mathparser.parse(document, input,
  Components.interfaces.nsIMathParser.MATHPARSER_MODE_SIMPLE);

where input is a string representing a mathematical formula and node is the output MathML tree. Note the third parameter of the parse function, which allows to choose a parser mode. For the moment, I have only written one for very basic formulas. However, I plan to add at least a LaTeX-like mode.

As an example, if we provide the following input strings "{∑_{i=1}^{+∞} 1/n^2} = π^2/6" and "{∫_0^{+∞} {ⅆx}/{4(x+1)√x}} = π/4" the parser outputs:

i = 1 + 1 n 2 = π 2 6 0 + x 4 ( x + 1 ) x = π 4

Note that the core engine is produced using the famous parser generator Bison and hence it will be easy to adapt the work of itex2MML. The lexical analyzer is written directly and we get a very nice feature: unicode support! If people are interested, I have some patches applyable to mozilla-central...