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
CS 340 Milestone One Guidelines and Rubric Overview: For this assignment, you will implement the fundamental operations of create, read, update,
Retail Transaction Programming Project Project Requirements: Develop a program to emulate a purchase transaction at a retail store. This
7COM1028 Secure Systems Programming Referral Coursework: Secure
Create a GUI program that:Accepts the following from a user:Item NameItem QuantityItem PriceAllows the user to create a file to store the sales receip
CS 340 Final Project Guidelines and Rubric Overview The final project will encompass developing a web service using a software stack and impleme