Reference no: EM13308334
Project involves completing and extending the C++ program that evaluates statements of an expression language contained in the module 3 case study.
The statements of that expression language consist of an arithmetic expression followed by a list of assignments. Assignments are separated from the expression and each other by commas. A semicolon terminates the expression. The arithmetic expressions are fully parenthesized infix expressions containing integer literals and variables. The valid arithmetic operators are +, -, *, /. Tokens can be separated by any number of spaces. Variable names begin with an alphabetic character, followed by any number of alphanumeric characters. Variable names are case sensitive. This syntax is described by BNF and regular expressions in the case study.
The program reads in the arithmetic expression and encodes the expression as a binary tree. After the expression has been read in, the variable assignments are read in and the variables and their values of the variables are placed into the symbol table. Finally the expression is evaluated recursively.
Your first task is to complete the program provided by providing the three missing classes, Minus, Times and Divide.
Next, you should extend the program so that it supports relational and logical expression operators as defined by the following extension to the grammar:
<exp> -> '(' <operand><op><operand> ')' | '(' <operand> '!' ')'
<op> -> '+' | '-' | '*' | '/' | '>' | '<' | '=' | '&' | '|'
Note that there are a few differences in the use of these operators compared to their customary use in the C family of languages. There differences are:
- The logical operators use single symbols not double, for example the and operator is & not &&
- The negation operator ! is a postfix operator, not a prefix one
- There are only three relational operators not the usual six and the operator for equality is = not ==
Like C and C++, any arithmetic expression can be interpreted as a logical value, taking 0 as false and anything else as true.
Your final task is to make the following two modifications to the program:
- The program should accept input from a file, allowing for multiple expressions arranged one per line. Some hints for accomplishing this transformation will be provided in the conference
- All results should be changed from double to int. In particular the evaluate function should return an int.
Attachment:- CS_Question.zip
Management deals with these two sometimes competing goals
: The Theory of the Firm document, the Friedman article, and the information in chapter 4 argue that the main goal of a firm in a market economy is to maximize profit (shareholder wealth)
|
Obtain the force on the car
: A laserpointer has a beam intensity of 37 W/m2 and a beam radius of 3.1 mm. what is the force on the car
|
Identify how business ethics social responsibility
: Identify how business ethics, social responsibility, and sustainability are interrelated.
|
Determine drop structure is to be installed as grade control
: To protect the channel from erosion, the normal flow velocity for the design discharge has to be reduced to 7.0 fps or below, and the flow Froude number must be reduced to 0.80 or below.
|
Evaluate statements of an expression language
: Project involves completing and extending the C++ program that evaluates statements of an expression language contained in the module 3 case study.
|
Explain the average length of stay per room type
: What is the average length of stay per room type. What is the average number of visitor per room type. What is the base income per room (i.e., length of visit multiplied by the daily rate) during a specified period of time
|
Modify the test scores program from the above debug
: Also print a report of the each student's test grades, average and final grade as a table, and then print the averages of each Test and overall Test Average, as well as highest Test Grade of all Tests and the student with the highest class grade.
|
What is the planes new velocity
: A plane is flying southeast at 200 km/h. Suddenly, it encounters wind heading 40 degrees north of east at 35 km/h. What is the planes new velocity
|
What is the maximum amount of cargo that can be carried
: A small truck is to be driven down a 4% grade at 70mi/hr. The coefficient of road adhesion is 0.95, and it is known that the baking efficiency is 80% when the truck is empty and decreases by one percentage point for every 100 lb of cargo added.
|