Developing an Interpreter to Math Expressions We’ll start slowly, only dealing with the four binary basic operations: addition, subtraction, multiplication and division. Even though we defined a concise set of operations, I need to be even more humble in order to achieve our goals, and that’s why I’ll choose one of these operations to get started with the fun.

How about we begin with the addition operation? Sounds easy good to me. Doing that will lead the way to the remainder operations (I mean subtraction, multiplication and division operations). We can represent our math expression with a limited context-free grammar like this:

MathExp -> VariableExp | Constant | AddExp | '(' MathExp ')'
AddExp -> MathExp + MathExp
VariableExp -> a | b | ... | z
Constant -> 0 | 1 | ... | 9

Let’s write a test first (using JUnit 4): if an ordinary ‘a + b’ expression with ‘a = 2’ and ‘b = 4’ must be solved, one could think in the following API (specially if you read about the GoF Interpreter pattern):

Pteco – A Prototype of Modeling Tool

Pteco is a software intended for mathematical modeling. Anyone can use it or collaborate with its development.

The mathematical modeling objective is to understand, and even to foresee, system behaviors, being used in a broad spectrum of human knowledge areas, like physics, engineering, chemistry, biology, meteorology, administration, economy, and others.

This project is divided in two parts:

• the core system, responsible for the execution of the mathematical algorithms;
• the GUI (graphical user interface), that deals with data input from diverse sources and the output of modeling results.

This separation is important to allow the core system to be reused in others softwares, and to make possible the separation of interests: some people enjoy GUI development, while others prefer to research mathematical algorithms.

Currently, Pteco can do only linear and non-linear regression. Your development began at FATEC – JD.

An Example of Use

A company could use Pteco to try to find some relation between a product’s price and its market-share. The relationship between this two variables could indicate that sales increase when the product’s price decreases and vice-versa, providing valuable information to define the company’s marketing strategy.

The Future…

We plan to implement more algorithms for mathematical modeling in the core system, like Multiple Linear Regression, non-Linear Regression, Logistic Regression, Diffuse Logic, among others.

The GUI will provide charts, capacity to import/export data to spreadsheet softwares and it will count on more complete reports about the constructed mathematical models.

Involving Yourself

You can access the source code and start coding.