The idea to handle mix-fix operators is to

  - parse applications as lists of expressions. For instance:

      1 + 2 * 3 will be parsed as [1,+,2,*,3]

    We then generate a parser for the operators in scope and try to parse the
    application. In this example the grammar would look something like this:

	e0 ::= e0 + e1 | e1
	e1 ::= e1 * e2 | e2
	e2 ::= other