9 Dec 1995 20:01:01 -0500

Related articles |
---|

Q: sample code for parsing algebraic expressions? zender@ncar.ucar.edu (Charlie Zender) (1995-12-09) |

From: | Charlie Zender <zender@ncar.ucar.edu> |

Newsgroups: | comp.programming,comp.compilers |

Date: | 9 Dec 1995 20:01:01 -0500 |

Organization: | National Center for Atmospheric Research |

Keywords: | parse, question, comment |

hi,

I need to parse algebraic expressions for a data processor i'm writing.

that is, I need a function to take forward algebraic expressions like

x^2+3*(x+2) and return a parsed listed of (binary,unary) operator

expressions in the correct order. The algebraic expressions will be

known at run time, so that the code I need does not have to be able

to work like a calculator, and take expressions in real time from the

user.

Here's what I'm hoping the function will do

function results in quotes,

input to function->"x^2+3*x+9"

output from function->

"x,2 binary exponentiate" (goes on stack)

"x,3 binary multiply" (goes on stack)

"binary add" (adds last two number on stack together, places result on stack)

"9 binary add" (add 9 to last number on stack)

Clearly every compiler that knows math has a parser like this in it

somewhere, but I don't know what's most appropriate for my uses.

Does anyone have recommendations on how to do this? Sample code? Books?

Articles? Should I use yacc/bison? Should I write it in C?

thanks in advance (please email as well as post any responses)

charlie

--

Charlie Zender Voice, FAX: (303) 497-1612, 497-1324

NCAR/CGD/CMS E-mail: zender@ncar.ucar.edu

P.O. Box 3000 URL: http://www.cgd.ucar.edu/cms/zender

Boulder CO 80307-3000 PGP: finger -l zender@heinlein.cgd.ucar.edu

[Our book "lex&yacc, 2nd ed" has the usual calculator example, but someone

might have canned infix to RPN code. -John]

--

Post a followup to this message

Return to the
comp.compilers page.

Search the
comp.compilers archives again.