2 Nov 1999 00:33:32 -0500

Related articles |
---|

Equation definintion sriana@my-deja.com (1999-10-31) |

Re: Equation definintion adonovan@imerge.co.uk (Alan Donovan) (1999-11-02) |

From: | Alan Donovan <adonovan@imerge.co.uk> |

Newsgroups: | comp.compilers |

Date: | 2 Nov 1999 00:33:32 -0500 |

Organization: | Imerge Ltd. |

References: | 99-10-193 |

Keywords: | parse |

sriana@my-deja.com wrote:

*>*

*> Does anyone have the entire definition of an equation in grammar form.*

*> I have a short one that allows + * and ( ) but I need to also allow - /*

*> and exponentiation. I really don't want to sit down and figure the*

*> entire thing out if its out there somewhere, thanks!*

Presuming you mean expression grammar, it's really very simple. Let's

assume for now you only have one type (equivalent to "double" in C). Now

you already have:

E -> ( E )

| E + E

| E * E

(and you will need to set the precedences of the operators

appropriately)

Well, just keep on adding:

...

| E - E

| E * E

| E ^ E

;

You might also want to allow the unary minus operator (e.g. 2 + -1) and

some more arcane operators such as modulo (although you may need to

introduce a type system to distinguish integers from reals).

If you need an algebraic *equation* syntax, you will need to introduce

variable identifiers into the grammar (with E -> <name>) and also make a

new start symbol Q -> E = E. But equation solving is much harder than

equation parsing!

alan

------------------------------------------------------------------------

Alan Donovan adonovan@imerge.co.uk http://www.imerge.co.uk

Imerge Ltd. +44 1223 875265

Post a followup to this message

Return to the
comp.compilers page.

Search the
comp.compilers archives again.