Q. 1 We are going to combine some parts of Lab 3 with Lab
PRINTLN "We CAN NOW DO EXPRESSION EVALUATION"
PRINTLN 2*2
PRINTLN 4+5*3
PRINT "20/4="
PRINTLN 20/4
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:
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+
" already defined");
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
DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma
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. Thisprogram will have two classes, a LineItem class and a Transaction class. Th
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
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