Parsing polynomials with F# and FParsec
Parsing polynomials with F# and FParsec
Parsing a polynomial expression is a simple but interesting example of parsing. We need to handle operator precedence and associativity, for example *
has a higher precedence than +
and the exponentiation is right associative x^y^z=x^(y^z)
while subtraction is left associative x-y-z=(x-y)-z
. Moreover a straighforward definition of the grammar is left recursive and a recursive descent parser does not allow to parse such grammar. We need to arrange our grammar in order to avoid the left recursion.