(5/5)

### Calculate the area of a triangle PRINT  "This program calculates " PRINTLN "the area of a triangle" PRINT "ENTER BASE:

INSTRUCTIONS TO CANDIDATES

Q. 1 We are going to combine some parts of Lab 3 with Lab

1. Create a new project called Lab5 in Netbeans, Eclipse, etc
2. In ANTLRWorks, open both the expr.g and Lab4.grammars
3. Copy the expr rule and all its dependent rules to Lab4.g. Put them just below the rules for PRINT and PRINTLN
4. Copy the @members from expr.g to Lab4.g. Copy the import for HashMap to Lab5
5. Set Lab4 grammar preferences to output to the Lab5 directory
6. Generate the modified Lab4 grammar.
7. Back in your IDE (Netbeans, etc) add the imports and code to main from Lab4
8. Create an input file with these statements:

PRINTLN "We CAN NOW DO EXPRESSION EVALUATION"

PRINTLN 2*2

PRINTLN 4+5*3

PRINT "20/4="

PRINTLN 20/4

1. Run the program in your IDE. Should get everything up to PRINTLN 20/4
2. Go back to ANTLRWorks. Carefully examine the rule for ‘*’. Create a similar rule for /. Look at how the rule expr is structured to understand how to change the multexpr rule
3. Generate the grammar. Return to your IDE. Run the program. It should now do the division operation
4. Submit your modified Lab4 grammar to BB dropbox for Lab5

Q. 2 In Lab 5 we added expression evaluation but didn't do any variables. Today we are adding the "LET" statement rule to our grammar. LET is essentially an assignment statement similar to that of BASIC. Sample LET statements:

1. LET A = 1
2. LET B = A * 8
3. LET C = A*B + B/2 - (A+3)

Use the same project from Lab 5 and just add to the ANTLR grammar the rules or edit the rules as needed. Your SIL interpreter should be able to run this program after the changes:

LET A = 4 LET B = 5

LET C = A * B + 7 PRINT A

PRINT " * " PRINT B PRINT " + 7 = " PRINTLN C

which makes this output : 4 * 5 + 7 = 27

Submit the grammar to BB Dropbox Lab 6

Q. 3 In this lab we will add two commands to our language (called Simple Interpreted Language (SIL)): INTEGER and INPUT

The syntax of INTEGER is INTEGER ID [,ID]*

At least one, and possibly (somewhat smaller than infinite) any number more, variables are defined by this statement. IDs must be defined before use or an error is raised “Undefined ID”. Variables must be defined in the INTEGER statement. IDs may not be repeated. If an ID is repeated raise an error “Error: ID (its actual name) already defined”. IDs are stored in the symbol table and initialized to 0. This rule makes SIL an explicit declaration language.

The syntax of INPUT is INPUT ID [,ID]*

At least one, and possibly (somewhat smaller than infinite) any number more, variables are read from the keyboard by this statement. IDs must be defined before use or an error is raised “Undefined ID”. Variables must have been defined in the INTEGER statement. When a value is

obtained for a variable, search the symbol table for the ID and if found store the value with the ID.

This is the ANTLR grammar rules needed for INTEGER:

integer :

'INTEGER' idlist;

idlist : idname (',' idname)*;

idname : ID {if(symtab.containsKey(\$ID.text))

System.out.println("Error: "+\$ID.text+

else

symtab.put(\$ID.text, 0); };

The ANTLR rules for INPUT are structured identically, but of course the actions are different. I used a “Scanner” as defined in import java.util.Scanner; A Scanner is a simple IO stream that can parse int, double, etc.

Sample program 1

PRINTLN "Calculate Payroll - Double Pay Overtime" PRINT "Enter rate of pay:"

INTEGER rate, hours, overtime_hours, netpay INPUT rate

PRINT "Enter hours up to 40:" INPUT hours

PRINT "Enter overtime hours:" INPUT overtime_hours

LET netpay = rate * hours + rate * overtime_hours * 2 PRINT "Your net pay = "

PRINTLN netpay

Sample program 2

/Calculate the area of a triangle PRINT  "This program calculates " PRINTLN "the area of a triangle" PRINT "ENTER BASE:"

INTEGER BASE, HEIGHT, AREA INPUT BASE

PRINT "ENTER HEIGHT:" INPUT HEIGHT

LET AREA = (BASE * HEIGHT) / 2 PRINT "AREA = "

PRINTLN AREA

Sample program 3

//Multiple inputs on a single INPUT

PRINT “Enter A, B, and C:”

INTEGER A,B,C,D INPUT A, B, C

PRINT “B*B – 4*A*C =” LET D = B*B-4*A*C PRINTLN D

(5/5)

## Related Questions

##### Introgramming & Unix Fall 2018, CRN 44882, Oakland University Homework Assignment 6 - Using Arrays and Functions in C

DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma

##### The standard path finding involves finding the (shortest) path from an origin to a destination, typically on a map. This is an

Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t

##### Develop a program to emulate a purchase transaction at a retail store. This program will have two classes, a LineItem class and a Transaction class. The LineItem class will represent an individual

Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th

##### SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of Sea Ports. Here are the classes and their instance variables we wish to define:

1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of

##### Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of Sea Ports. Here are the classes and their instance variables we wish to define:

1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of

### Ask This Assignment To Be Done By Our ExpertsGet A+ Grade Solution Guaranteed ##### joyComputer science
(4/5)   