Online Eiffel Documentation
EiffelStudio

Eiffel polynomial parser

In the directory $ISE_EIFFEL/examples/parse you will find a system that implements a processor for a grammar describing a simple language for expressin polynomials. A typical document in this language is the line

x;y: x * (y + 8 - (2 * x))
The beginning of the line, separated from the rest by a colon, is the list of variables used in the polynomial, separated by semicolons. The rest of the line is the expression defining the polynomial.The grammar can be described with the following grammar:
LINE      = VARIABLES ":" SUM 
VARIABLES = VAR .. ";" 
SUM       = DIFF .. "+" 
DIFF      = PRODUCT .. "-" 
PRODUCT   = TERM .. "*" 
TERM      = SIMPLE_VAR | INT_CONSTANT | NESTED
NESTED    = "(" SUM ")" 
This grammar assumes a terminal VAR, which must be defined as a token type in the lexical grammar. The other terminals are keywords, shown as strings appearing in the double quotes, for example "+".

When compiling the example, the executable process(.exe) is created. When executing the program, it will prompt for the name of a file with a polynomial description, reads a polynomial from the given file, prompts for integer values of the variables, and evaluates the polynomial.