January 1, 1995

I developed this small ANSI C program at the university. It is a simple formula parser, useful for many situations, like an intelligent input in dialog boxes.

The gag in this parser is the possibility to compile formulas into p-code to get a major performance improvement while calculating. This is useful for formula plotters, etc., that uses the same formula only with different values.

In Parse.h some configurations can be done:

- “Dbl” is a typedef for the type of the calculation of the parser. Normally it should be “float” or “double”. “TERM_COMPILER” activates the p-code compiler. If you use the formula only once, than you should disable it, otherwise enable it.
- buildTerm is called to compile an ASCII expression into p-code. If the “TERM_COMPILER” is not active, this routine does nothing.
- “calcTerm”, “calcTerm1”, “calcTerm2”, “calcTerm3” calculates the current expression with no, 1, 2 or 3 parameters. The parameters are put into the variables “X”, “Y” and “Z”. Undefined variables have the value “HUGE_VAL”.

Besides the trivial operations (“+”, “-”, “*“, “/”, “^”, with brackets) the parser also know the following functions:

Name | Description |
---|---|

“PI” | the value PI (3.1415926…) |

“E” | the value e (2.7182818) |

“X”, “Y”, “Z” | the values X, Y, Z |

“acos”, “arccos” | the function cos-1(a) |

“asin”, “arcsin” | the function sin-1(a) |

“atan”, “arctan” | the function tan-1(a) |

“atan2”, “arctan2” | the function tan-1(a,b) |

“ceil” | the function ceil(a) |

“cos” | the function cos(a) |

“cosh” | the function cosh(a) |

“exp” | the function exp(a) |

“floor” | the function floor(a) |

“fmod” | the function fmod(a) |

“log” | the function log(a) |

“log10” | the function log10(a) |

“pow” | the function pow(a,b) |

“sin” | the function sin(a) |

“sinh” | the function sinh(a) |

“sqrt” | the function sqrt(a) |

“tan” | the function tan(a) |

“tanh” | the function tanh(a) |