Build a compiler for Jack - a modern, object-based, Java-like language. The compiler construction spans two projects: 10 (Syntax Analysis) and 11 (Code Generation). In this project, we build a syntax analyzer that parses programs according to the Jack grammar, producing an XML file that reflects the program's structure.
main.txt
// This file is part of the materials accompanying the book
// "The Elements of Computing Systems" by Nisan and Schocken,
// MIT Press. Book site: www.idc.ac.il/tecs
// File name: projects/10/ArrayTest/Main.jack
/** Computes the average of a sequence of integers. */
class Main {
function void main() {
var Array a;
var int length;
var int i, sum;
let length = Keyboard.readInt("HOW MANY NUMBERS? ");
let a = Array.new(length);
let i = 0;
while (i < length) {
let a[i] = Keyboard.readInt("ENTER THE NEXT NUMBER: ");
let i = i + 1;
}
let i = 0;
let sum = 0;
while (i < length) {
let sum = sum + a[i];
let i = i + 1;
}
do Output.printString("THE AVERAGE IS: ");
do Output.printInt(sum / length);
do Output.println();
return;
}
}
mainT
-
class Main {
function void main() {
var Array a;
var int length;
var int i, sum;
let length = Keyboard.readInt("HOW MANY NUMBERS?");
let a = Array.new(length);
let i = 0;
while (i < length) {
let a[i] = Keyboard.readInt("ENTER THE NEXT NUMBER:");
let i = i + 1;
}
let i = 0;
let sum = 0;
while (i < length) {
let sum = sum + a[i];
let i = i + 1;
}
do Output.printString("THE AVERAGE IS:");
do Output.printInt(sum / length);
do Output.println();
return;
}
}