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
Return to the
comp.compilers page.
Search the
comp.compilers archives again.