diff --git a/docs/PA3.pdf b/docs/PA3.pdf new file mode 100644 index 0000000..ad6b2ad Binary files /dev/null and b/docs/PA3.pdf differ diff --git a/miniJava/src/miniJava/SyntacticAnalyzer/Parser.java b/miniJava/src/miniJava/SyntacticAnalyzer/Parser.java index ea433a5..9808272 100644 --- a/miniJava/src/miniJava/SyntacticAnalyzer/Parser.java +++ b/miniJava/src/miniJava/SyntacticAnalyzer/Parser.java @@ -500,10 +500,11 @@ public class Parser { * @throws IOException */ private Expression parseExpression() throws IOException { + Expression e = parseCExpression(); while(peek(1).spelling.equals("||")) { Operator o = new Operator(accept(Token.TYPE.BINOP), null); - e = new BinaryExpr(o, e, parseExpression(), null); + e = new BinaryExpr(o, e, parseCExpression(), null); } return e; @@ -515,10 +516,11 @@ public class Parser { * @throws IOException */ private Expression parseCExpression() throws IOException { + Expression e = parseEExpression(); while(peek(1).spelling.equals("&&")) { Operator o = new Operator(accept(Token.TYPE.BINOP), null); - e = new BinaryExpr(o, e, parseCExpression(), null); + e = new BinaryExpr(o, e, parseEExpression(), null); } return e; @@ -530,10 +532,11 @@ public class Parser { * @throws IOException */ private Expression parseEExpression() throws IOException { + Expression e = parseRExpression(); while(peek(1).spelling.equals("==") || peek(1).spelling.equals("!=")) { Operator o = new Operator(accept(Token.TYPE.BINOP), null); - e = new BinaryExpr(o, e, parseEExpression(), null); + e = new BinaryExpr(o, e, parseRExpression(), null); } return e; @@ -545,11 +548,12 @@ public class Parser { * @throws IOException */ private Expression parseRExpression() throws IOException { + Expression e = parseAExpression(); while(peek(1).spelling.equals("<") || peek(1).spelling.equals("<=") || peek(1).spelling.equals(">") || peek(1).spelling.equals(">=")) { Operator o = new Operator(accept(Token.TYPE.BINOP), null); - e = new BinaryExpr(o, e, parseRExpression(), null); + e = new BinaryExpr(o, e, parseAExpression(), null); } return e; @@ -561,10 +565,11 @@ public class Parser { * @throws IOException */ private Expression parseAExpression() throws IOException { + Expression e = parseMExpression(); while(peek(1).spelling.equals("+") || peek(1).spelling.equals("-")) { Operator o = new Operator(accept(Token.TYPE.BINOP), null); - e = new BinaryExpr(o, e, parseAExpression(), null); + e = new BinaryExpr(o, e, parseMExpression(), null); } return e; @@ -576,10 +581,11 @@ public class Parser { * @throws IOException */ private Expression parseMExpression() throws IOException { + Expression e = parseSingleExpression(); while(peek(1).spelling.equals("*") || peek(1).spelling.equals("/")) { Operator o = new Operator(accept(Token.TYPE.BINOP), null); - e = new BinaryExpr(o, e, parseMExpression(), null); + e = new BinaryExpr(o, e, parseSingleExpression(), null); } return e; diff --git a/miniJava/src/tester/Checkpoint2.java b/miniJava/src/tester/Checkpoint2.java new file mode 100644 index 0000000..d9d7711 --- /dev/null +++ b/miniJava/src/tester/Checkpoint2.java @@ -0,0 +1,98 @@ +package tester; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.FileInputStream; +import java.util.Scanner; + +/* Automated regression tester for Checkpoint 2 tests + * Created by Max Beckman-Harned + * Put your tests in "tests/pa2_tests" folder in your Eclipse workspace directory + * If you preface your error messages / exceptions with ERROR or *** then they will be displayed if they appear during processing + */ + +public class Checkpoint2 { + + private static class ReturnInfo { + int returnCode; + String ast; + public ReturnInfo(int _returnCode, String _ast) { + returnCode = _returnCode; + ast = _ast; + } + } + + public static void main(String[] args) throws IOException, InterruptedException { + File testDir = new File(System.getProperty("java.class.path") + + "/../tests/pa2_tests"); + int failures = 0; + for (File x : testDir.listFiles()) { + if (x.getName().endsWith("out") || x.getName().startsWith(".")) + continue; + ReturnInfo info = runTest(x); + int returnCode = info.returnCode; + String ast = info.ast; + if (x.getName().indexOf("pass") != -1) { + if (returnCode == 0) { + String actualAST = getAST(new FileInputStream(x.getPath() + ".out")); + if (actualAST.equals(ast)) + System.out.println(x.getName() + " parsed successfully and has a correct AST!"); + else { + System.err.println(x.getName() + " parsed successfully but has an incorrect AST!"); + failures++; + } + } + else { + failures++; + System.err.println(x.getName() + + " failed to be parsed!"); + } + } else { + if (returnCode == 4) + System.out.println(x.getName() + " failed successfully!"); + else { + System.err.println(x.getName() + " did not fail properly!"); + failures++; + } + } + } + System.out.println(failures + " failures in all."); + } + + private static ReturnInfo runTest(File x) throws IOException, InterruptedException { + ProcessBuilder pb = new ProcessBuilder("java", "miniJava.Compiler", x.getPath()).directory(new File(System.getProperty("java.class.path"))); + pb.redirectErrorStream(true); + Process p = pb.start(); + + String ast = getAST(p.getInputStream()); + p.waitFor(); + int exitValue = p.exitValue(); + return new ReturnInfo(exitValue, ast); + } + + + public static String getAST(InputStream stream) { + Scanner scan = new Scanner(stream); + String ast = null; + while (scan.hasNextLine()) { + String line = scan.nextLine(); + if (line.equals("======= AST Display =========================")) { + line = scan.nextLine(); + while(scan.hasNext() && !line.equals("=============================================")) { + ast += line + "\n"; + line = scan.nextLine(); + } + } + if (line.startsWith("*** ")) + System.out.println(line); + if (line.startsWith("ERROR")) { + System.out.println(line); + while(scan.hasNext()) + System.out.println(scan.next()); + } + } + scan.close(); + return ast; + } +} diff --git a/miniJava/test.java b/miniJava/test.java index 9bf40d7..6286286 100644 --- a/miniJava/test.java +++ b/miniJava/test.java @@ -1,10 +1,7 @@ -// Simple PA2 Example -class PA2 { +// PA1 lex binop pass +class id { + void p(){ + int x = 1 + 2 * 3 / 4 > 5 >= 6 < 7 <= 8 != 9 && 0 || 1; + } +} - public boolean c; - private static id[] test; - - public static void main(String[] args) { - int x = -1 || 2 + (8 <= 8) == -6 && (9 > 10) * 3; - } -} \ No newline at end of file diff --git a/miniJava/tests/pa2_tests/fail117.java b/miniJava/tests/pa2_tests/fail117.java new file mode 100644 index 0000000..51c7eaf --- /dev/null +++ b/miniJava/tests/pa2_tests/fail117.java @@ -0,0 +1,2 @@ +// PA1 lex comment fail +class id {} /* unterminated diff --git a/miniJava/tests/pa2_tests/fail119.java b/miniJava/tests/pa2_tests/fail119.java new file mode 100644 index 0000000..9c6137f --- /dev/null +++ b/miniJava/tests/pa2_tests/fail119.java @@ -0,0 +1,2 @@ +// PA1 lex ill char fail +class NonTokens{} # diff --git a/miniJava/tests/pa2_tests/fail125.java b/miniJava/tests/pa2_tests/fail125.java new file mode 100644 index 0000000..935b0ea --- /dev/null +++ b/miniJava/tests/pa2_tests/fail125.java @@ -0,0 +1,7 @@ +// PA1 lex binop fail +class id { + void p(){ + int x = 1 &| 0; + } +} + diff --git a/miniJava/tests/pa2_tests/fail130.java b/miniJava/tests/pa2_tests/fail130.java new file mode 100644 index 0000000..11ded62 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail130.java @@ -0,0 +1,5 @@ +// PA1 lex trailing start char fail +class Almost { + public static void main (String [] args) { + } // nothing follows next slash +} / \ No newline at end of file diff --git a/miniJava/tests/pa2_tests/fail131.java b/miniJava/tests/pa2_tests/fail131.java new file mode 100644 index 0000000..bd14a4f --- /dev/null +++ b/miniJava/tests/pa2_tests/fail131.java @@ -0,0 +1,5 @@ +// PA1 lex comment fail +class IllegalComment { + public static void main (String [] args) { + } // nothing follows final * +}/* **** \ No newline at end of file diff --git a/miniJava/tests/pa2_tests/fail145.java b/miniJava/tests/pa2_tests/fail145.java new file mode 100644 index 0000000..4101c57 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail145.java @@ -0,0 +1,6 @@ +// PA1 parse field decl fail +class id { + public void [] x; +} + + diff --git a/miniJava/tests/pa2_tests/fail146.java b/miniJava/tests/pa2_tests/fail146.java new file mode 100644 index 0000000..827f6a8 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail146.java @@ -0,0 +1,8 @@ +// PA1 parse local decl fail +class id { + void foo() { + Nonesuch x[2] = 3; + } +} + + diff --git a/miniJava/tests/pa2_tests/fail147.java b/miniJava/tests/pa2_tests/fail147.java new file mode 100644 index 0000000..eddf6f3 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail147.java @@ -0,0 +1,8 @@ +// PA1 parse local decl fail +class id { + public void f(){ + Ref [] x(33); + } +} + + diff --git a/miniJava/tests/pa2_tests/fail148.java b/miniJava/tests/pa2_tests/fail148.java new file mode 100644 index 0000000..3089be4 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail148.java @@ -0,0 +1,8 @@ +// PA1 parse local decl fail +class id { + public void f(){ + int x; + } +} + + diff --git a/miniJava/tests/pa2_tests/fail150.java b/miniJava/tests/pa2_tests/fail150.java new file mode 100644 index 0000000..bab8c4a --- /dev/null +++ b/miniJava/tests/pa2_tests/fail150.java @@ -0,0 +1,6 @@ +// PA1 parse local decl fail +class idfail { + public void foo () { + int [] x[3] = null; + } +} diff --git a/miniJava/tests/pa2_tests/fail151.java b/miniJava/tests/pa2_tests/fail151.java new file mode 100644 index 0000000..a4a41e9 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail151.java @@ -0,0 +1,6 @@ +// PA1 parse local decl fail +class LValueFail { + void foo () { + true = false; + } +} diff --git a/miniJava/tests/pa2_tests/fail154.java b/miniJava/tests/pa2_tests/fail154.java new file mode 100644 index 0000000..5dd2152 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail154.java @@ -0,0 +1,6 @@ +// PA1 parse expr fail +class IllegalExpressions { + void main () { + z = a+!=b; + } +} diff --git a/miniJava/tests/pa2_tests/fail155.java b/miniJava/tests/pa2_tests/fail155.java new file mode 100644 index 0000000..dc85175 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail155.java @@ -0,0 +1,6 @@ +// PA1 parse stmt fail +class IllegalStmt { + void main () { + this; + } +} diff --git a/miniJava/tests/pa2_tests/fail158.java b/miniJava/tests/pa2_tests/fail158.java new file mode 100644 index 0000000..f9b373c --- /dev/null +++ b/miniJava/tests/pa2_tests/fail158.java @@ -0,0 +1,6 @@ +// PA1 parse ref fail +class IllegalExpressions { + void foo () { + a b [c] = d; // not ok + } +} diff --git a/miniJava/tests/pa2_tests/fail161.java b/miniJava/tests/pa2_tests/fail161.java new file mode 100644 index 0000000..22416ab --- /dev/null +++ b/miniJava/tests/pa2_tests/fail161.java @@ -0,0 +1,8 @@ +// PA1 parse decl fail +class Test { + + void p() { + boolean [] a = b; + } +} + diff --git a/miniJava/tests/pa2_tests/fail162.java b/miniJava/tests/pa2_tests/fail162.java new file mode 100644 index 0000000..f4bc9f8 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail162.java @@ -0,0 +1,8 @@ +// PA1 parse call fail +class Test { + + void p(int a, boolean b) { + int p(a,b); + } +} + diff --git a/miniJava/tests/pa2_tests/fail163.java b/miniJava/tests/pa2_tests/fail163.java new file mode 100644 index 0000000..1d8c0ee --- /dev/null +++ b/miniJava/tests/pa2_tests/fail163.java @@ -0,0 +1,8 @@ +// PA1 parse decl fail +class Test { + + void p(int a) { + Test [ ] x.y = a; + } +} + diff --git a/miniJava/tests/pa2_tests/fail164.java b/miniJava/tests/pa2_tests/fail164.java new file mode 100644 index 0000000..80a6bf1 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail164.java @@ -0,0 +1,8 @@ +// PA1 parse assign fail +class Test { + + void p(int a) { + Test [ ] = a * 3; + } +} + diff --git a/miniJava/tests/pa2_tests/fail165.java b/miniJava/tests/pa2_tests/fail165.java new file mode 100644 index 0000000..037c17c --- /dev/null +++ b/miniJava/tests/pa2_tests/fail165.java @@ -0,0 +1,8 @@ +// PA1 parse call fail +class Test { + + void p(int a) { + c.p(2,3)[3] = 4; + } +} + diff --git a/miniJava/tests/pa2_tests/fail167.java b/miniJava/tests/pa2_tests/fail167.java new file mode 100644 index 0000000..fd5425d --- /dev/null +++ b/miniJava/tests/pa2_tests/fail167.java @@ -0,0 +1,8 @@ +// PA1 parse assign fail +class Test { + + void p() { + x.y() = z; + } +} + diff --git a/miniJava/tests/pa2_tests/fail168.java b/miniJava/tests/pa2_tests/fail168.java new file mode 100644 index 0000000..2320941 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail168.java @@ -0,0 +1,8 @@ +// PA1 parse decl fail +class Test { + + void p() { + c [] d b = new int[4]; + } +} + diff --git a/miniJava/tests/pa2_tests/fail201.java b/miniJava/tests/pa2_tests/fail201.java new file mode 100644 index 0000000..8715814 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail201.java @@ -0,0 +1,4 @@ +// PA2 local var decl fail +class A { + int p(){A A A = b;} +} diff --git a/miniJava/tests/pa2_tests/fail206.java b/miniJava/tests/pa2_tests/fail206.java new file mode 100644 index 0000000..3b72c53 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail206.java @@ -0,0 +1,7 @@ +// PA2 statement after return +class A { + int p(){ + return 2; + x = 3; + } +} diff --git a/miniJava/tests/pa2_tests/fail207.java b/miniJava/tests/pa2_tests/fail207.java new file mode 100644 index 0000000..8b5a027 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail207.java @@ -0,0 +1,4 @@ +// PA2 missing first parameter name +class A { + int p(A [], int b){} +} diff --git a/miniJava/tests/pa2_tests/fail208.java b/miniJava/tests/pa2_tests/fail208.java new file mode 100644 index 0000000..816b10e --- /dev/null +++ b/miniJava/tests/pa2_tests/fail208.java @@ -0,0 +1,4 @@ +// PA2 illegal array type +class A { + int p(void [] x){} +} diff --git a/miniJava/tests/pa2_tests/fail210.java b/miniJava/tests/pa2_tests/fail210.java new file mode 100644 index 0000000..62d533c --- /dev/null +++ b/miniJava/tests/pa2_tests/fail210.java @@ -0,0 +1,4 @@ +// PA2 parameter decl fail +class A { + void foo(x){} +} diff --git a/miniJava/tests/pa2_tests/fail212.java b/miniJava/tests/pa2_tests/fail212.java new file mode 100644 index 0000000..5fc61fb --- /dev/null +++ b/miniJava/tests/pa2_tests/fail212.java @@ -0,0 +1,7 @@ +// PA2 local var decl fail +class A { + + A p(){ + private int stuff = 3; + } +} diff --git a/miniJava/tests/pa2_tests/fail213.java b/miniJava/tests/pa2_tests/fail213.java new file mode 100644 index 0000000..9478467 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail213.java @@ -0,0 +1,7 @@ +// PA2 stmt fail +class A { + void p(){ + if x + int x = 3; + } +} diff --git a/miniJava/tests/pa2_tests/fail214.java b/miniJava/tests/pa2_tests/fail214.java new file mode 100644 index 0000000..35409f5 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail214.java @@ -0,0 +1,6 @@ +// PA2 stmt fail +class A { + void p(){ + this; + } +} diff --git a/miniJava/tests/pa2_tests/fail216.java b/miniJava/tests/pa2_tests/fail216.java new file mode 100644 index 0000000..96d9a3f --- /dev/null +++ b/miniJava/tests/pa2_tests/fail216.java @@ -0,0 +1,6 @@ +// PA2 lex fail +class A { + void f(){ + p = p & !p; + } +} diff --git a/miniJava/tests/pa2_tests/fail217.java b/miniJava/tests/pa2_tests/fail217.java new file mode 100644 index 0000000..51b6b0c --- /dev/null +++ b/miniJava/tests/pa2_tests/fail217.java @@ -0,0 +1,6 @@ +// PA2 expr fail +class A { + void f(){ + c = a <=< b; + } +} diff --git a/miniJava/tests/pa2_tests/fail218.java b/miniJava/tests/pa2_tests/fail218.java new file mode 100644 index 0000000..264c31b --- /dev/null +++ b/miniJava/tests/pa2_tests/fail218.java @@ -0,0 +1,6 @@ +// PA2 predecrement fail +class A { + void f(){ + c = --b; + } +} diff --git a/miniJava/tests/pa2_tests/fail219.java b/miniJava/tests/pa2_tests/fail219.java new file mode 100644 index 0000000..9548b46 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail219.java @@ -0,0 +1,6 @@ +// PA2 expr fail +class A { + void f(){ + c = ++b; + } +} diff --git a/miniJava/tests/pa2_tests/fail220.java b/miniJava/tests/pa2_tests/fail220.java new file mode 100644 index 0000000..ea6a0b3 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail220.java @@ -0,0 +1,6 @@ +// PA2 stmt fail +class A { + private void p(){ + return; + } +} diff --git a/miniJava/tests/pa2_tests/fail222.java b/miniJava/tests/pa2_tests/fail222.java new file mode 100644 index 0000000..53bb9f7 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail222.java @@ -0,0 +1,6 @@ +// PA2 expr fail +class A { + void p(){ + int b = c / * d /* */; + } +} diff --git a/miniJava/tests/pa2_tests/fail224.java b/miniJava/tests/pa2_tests/fail224.java new file mode 100644 index 0000000..a87222d --- /dev/null +++ b/miniJava/tests/pa2_tests/fail224.java @@ -0,0 +1,6 @@ +// PA2 expr fail +class A { + void p(){ + int b = p ! p; + } +} diff --git a/miniJava/tests/pa2_tests/fail230.java b/miniJava/tests/pa2_tests/fail230.java new file mode 100644 index 0000000..7285c56 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail230.java @@ -0,0 +1,4 @@ +// PA2 incorrect reference +class A { + void p(){ x = a.this; } +} diff --git a/miniJava/tests/pa2_tests/fail231.java b/miniJava/tests/pa2_tests/fail231.java new file mode 100644 index 0000000..59cf0e5 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail231.java @@ -0,0 +1,4 @@ +// PA2 incorrect reference +class A { + void p(){ x = this[i]; } +} diff --git a/miniJava/tests/pa2_tests/fail232.java b/miniJava/tests/pa2_tests/fail232.java new file mode 100644 index 0000000..e3839d6 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail232.java @@ -0,0 +1,4 @@ +// PA2 incorrect reference +class A { + void p(){ x = a[i][j]; } +} diff --git a/miniJava/tests/pa2_tests/fail233.java b/miniJava/tests/pa2_tests/fail233.java new file mode 100644 index 0000000..844f664 --- /dev/null +++ b/miniJava/tests/pa2_tests/fail233.java @@ -0,0 +1,4 @@ +// PA2 incorrect new expr +class A { + void p(){ x = new void [3]; } +} diff --git a/miniJava/tests/pa2_tests/fail234.java b/miniJava/tests/pa2_tests/fail234.java new file mode 100644 index 0000000..723ba2d --- /dev/null +++ b/miniJava/tests/pa2_tests/fail234.java @@ -0,0 +1,4 @@ +// PA2 invalid type in parameter declaration +class A { + void p(void [] x){ } +} diff --git a/miniJava/tests/pa2_tests/pass101.java b/miniJava/tests/pa2_tests/pass101.java new file mode 100644 index 0000000..0a0a702 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass101.java @@ -0,0 +1,3 @@ +// PA1 lex id pass +class id {} + diff --git a/miniJava/tests/pa2_tests/pass101.java.out b/miniJava/tests/pa2_tests/pass101.java.out new file mode 100644 index 0000000..9ea7e6a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass101.java.out @@ -0,0 +1,8 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass110.java b/miniJava/tests/pa2_tests/pass110.java new file mode 100644 index 0000000..111e200 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass110.java @@ -0,0 +1,3 @@ +// PA1 lex comment pass +class // comment $$ followed by \r\n +id {} diff --git a/miniJava/tests/pa2_tests/pass110.java.out b/miniJava/tests/pa2_tests/pass110.java.out new file mode 100644 index 0000000..9ea7e6a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass110.java.out @@ -0,0 +1,8 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass113.java b/miniJava/tests/pa2_tests/pass113.java new file mode 100644 index 0000000..0e9fe63 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass113.java @@ -0,0 +1,2 @@ +// PA1 lex comment pass +class id {} // trailing comment terminated by \r\n diff --git a/miniJava/tests/pa2_tests/pass113.java.out b/miniJava/tests/pa2_tests/pass113.java.out new file mode 100644 index 0000000..9ea7e6a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass113.java.out @@ -0,0 +1,8 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass120.java b/miniJava/tests/pa2_tests/pass120.java new file mode 100644 index 0000000..3fb77d1 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass120.java @@ -0,0 +1,3 @@ +// PA1 lex comment pass +class /*/$*/ id {} + diff --git a/miniJava/tests/pa2_tests/pass120.java.out b/miniJava/tests/pa2_tests/pass120.java.out new file mode 100644 index 0000000..9ea7e6a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass120.java.out @@ -0,0 +1,8 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass130.java b/miniJava/tests/pa2_tests/pass130.java new file mode 100644 index 0000000..e69de29 diff --git a/miniJava/tests/pa2_tests/pass130.java.out b/miniJava/tests/pa2_tests/pass130.java.out new file mode 100644 index 0000000..766e038 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass130.java.out @@ -0,0 +1,4 @@ +======= AST Display ========================= +Package + ClassDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass131.java b/miniJava/tests/pa2_tests/pass131.java new file mode 100644 index 0000000..4acb6dc --- /dev/null +++ b/miniJava/tests/pa2_tests/pass131.java @@ -0,0 +1,12 @@ +// PA1 lex whitespace including tab +class Test { + /* multiple comments between + */ + + // tokens + + /**//* is OK */ + + +} + diff --git a/miniJava/tests/pa2_tests/pass131.java.out b/miniJava/tests/pa2_tests/pass131.java.out new file mode 100644 index 0000000..224c94a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass131.java.out @@ -0,0 +1,8 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [0] + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass132.java b/miniJava/tests/pa2_tests/pass132.java new file mode 100644 index 0000000..89408eb --- /dev/null +++ b/miniJava/tests/pa2_tests/pass132.java @@ -0,0 +1,3 @@ +// PA1 lex comment pass +class // comment followed by \n only +id {} diff --git a/miniJava/tests/pa2_tests/pass132.java.out b/miniJava/tests/pa2_tests/pass132.java.out new file mode 100644 index 0000000..9ea7e6a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass132.java.out @@ -0,0 +1,8 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass133.java b/miniJava/tests/pa2_tests/pass133.java new file mode 100644 index 0000000..287861f --- /dev/null +++ b/miniJava/tests/pa2_tests/pass133.java @@ -0,0 +1,3 @@ +// PA1 lex comment pass +class // comment followed by \r only + id {} \ No newline at end of file diff --git a/miniJava/tests/pa2_tests/pass133.java.out b/miniJava/tests/pa2_tests/pass133.java.out new file mode 100644 index 0000000..9ea7e6a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass133.java.out @@ -0,0 +1,8 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass136.java b/miniJava/tests/pa2_tests/pass136.java new file mode 100644 index 0000000..216cd0c --- /dev/null +++ b/miniJava/tests/pa2_tests/pass136.java @@ -0,0 +1,2 @@ +// PA1 lex comment pass +class id {} // unterminated comment - no trailing \r\n \ No newline at end of file diff --git a/miniJava/tests/pa2_tests/pass136.java.out b/miniJava/tests/pa2_tests/pass136.java.out new file mode 100644 index 0000000..9ea7e6a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass136.java.out @@ -0,0 +1,8 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass137.java b/miniJava/tests/pa2_tests/pass137.java new file mode 100644 index 0000000..20cc7a7 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass137.java @@ -0,0 +1,2 @@ +// PA1 lex comment pass +class id {} /* no trailing \r\n */ \ No newline at end of file diff --git a/miniJava/tests/pa2_tests/pass137.java.out b/miniJava/tests/pa2_tests/pass137.java.out new file mode 100644 index 0000000..9ea7e6a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass137.java.out @@ -0,0 +1,8 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass140.java b/miniJava/tests/pa2_tests/pass140.java new file mode 100644 index 0000000..3ff1b0f --- /dev/null +++ b/miniJava/tests/pa2_tests/pass140.java @@ -0,0 +1,5 @@ +// PA1 parse field decl pass +class id { + public static Type x; +} + diff --git a/miniJava/tests/pa2_tests/pass140.java.out b/miniJava/tests/pa2_tests/pass140.java.out new file mode 100644 index 0000000..fb25514 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass140.java.out @@ -0,0 +1,12 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [1] + . . (public static) FieldDecl + . . ClassType + . . "Type" classname + . . "x" fieldname + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass141.java b/miniJava/tests/pa2_tests/pass141.java new file mode 100644 index 0000000..88a514b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass141.java @@ -0,0 +1,5 @@ +// PA1 parse field decl pass +class id { + private static Type x; +} + diff --git a/miniJava/tests/pa2_tests/pass141.java.out b/miniJava/tests/pa2_tests/pass141.java.out new file mode 100644 index 0000000..2f92ca4 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass141.java.out @@ -0,0 +1,12 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [1] + . . (private static) FieldDecl + . . ClassType + . . "Type" classname + . . "x" fieldname + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass142.java b/miniJava/tests/pa2_tests/pass142.java new file mode 100644 index 0000000..396053c --- /dev/null +++ b/miniJava/tests/pa2_tests/pass142.java @@ -0,0 +1,5 @@ +// PA1 parse field decl pass +class id { + static Type x; +} + diff --git a/miniJava/tests/pa2_tests/pass142.java.out b/miniJava/tests/pa2_tests/pass142.java.out new file mode 100644 index 0000000..fb25514 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass142.java.out @@ -0,0 +1,12 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [1] + . . (public static) FieldDecl + . . ClassType + . . "Type" classname + . . "x" fieldname + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass143.java b/miniJava/tests/pa2_tests/pass143.java new file mode 100644 index 0000000..c9845b8 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass143.java @@ -0,0 +1,5 @@ +// PA1 parse field decl pass +class id { + Type x; +} + diff --git a/miniJava/tests/pa2_tests/pass143.java.out b/miniJava/tests/pa2_tests/pass143.java.out new file mode 100644 index 0000000..a9a7e92 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass143.java.out @@ -0,0 +1,12 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [1] + . . (public) FieldDecl + . . ClassType + . . "Type" classname + . . "x" fieldname + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass146.java b/miniJava/tests/pa2_tests/pass146.java new file mode 100644 index 0000000..50645d1 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass146.java @@ -0,0 +1,5 @@ +// PA1 parse field decl pass +class id { + static void x; +} + diff --git a/miniJava/tests/pa2_tests/pass146.java.out b/miniJava/tests/pa2_tests/pass146.java.out new file mode 100644 index 0000000..13d88fa --- /dev/null +++ b/miniJava/tests/pa2_tests/pass146.java.out @@ -0,0 +1,11 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [1] + . . (public static) FieldDecl + . . VOID BaseType + . . "x" fieldname + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass147.java b/miniJava/tests/pa2_tests/pass147.java new file mode 100644 index 0000000..ce969d7 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass147.java @@ -0,0 +1,5 @@ +// PA1 parse method decl pass +class id { + public static void main(String[] args){} +} + diff --git a/miniJava/tests/pa2_tests/pass147.java.out b/miniJava/tests/pa2_tests/pass147.java.out new file mode 100644 index 0000000..39003e2 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass147.java.out @@ -0,0 +1,18 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public static) MethodDecl + . . VOID BaseType + . . "main" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . ArrayType + . . . ClassType + . . . "String" classname + . . . "args"parametername + . . StmtList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass148.java b/miniJava/tests/pa2_tests/pass148.java new file mode 100644 index 0000000..a8a1967 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass148.java @@ -0,0 +1,5 @@ +// PA1 parse method decl pass +class id { + private int f(int x, boolean b) {return 3;} +} + diff --git a/miniJava/tests/pa2_tests/pass148.java.out b/miniJava/tests/pa2_tests/pass148.java.out new file mode 100644 index 0000000..a253c5f --- /dev/null +++ b/miniJava/tests/pa2_tests/pass148.java.out @@ -0,0 +1,21 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (private) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [2] + . . . ParameterDecl + . . . INT BaseType + . . . "x"parametername + . . . ParameterDecl + . . . BOOLEAN BaseType + . . . "b"parametername + . . StmtList [0] + . . LiteralExpr + . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass150.java b/miniJava/tests/pa2_tests/pass150.java new file mode 100644 index 0000000..6fa11df --- /dev/null +++ b/miniJava/tests/pa2_tests/pass150.java @@ -0,0 +1,9 @@ +// PA1 parse classdecls pass +class MainClass { + public static void main (String [] args) {} +} + +class OfItsOwn { + int A_01; +} // class OfItsOwn + diff --git a/miniJava/tests/pa2_tests/pass150.java.out b/miniJava/tests/pa2_tests/pass150.java.out new file mode 100644 index 0000000..8fe6acc --- /dev/null +++ b/miniJava/tests/pa2_tests/pass150.java.out @@ -0,0 +1,25 @@ +======= AST Display ========================= +Package + ClassDeclList [2] + . ClassDecl + . "MainClass" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public static) MethodDecl + . . VOID BaseType + . . "main" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . ArrayType + . . . ClassType + . . . "String" classname + . . . "args"parametername + . . StmtList [0] + . ClassDecl + . "OfItsOwn" classname + . FieldDeclList [1] + . . (public) FieldDecl + . . INT BaseType + . . "A_01" fieldname + . MethodDeclList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass152.java b/miniJava/tests/pa2_tests/pass152.java new file mode 100644 index 0000000..858bbbd --- /dev/null +++ b/miniJava/tests/pa2_tests/pass152.java @@ -0,0 +1,8 @@ +// PA1 parse new pass +class MainClass { + public static void main (String [] args) { + SecondSubClass newobj = new SecondSubClass (); + } +} + + diff --git a/miniJava/tests/pa2_tests/pass152.java.out b/miniJava/tests/pa2_tests/pass152.java.out new file mode 100644 index 0000000..9e0ab54 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass152.java.out @@ -0,0 +1,26 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "MainClass" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public static) MethodDecl + . . VOID BaseType + . . "main" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . ArrayType + . . . ClassType + . . . "String" classname + . . . "args"parametername + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ClassType + . . . "SecondSubClass" classname + . . . "newobj" varname + . . . NewObjectExpr + . . . ClassType + . . . "SecondSubClass" classname +============================================= diff --git a/miniJava/tests/pa2_tests/pass153.java b/miniJava/tests/pa2_tests/pass153.java new file mode 100644 index 0000000..91330f4 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass153.java @@ -0,0 +1,8 @@ +// PA1 parse new pass +class Foo { + void bar() { + int[] newarr = new int[20]; + } +} + + diff --git a/miniJava/tests/pa2_tests/pass153.java.out b/miniJava/tests/pa2_tests/pass153.java.out new file mode 100644 index 0000000..769ca87 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass153.java.out @@ -0,0 +1,22 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Foo" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "bar" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ArrayType + . . . INT BaseType + . . . "newarr" varname + . . . NewArrayExpr + . . . INT BaseType + . . . LiteralExpr + . . . "20" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass154.java b/miniJava/tests/pa2_tests/pass154.java new file mode 100644 index 0000000..3328ef7 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass154.java @@ -0,0 +1,23 @@ +// PA1 parse methods pass +class MainClass { + public static void main (String [] args) { + } +} +class SuperClass +{ + public void setWorth (int worth){ + integer = worth; + } + + public int getWorth (){ + return this.integer; + } + + public void setTruth (boolean truth){ + bool = truth; + } + + public int getTruth (){ + return this.bool; + } +} diff --git a/miniJava/tests/pa2_tests/pass154.java.out b/miniJava/tests/pa2_tests/pass154.java.out new file mode 100644 index 0000000..c1a5f71 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass154.java.out @@ -0,0 +1,68 @@ +======= AST Display ========================= +Package + ClassDeclList [2] + . ClassDecl + . "MainClass" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public static) MethodDecl + . . VOID BaseType + . . "main" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . ArrayType + . . . ClassType + . . . "String" classname + . . . "args"parametername + . . StmtList [0] + . ClassDecl + . "SuperClass" classname + . FieldDeclList [0] + . MethodDeclList [4] + . . (public) MethodDecl + . . VOID BaseType + . . "setWorth" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . INT BaseType + . . . "worth"parametername + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "integer" Identifier + . . . RefExpr + . . . IdRef + . . . "worth" Identifier + . . (public) MethodDecl + . . INT BaseType + . . "getWorth" methodname + . . ParameterDeclList [0] + . . StmtList [0] + . . RefExpr + . . QualifiedRef + . . "integer" Identifier + . . ThisRef + . . (public) MethodDecl + . . VOID BaseType + . . "setTruth" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . BOOLEAN BaseType + . . . "truth"parametername + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "bool" Identifier + . . . RefExpr + . . . IdRef + . . . "truth" Identifier + . . (public) MethodDecl + . . INT BaseType + . . "getTruth" methodname + . . ParameterDeclList [0] + . . StmtList [0] + . . RefExpr + . . QualifiedRef + . . "bool" Identifier + . . ThisRef +============================================= diff --git a/miniJava/tests/pa2_tests/pass155.java b/miniJava/tests/pa2_tests/pass155.java new file mode 100644 index 0000000..3453fc6 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass155.java @@ -0,0 +1,21 @@ +// PA1 parse parse pass +class MainClass { + public static void main (String [] args) { + SecondSubClass newobj = new SecondSubClass (); + } +} +class SuperClass +{ + private void fillup (boolean open, int [] jar, int marble, int upto) { + + int index = 0; + if (open == true) { + while ( index < upto ) { + ownjar [index] = jar [index]; + jar [index] = marble; + } // while + } // if + } // fillup + +} // class SuperClass + diff --git a/miniJava/tests/pa2_tests/pass155.java.out b/miniJava/tests/pa2_tests/pass155.java.out new file mode 100644 index 0000000..2420f6b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass155.java.out @@ -0,0 +1,99 @@ +======= AST Display ========================= +Package + ClassDeclList [2] + . ClassDecl + . "MainClass" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public static) MethodDecl + . . VOID BaseType + . . "main" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . ArrayType + . . . ClassType + . . . "String" classname + . . . "args"parametername + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ClassType + . . . "SecondSubClass" classname + . . . "newobj" varname + . . . NewObjectExpr + . . . ClassType + . . . "SecondSubClass" classname + . ClassDecl + . "SuperClass" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (private) MethodDecl + . . VOID BaseType + . . "fillup" methodname + . . ParameterDeclList [4] + . . . ParameterDecl + . . . BOOLEAN BaseType + . . . "open"parametername + . . . ParameterDecl + . . . ArrayType + . . . INT BaseType + . . . "jar"parametername + . . . ParameterDecl + . . . INT BaseType + . . . "marble"parametername + . . . ParameterDecl + . . . INT BaseType + . . . "upto"parametername + . . StmtList [2] + . . . VarDeclStmt + . . . VarDecl + . . . INT BaseType + . . . "index" varname + . . . LiteralExpr + . . . "0" IntLiteral + . . . IfStmt + . . . BinaryExpr + . . . "==" Operator + . . . RefExpr + . . . IdRef + . . . "open" Identifier + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . BlockStmt + . . . StatementList [1] + . . . . WhileStmt + . . . . BinaryExpr + . . . . "<" Operator + . . . . RefExpr + . . . . IdRef + . . . . "index" Identifier + . . . . RefExpr + . . . . IdRef + . . . . "upto" Identifier + . . . . BlockStmt + . . . . StatementList [2] + . . . . . AssignStmt + . . . . . IndexedRef + . . . . . RefExpr + . . . . . IdRef + . . . . . "index" Identifier + . . . . . IdRef + . . . . . "ownjar" Identifier + . . . . . RefExpr + . . . . . IndexedRef + . . . . . RefExpr + . . . . . IdRef + . . . . . "index" Identifier + . . . . . IdRef + . . . . . "jar" Identifier + . . . . . AssignStmt + . . . . . IndexedRef + . . . . . RefExpr + . . . . . IdRef + . . . . . "index" Identifier + . . . . . IdRef + . . . . . "jar" Identifier + . . . . . RefExpr + . . . . . IdRef + . . . . . "marble" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass156.java b/miniJava/tests/pa2_tests/pass156.java new file mode 100644 index 0000000..bc7f703 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass156.java @@ -0,0 +1,6 @@ +// PA1 parse Stmt this ref pass +class LegalStmt { + void main () { + this(3,4); + } +} diff --git a/miniJava/tests/pa2_tests/pass156.java.out b/miniJava/tests/pa2_tests/pass156.java.out new file mode 100644 index 0000000..7937472 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass156.java.out @@ -0,0 +1,20 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "LegalStmt" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "main" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . CallStmt + . . . ThisRef + . . . ExprList [2] + . . . . LiteralExpr + . . . . "3" IntLiteral + . . . . LiteralExpr + . . . . "4" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass158.java b/miniJava/tests/pa2_tests/pass158.java new file mode 100644 index 0000000..be52ebf --- /dev/null +++ b/miniJava/tests/pa2_tests/pass158.java @@ -0,0 +1,12 @@ +// PA1 parse refs pass +class Test { + + void p() { + a = true; + a [b] = c; + p (); + a.b[3] = d; + c.p(e); + } +} + diff --git a/miniJava/tests/pa2_tests/pass158.java.out b/miniJava/tests/pa2_tests/pass158.java.out new file mode 100644 index 0000000..712053f --- /dev/null +++ b/miniJava/tests/pa2_tests/pass158.java.out @@ -0,0 +1,52 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [5] + . . . AssignStmt + . . . IdRef + . . . "a" Identifier + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . AssignStmt + . . . IndexedRef + . . . RefExpr + . . . IdRef + . . . "b" Identifier + . . . IdRef + . . . "a" Identifier + . . . RefExpr + . . . IdRef + . . . "c" Identifier + . . . CallStmt + . . . IdRef + . . . "p" Identifier + . . . ExprList [0] + . . . AssignStmt + . . . IndexedRef + . . . LiteralExpr + . . . "3" IntLiteral + . . . QualifiedRef + . . . "b" Identifier + . . . IdRef + . . . "a" Identifier + . . . RefExpr + . . . IdRef + . . . "d" Identifier + . . . CallStmt + . . . QualifiedRef + . . . "p" Identifier + . . . IdRef + . . . "c" Identifier + . . . ExprList [1] + . . . . RefExpr + . . . . IdRef + . . . . "e" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass159.java b/miniJava/tests/pa2_tests/pass159.java new file mode 100644 index 0000000..dcaedf5 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass159.java @@ -0,0 +1,11 @@ +// PA1 parse decl pass +class Test { + + int [] a; + Test [] t; + + void p() { + void x = y; + } +} + diff --git a/miniJava/tests/pa2_tests/pass159.java.out b/miniJava/tests/pa2_tests/pass159.java.out new file mode 100644 index 0000000..10d3779 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass159.java.out @@ -0,0 +1,29 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [2] + . . (public) FieldDecl + . . ArrayType + . . INT BaseType + . . "a" fieldname + . . (public) FieldDecl + . . ArrayType + . . ClassType + . . "Test" classname + . . "t" fieldname + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . VOID BaseType + . . . "x" varname + . . . RefExpr + . . . IdRef + . . . "y" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass160.java b/miniJava/tests/pa2_tests/pass160.java new file mode 100644 index 0000000..82d7f6b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass160.java @@ -0,0 +1,9 @@ +// PA1 parse refs pass +class Test { + + void p() { + A a = 23; + boolean b = c; + } +} + diff --git a/miniJava/tests/pa2_tests/pass160.java.out b/miniJava/tests/pa2_tests/pass160.java.out new file mode 100644 index 0000000..aa846ae --- /dev/null +++ b/miniJava/tests/pa2_tests/pass160.java.out @@ -0,0 +1,27 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [2] + . . . VarDeclStmt + . . . VarDecl + . . . ClassType + . . . "A" classname + . . . "a" varname + . . . LiteralExpr + . . . "23" IntLiteral + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "b" varname + . . . RefExpr + . . . IdRef + . . . "c" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass161.java b/miniJava/tests/pa2_tests/pass161.java new file mode 100644 index 0000000..654e776 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass161.java @@ -0,0 +1,8 @@ +// PA1 parse assign pass +class Test { + + void p() { + a = b; + } +} + diff --git a/miniJava/tests/pa2_tests/pass161.java.out b/miniJava/tests/pa2_tests/pass161.java.out new file mode 100644 index 0000000..3d8a068 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass161.java.out @@ -0,0 +1,19 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "a" Identifier + . . . RefExpr + . . . IdRef + . . . "b" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass162.java b/miniJava/tests/pa2_tests/pass162.java new file mode 100644 index 0000000..77d1a46 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass162.java @@ -0,0 +1,8 @@ +// PA1 parse call pass +class Test { + + void p(int a, boolean b) { + p(a,b); + } +} + diff --git a/miniJava/tests/pa2_tests/pass162.java.out b/miniJava/tests/pa2_tests/pass162.java.out new file mode 100644 index 0000000..62a6c78 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass162.java.out @@ -0,0 +1,29 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [2] + . . . ParameterDecl + . . . INT BaseType + . . . "a"parametername + . . . ParameterDecl + . . . BOOLEAN BaseType + . . . "b"parametername + . . StmtList [1] + . . . CallStmt + . . . IdRef + . . . "p" Identifier + . . . ExprList [2] + . . . . RefExpr + . . . . IdRef + . . . . "a" Identifier + . . . . RefExpr + . . . . IdRef + . . . . "b" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass163.java b/miniJava/tests/pa2_tests/pass163.java new file mode 100644 index 0000000..402f02b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass163.java @@ -0,0 +1,8 @@ +// PA1 parse decl pass +class Test { + + void p(int a) { + Test [ ] v = a; + } +} + diff --git a/miniJava/tests/pa2_tests/pass163.java.out b/miniJava/tests/pa2_tests/pass163.java.out new file mode 100644 index 0000000..851864e --- /dev/null +++ b/miniJava/tests/pa2_tests/pass163.java.out @@ -0,0 +1,25 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . INT BaseType + . . . "a"parametername + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ArrayType + . . . ClassType + . . . "Test" classname + . . . "v" varname + . . . RefExpr + . . . IdRef + . . . "a" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass164.java b/miniJava/tests/pa2_tests/pass164.java new file mode 100644 index 0000000..3ef2c2b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass164.java @@ -0,0 +1,8 @@ +// PA1 parse assign pass +class Test { + + void p(int a) { + Test [ a + 1] = a * 3; + } +} + diff --git a/miniJava/tests/pa2_tests/pass164.java.out b/miniJava/tests/pa2_tests/pass164.java.out new file mode 100644 index 0000000..ff5e710 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass164.java.out @@ -0,0 +1,34 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . INT BaseType + . . . "a"parametername + . . StmtList [1] + . . . AssignStmt + . . . IndexedRef + . . . BinaryExpr + . . . "+" Operator + . . . RefExpr + . . . IdRef + . . . "a" Identifier + . . . LiteralExpr + . . . "1" IntLiteral + . . . IdRef + . . . "Test" Identifier + . . . BinaryExpr + . . . "*" Operator + . . . RefExpr + . . . IdRef + . . . "a" Identifier + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass165.java b/miniJava/tests/pa2_tests/pass165.java new file mode 100644 index 0000000..e95b29c --- /dev/null +++ b/miniJava/tests/pa2_tests/pass165.java @@ -0,0 +1,9 @@ +// PA1 parse call pass +class Test { + + void p(int a) { + C c = new C(); + c.p(2,3); + } +} + diff --git a/miniJava/tests/pa2_tests/pass165.java.out b/miniJava/tests/pa2_tests/pass165.java.out new file mode 100644 index 0000000..d189521 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass165.java.out @@ -0,0 +1,34 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . INT BaseType + . . . "a"parametername + . . StmtList [2] + . . . VarDeclStmt + . . . VarDecl + . . . ClassType + . . . "C" classname + . . . "c" varname + . . . NewObjectExpr + . . . ClassType + . . . "C" classname + . . . CallStmt + . . . QualifiedRef + . . . "p" Identifier + . . . IdRef + . . . "c" Identifier + . . . ExprList [2] + . . . . LiteralExpr + . . . . "2" IntLiteral + . . . . LiteralExpr + . . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass166.java b/miniJava/tests/pa2_tests/pass166.java new file mode 100644 index 0000000..ed777be --- /dev/null +++ b/miniJava/tests/pa2_tests/pass166.java @@ -0,0 +1,9 @@ +// PA1 parse assign pass +class Test { + + void p(int a) { + this.p(2,3); + a.v[3] = 4; + } +} + diff --git a/miniJava/tests/pa2_tests/pass166.java.out b/miniJava/tests/pa2_tests/pass166.java.out new file mode 100644 index 0000000..84ca777 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass166.java.out @@ -0,0 +1,35 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . INT BaseType + . . . "a"parametername + . . StmtList [2] + . . . CallStmt + . . . QualifiedRef + . . . "p" Identifier + . . . ThisRef + . . . ExprList [2] + . . . . LiteralExpr + . . . . "2" IntLiteral + . . . . LiteralExpr + . . . . "3" IntLiteral + . . . AssignStmt + . . . IndexedRef + . . . LiteralExpr + . . . "3" IntLiteral + . . . QualifiedRef + . . . "v" Identifier + . . . IdRef + . . . "a" Identifier + . . . LiteralExpr + . . . "4" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass169.java b/miniJava/tests/pa2_tests/pass169.java new file mode 100644 index 0000000..37fafdd --- /dev/null +++ b/miniJava/tests/pa2_tests/pass169.java @@ -0,0 +1,8 @@ +// PA1 parse new pass +class Test { + + void p() { + Foo [] foo = new Foo [10]; + } +} + diff --git a/miniJava/tests/pa2_tests/pass169.java.out b/miniJava/tests/pa2_tests/pass169.java.out new file mode 100644 index 0000000..018798a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass169.java.out @@ -0,0 +1,24 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "Test" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ArrayType + . . . ClassType + . . . "Foo" classname + . . . "foo" varname + . . . NewArrayExpr + . . . ClassType + . . . "Foo" classname + . . . LiteralExpr + . . . "10" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass171.java b/miniJava/tests/pa2_tests/pass171.java new file mode 100644 index 0000000..c813852 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass171.java @@ -0,0 +1,8 @@ +// PA1 lex unop pass +class id { + void p(){ + int x = - b; + boolean y = !y; + } +} + diff --git a/miniJava/tests/pa2_tests/pass171.java.out b/miniJava/tests/pa2_tests/pass171.java.out new file mode 100644 index 0000000..c97e40b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass171.java.out @@ -0,0 +1,31 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [2] + . . . VarDeclStmt + . . . VarDecl + . . . INT BaseType + . . . "x" varname + . . . UnaryExpr + . . . "-" Operator + . . . RefExpr + . . . IdRef + . . . "b" Identifier + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "y" varname + . . . UnaryExpr + . . . "!" Operator + . . . RefExpr + . . . IdRef + . . . "y" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass175.java b/miniJava/tests/pa2_tests/pass175.java new file mode 100644 index 0000000..6286286 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass175.java @@ -0,0 +1,7 @@ +// PA1 lex binop pass +class id { + void p(){ + int x = 1 + 2 * 3 / 4 > 5 >= 6 < 7 <= 8 != 9 && 0 || 1; + } +} + diff --git a/miniJava/tests/pa2_tests/pass175.java.out b/miniJava/tests/pa2_tests/pass175.java.out new file mode 100644 index 0000000..8ea89cc --- /dev/null +++ b/miniJava/tests/pa2_tests/pass175.java.out @@ -0,0 +1,59 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . INT BaseType + . . . "x" varname + . . . BinaryExpr + . . . "||" Operator + . . . BinaryExpr + . . . "&&" Operator + . . . BinaryExpr + . . . "!=" Operator + . . . BinaryExpr + . . . "<=" Operator + . . . BinaryExpr + . . . "<" Operator + . . . BinaryExpr + . . . ">=" Operator + . . . BinaryExpr + . . . ">" Operator + . . . BinaryExpr + . . . "+" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . BinaryExpr + . . . "/" Operator + . . . BinaryExpr + . . . "*" Operator + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "3" IntLiteral + . . . LiteralExpr + . . . "4" IntLiteral + . . . LiteralExpr + . . . "5" IntLiteral + . . . LiteralExpr + . . . "6" IntLiteral + . . . LiteralExpr + . . . "7" IntLiteral + . . . LiteralExpr + . . . "8" IntLiteral + . . . LiteralExpr + . . . "9" IntLiteral + . . . LiteralExpr + . . . "0" IntLiteral + . . . LiteralExpr + . . . "1" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass176.java b/miniJava/tests/pa2_tests/pass176.java new file mode 100644 index 0000000..3708ab8 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass176.java @@ -0,0 +1,7 @@ +// PA1 lex binop pass +class id { + void p(){ + boolean x = true && false || x; + } +} + diff --git a/miniJava/tests/pa2_tests/pass176.java.out b/miniJava/tests/pa2_tests/pass176.java.out new file mode 100644 index 0000000..f607c52 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass176.java.out @@ -0,0 +1,28 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "x" varname + . . . BinaryExpr + . . . "||" Operator + . . . BinaryExpr + . . . "&&" Operator + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . LiteralExpr + . . . "false" BooleanLiteral + . . . RefExpr + . . . IdRef + . . . "x" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass178.java b/miniJava/tests/pa2_tests/pass178.java new file mode 100644 index 0000000..f21b331 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass178.java @@ -0,0 +1,7 @@ +// PA1 lex unop pass +class id { + void p(){ + int x = b - - b; + } +} + diff --git a/miniJava/tests/pa2_tests/pass178.java.out b/miniJava/tests/pa2_tests/pass178.java.out new file mode 100644 index 0000000..9c16882 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass178.java.out @@ -0,0 +1,27 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . INT BaseType + . . . "x" varname + . . . BinaryExpr + . . . "-" Operator + . . . RefExpr + . . . IdRef + . . . "b" Identifier + . . . UnaryExpr + . . . "-" Operator + . . . RefExpr + . . . IdRef + . . . "b" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass179.java b/miniJava/tests/pa2_tests/pass179.java new file mode 100644 index 0000000..fabfd63 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass179.java @@ -0,0 +1,7 @@ +// PA1 lex unop pass +class id { + void p(){ + int x = b - - - -b; + } +} + diff --git a/miniJava/tests/pa2_tests/pass179.java.out b/miniJava/tests/pa2_tests/pass179.java.out new file mode 100644 index 0000000..8eee654 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass179.java.out @@ -0,0 +1,31 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "id" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . INT BaseType + . . . "x" varname + . . . BinaryExpr + . . . "-" Operator + . . . RefExpr + . . . IdRef + . . . "b" Identifier + . . . UnaryExpr + . . . "-" Operator + . . . UnaryExpr + . . . "-" Operator + . . . UnaryExpr + . . . "-" Operator + . . . RefExpr + . . . IdRef + . . . "b" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass201.java b/miniJava/tests/pa2_tests/pass201.java new file mode 100644 index 0000000..f077edc --- /dev/null +++ b/miniJava/tests/pa2_tests/pass201.java @@ -0,0 +1,6 @@ +// PA2 pass stmt +class A { + A p(){ + while (true) {} + } +} diff --git a/miniJava/tests/pa2_tests/pass201.java.out b/miniJava/tests/pa2_tests/pass201.java.out new file mode 100644 index 0000000..c351127 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass201.java.out @@ -0,0 +1,19 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . ClassType + . . "A" classname + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . WhileStmt + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . BlockStmt + . . . StatementList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass202.java b/miniJava/tests/pa2_tests/pass202.java new file mode 100644 index 0000000..61a0b0b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass202.java @@ -0,0 +1,4 @@ +// PA2 pass method decl +class A { + static void p(){} +} diff --git a/miniJava/tests/pa2_tests/pass202.java.out b/miniJava/tests/pa2_tests/pass202.java.out new file mode 100644 index 0000000..b8727fb --- /dev/null +++ b/miniJava/tests/pa2_tests/pass202.java.out @@ -0,0 +1,13 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public static) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass203.java b/miniJava/tests/pa2_tests/pass203.java new file mode 100644 index 0000000..8961d58 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass203.java @@ -0,0 +1,6 @@ +// PA2 pass method decl +class A { + private void p(){ + return 0; + } +} diff --git a/miniJava/tests/pa2_tests/pass203.java.out b/miniJava/tests/pa2_tests/pass203.java.out new file mode 100644 index 0000000..bf42aff --- /dev/null +++ b/miniJava/tests/pa2_tests/pass203.java.out @@ -0,0 +1,15 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (private) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [0] + . . LiteralExpr + . . "0" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass204.java b/miniJava/tests/pa2_tests/pass204.java new file mode 100644 index 0000000..29751df --- /dev/null +++ b/miniJava/tests/pa2_tests/pass204.java @@ -0,0 +1,6 @@ +// PA2 pass local decl +class A { + int p(){ + Foo x = 3; + } +} diff --git a/miniJava/tests/pa2_tests/pass204.java.out b/miniJava/tests/pa2_tests/pass204.java.out new file mode 100644 index 0000000..f36b825 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass204.java.out @@ -0,0 +1,20 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ClassType + . . . "Foo" classname + . . . "x" varname + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass205.java b/miniJava/tests/pa2_tests/pass205.java new file mode 100644 index 0000000..63382e4 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass205.java @@ -0,0 +1,4 @@ +// PA2 pass parameter decl +class A { + void p(A [ ] s){} +} diff --git a/miniJava/tests/pa2_tests/pass205.java.out b/miniJava/tests/pa2_tests/pass205.java.out new file mode 100644 index 0000000..4f284b6 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass205.java.out @@ -0,0 +1,18 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . ArrayType + . . . ClassType + . . . "A" classname + . . . "s"parametername + . . StmtList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass206.java b/miniJava/tests/pa2_tests/pass206.java new file mode 100644 index 0000000..ae13340 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass206.java @@ -0,0 +1,4 @@ +// PA2 pass parameter decl +class A { + void p(int [] m){} +} diff --git a/miniJava/tests/pa2_tests/pass206.java.out b/miniJava/tests/pa2_tests/pass206.java.out new file mode 100644 index 0000000..ecb3a58 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass206.java.out @@ -0,0 +1,17 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . ArrayType + . . . INT BaseType + . . . "m"parametername + . . StmtList [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass207.java b/miniJava/tests/pa2_tests/pass207.java new file mode 100644 index 0000000..f9ba194 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass207.java @@ -0,0 +1,6 @@ +// PA2 pass new expr +class A { + void p(){ + A a = new A(); + } +} diff --git a/miniJava/tests/pa2_tests/pass207.java.out b/miniJava/tests/pa2_tests/pass207.java.out new file mode 100644 index 0000000..50659ef --- /dev/null +++ b/miniJava/tests/pa2_tests/pass207.java.out @@ -0,0 +1,21 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ClassType + . . . "A" classname + . . . "a" varname + . . . NewObjectExpr + . . . ClassType + . . . "A" classname +============================================= diff --git a/miniJava/tests/pa2_tests/pass208.java b/miniJava/tests/pa2_tests/pass208.java new file mode 100644 index 0000000..8e36f93 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass208.java @@ -0,0 +1,6 @@ +// PA2 pass qualified ref invocation +class A { + void p(){ + x.y(3); + } +} diff --git a/miniJava/tests/pa2_tests/pass208.java.out b/miniJava/tests/pa2_tests/pass208.java.out new file mode 100644 index 0000000..41aeafe --- /dev/null +++ b/miniJava/tests/pa2_tests/pass208.java.out @@ -0,0 +1,21 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . CallStmt + . . . QualifiedRef + . . . "y" Identifier + . . . IdRef + . . . "x" Identifier + . . . ExprList [1] + . . . . LiteralExpr + . . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass209.java b/miniJava/tests/pa2_tests/pass209.java new file mode 100644 index 0000000..152150e --- /dev/null +++ b/miniJava/tests/pa2_tests/pass209.java @@ -0,0 +1,6 @@ +//PA2 pass qualified reference assignment +class A { + void p(){ + x.y[3] = 3; + } +} diff --git a/miniJava/tests/pa2_tests/pass209.java.out b/miniJava/tests/pa2_tests/pass209.java.out new file mode 100644 index 0000000..d29f541 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass209.java.out @@ -0,0 +1,23 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . AssignStmt + . . . IndexedRef + . . . LiteralExpr + . . . "3" IntLiteral + . . . QualifiedRef + . . . "y" Identifier + . . . IdRef + . . . "x" Identifier + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass210.java b/miniJava/tests/pa2_tests/pass210.java new file mode 100644 index 0000000..b17aeda --- /dev/null +++ b/miniJava/tests/pa2_tests/pass210.java @@ -0,0 +1,6 @@ +// PA2 pass this RefExpr +class A { + A p(){ + return this; + } +} diff --git a/miniJava/tests/pa2_tests/pass210.java.out b/miniJava/tests/pa2_tests/pass210.java.out new file mode 100644 index 0000000..255b32c --- /dev/null +++ b/miniJava/tests/pa2_tests/pass210.java.out @@ -0,0 +1,16 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . ClassType + . . "A" classname + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [0] + . . RefExpr + . . ThisRef +============================================= diff --git a/miniJava/tests/pa2_tests/pass211.java b/miniJava/tests/pa2_tests/pass211.java new file mode 100644 index 0000000..bc7f703 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass211.java @@ -0,0 +1,6 @@ +// PA1 parse Stmt this ref pass +class LegalStmt { + void main () { + this(3,4); + } +} diff --git a/miniJava/tests/pa2_tests/pass211.java.out b/miniJava/tests/pa2_tests/pass211.java.out new file mode 100644 index 0000000..7937472 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass211.java.out @@ -0,0 +1,20 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "LegalStmt" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "main" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . CallStmt + . . . ThisRef + . . . ExprList [2] + . . . . LiteralExpr + . . . . "3" IntLiteral + . . . . LiteralExpr + . . . . "4" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass212.java b/miniJava/tests/pa2_tests/pass212.java new file mode 100644 index 0000000..9d38574 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass212.java @@ -0,0 +1,6 @@ +// PA2 pass indexedRef +class A { + void p(){ + A x = x.y[3]; + } +} diff --git a/miniJava/tests/pa2_tests/pass212.java.out b/miniJava/tests/pa2_tests/pass212.java.out new file mode 100644 index 0000000..64f4c41 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass212.java.out @@ -0,0 +1,26 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ClassType + . . . "A" classname + . . . "x" varname + . . . RefExpr + . . . IndexedRef + . . . LiteralExpr + . . . "3" IntLiteral + . . . QualifiedRef + . . . "y" Identifier + . . . IdRef + . . . "x" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass213.java b/miniJava/tests/pa2_tests/pass213.java new file mode 100644 index 0000000..fde7a10 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass213.java @@ -0,0 +1,6 @@ +// PA2 pass thisref +class A { + void p(){ + A x = this; + } +} diff --git a/miniJava/tests/pa2_tests/pass213.java.out b/miniJava/tests/pa2_tests/pass213.java.out new file mode 100644 index 0000000..446e270 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass213.java.out @@ -0,0 +1,20 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ClassType + . . . "A" classname + . . . "x" varname + . . . RefExpr + . . . ThisRef +============================================= diff --git a/miniJava/tests/pa2_tests/pass214.java b/miniJava/tests/pa2_tests/pass214.java new file mode 100644 index 0000000..3237566 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass214.java @@ -0,0 +1,6 @@ +// PA2 pass qualified reference +class A { + void p(){ + A x = this.p(); + } +} diff --git a/miniJava/tests/pa2_tests/pass214.java.out b/miniJava/tests/pa2_tests/pass214.java.out new file mode 100644 index 0000000..5e045fc --- /dev/null +++ b/miniJava/tests/pa2_tests/pass214.java.out @@ -0,0 +1,23 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ClassType + . . . "A" classname + . . . "x" varname + . . . CallExpr + . . . QualifiedRef + . . . "p" Identifier + . . . ThisRef + . . . ExprList + [0] +============================================= diff --git a/miniJava/tests/pa2_tests/pass215.java b/miniJava/tests/pa2_tests/pass215.java new file mode 100644 index 0000000..e1df960 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass215.java @@ -0,0 +1,6 @@ +// PA2 pass indexed ref +class A { + void p(){ + A x = this.x[3]; + } +} diff --git a/miniJava/tests/pa2_tests/pass215.java.out b/miniJava/tests/pa2_tests/pass215.java.out new file mode 100644 index 0000000..48a893f --- /dev/null +++ b/miniJava/tests/pa2_tests/pass215.java.out @@ -0,0 +1,25 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . ClassType + . . . "A" classname + . . . "x" varname + . . . RefExpr + . . . IndexedRef + . . . LiteralExpr + . . . "3" IntLiteral + . . . QualifiedRef + . . . "x" Identifier + . . . ThisRef +============================================= diff --git a/miniJava/tests/pa2_tests/pass216.java b/miniJava/tests/pa2_tests/pass216.java new file mode 100644 index 0000000..02abbe7 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass216.java @@ -0,0 +1,6 @@ +// PA2 pass unary expr +class A { + void f(){ + boolean p = p && !!p; + } +} diff --git a/miniJava/tests/pa2_tests/pass216.java.out b/miniJava/tests/pa2_tests/pass216.java.out new file mode 100644 index 0000000..fc73685 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass216.java.out @@ -0,0 +1,29 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "p" varname + . . . BinaryExpr + . . . "&&" Operator + . . . RefExpr + . . . IdRef + . . . "p" Identifier + . . . UnaryExpr + . . . "!" Operator + . . . UnaryExpr + . . . "!" Operator + . . . RefExpr + . . . IdRef + . . . "p" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass217.java b/miniJava/tests/pa2_tests/pass217.java new file mode 100644 index 0000000..942fe46 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass217.java @@ -0,0 +1,6 @@ +// PA2 pass stmt +class A { + void f(int a, int b){ + if (a < b) b = a; + } +} diff --git a/miniJava/tests/pa2_tests/pass217.java.out b/miniJava/tests/pa2_tests/pass217.java.out new file mode 100644 index 0000000..f99a8e6 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass217.java.out @@ -0,0 +1,34 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "f" methodname + . . ParameterDeclList [2] + . . . ParameterDecl + . . . INT BaseType + . . . "a"parametername + . . . ParameterDecl + . . . INT BaseType + . . . "b"parametername + . . StmtList [1] + . . . IfStmt + . . . BinaryExpr + . . . "<" Operator + . . . RefExpr + . . . IdRef + . . . "a" Identifier + . . . RefExpr + . . . IdRef + . . . "b" Identifier + . . . AssignStmt + . . . IdRef + . . . "b" Identifier + . . . RefExpr + . . . IdRef + . . . "a" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass222.java b/miniJava/tests/pa2_tests/pass222.java new file mode 100644 index 0000000..8188a12 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass222.java @@ -0,0 +1,9 @@ +// PA2 pass AST references in arguments and method invocations +class C { + public void foo() { + // "this" as reference and as qualifier + this.foo(3, this); + other.foo(4, other); + } +} + diff --git a/miniJava/tests/pa2_tests/pass222.java.out b/miniJava/tests/pa2_tests/pass222.java.out new file mode 100644 index 0000000..c53247b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass222.java.out @@ -0,0 +1,33 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "C" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "foo" methodname + . . ParameterDeclList [0] + . . StmtList [2] + . . . CallStmt + . . . QualifiedRef + . . . "foo" Identifier + . . . ThisRef + . . . ExprList [2] + . . . . LiteralExpr + . . . . "3" IntLiteral + . . . . RefExpr + . . . . ThisRef + . . . CallStmt + . . . QualifiedRef + . . . "foo" Identifier + . . . IdRef + . . . "other" Identifier + . . . ExprList [2] + . . . . LiteralExpr + . . . . "4" IntLiteral + . . . . RefExpr + . . . . IdRef + . . . . "other" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass223.java b/miniJava/tests/pa2_tests/pass223.java new file mode 100644 index 0000000..2b7470e --- /dev/null +++ b/miniJava/tests/pa2_tests/pass223.java @@ -0,0 +1,21 @@ +// PA2 pass AST multiple classes +class A {} + +class B { + private int [] v; + + public void foo(int a, B other) {} + + C c; + + private int x; +} + +class C { + private boolean b; + + public int[] tryit() { + int x =-/* unary */-x; + return (new int [20]); + } +} diff --git a/miniJava/tests/pa2_tests/pass223.java.out b/miniJava/tests/pa2_tests/pass223.java.out new file mode 100644 index 0000000..e2dbe84 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass223.java.out @@ -0,0 +1,63 @@ +======= AST Display ========================= +Package + ClassDeclList [3] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [0] + . ClassDecl + . "B" classname + . FieldDeclList [3] + . . (private) FieldDecl + . . ArrayType + . . INT BaseType + . . "v" fieldname + . . (public) FieldDecl + . . ClassType + . . "C" classname + . . "c" fieldname + . . (private) FieldDecl + . . INT BaseType + . . "x" fieldname + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "foo" methodname + . . ParameterDeclList [2] + . . . ParameterDecl + . . . INT BaseType + . . . "a"parametername + . . . ParameterDecl + . . . ClassType + . . . "B" classname + . . . "other"parametername + . . StmtList [0] + . ClassDecl + . "C" classname + . FieldDeclList [1] + . . (private) FieldDecl + . . BOOLEAN BaseType + . . "b" fieldname + . MethodDeclList [1] + . . (public) MethodDecl + . . ArrayType + . . INT BaseType + . . "tryit" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . INT BaseType + . . . "x" varname + . . . UnaryExpr + . . . "-" Operator + . . . UnaryExpr + . . . "-" Operator + . . . RefExpr + . . . IdRef + . . . "x" Identifier + . . NewArrayExpr + . . INT BaseType + . . LiteralExpr + . . "20" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass224.java b/miniJava/tests/pa2_tests/pass224.java new file mode 100644 index 0000000..c8df497 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass224.java @@ -0,0 +1,6 @@ +//PA2 pass qualified reference expression +class A { + void p(){ + int a = x[3].y[4](z,5) + 2; + } +} diff --git a/miniJava/tests/pa2_tests/pass224.java.out b/miniJava/tests/pa2_tests/pass224.java.out new file mode 100644 index 0000000..4d5ef27 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass224.java.out @@ -0,0 +1,38 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "p" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . INT BaseType + . . . "a" varname + . . . BinaryExpr + . . . "+" Operator + . . . CallExpr + . . . IndexedRef + . . . LiteralExpr + . . . "4" IntLiteral + . . . QualifiedRef + . . . "y" Identifier + . . . IndexedRef + . . . LiteralExpr + . . . "3" IntLiteral + . . . IdRef + . . . "x" Identifier + . . . ExprList + [2] + . . . . RefExpr + . . . . IdRef + . . . . "z" Identifier + . . . . LiteralExpr + . . . . "5" IntLiteral + . . . LiteralExpr + . . . "2" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass250.java b/miniJava/tests/pa2_tests/pass250.java new file mode 100644 index 0000000..9e01991 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass250.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + x = 1 + 2 * 3; + } +} diff --git a/miniJava/tests/pa2_tests/pass250.java.out b/miniJava/tests/pa2_tests/pass250.java.out new file mode 100644 index 0000000..f85de86 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass250.java.out @@ -0,0 +1,26 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . BinaryExpr + . . . "+" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . BinaryExpr + . . . "*" Operator + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass251.java b/miniJava/tests/pa2_tests/pass251.java new file mode 100644 index 0000000..9c8bd7b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass251.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + x = 1 * 2 + 3; + } +} diff --git a/miniJava/tests/pa2_tests/pass251.java.out b/miniJava/tests/pa2_tests/pass251.java.out new file mode 100644 index 0000000..ffb3202 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass251.java.out @@ -0,0 +1,26 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . BinaryExpr + . . . "+" Operator + . . . BinaryExpr + . . . "*" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass252.java b/miniJava/tests/pa2_tests/pass252.java new file mode 100644 index 0000000..9ed51e8 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass252.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + x = 1 * 2 / 3; + } +} diff --git a/miniJava/tests/pa2_tests/pass252.java.out b/miniJava/tests/pa2_tests/pass252.java.out new file mode 100644 index 0000000..9ddbf0a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass252.java.out @@ -0,0 +1,26 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . BinaryExpr + . . . "/" Operator + . . . BinaryExpr + . . . "*" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass253.java b/miniJava/tests/pa2_tests/pass253.java new file mode 100644 index 0000000..6a2358d --- /dev/null +++ b/miniJava/tests/pa2_tests/pass253.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + x = 1 / 2 * 3; + } +} diff --git a/miniJava/tests/pa2_tests/pass253.java.out b/miniJava/tests/pa2_tests/pass253.java.out new file mode 100644 index 0000000..de838d6 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass253.java.out @@ -0,0 +1,26 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . BinaryExpr + . . . "*" Operator + . . . BinaryExpr + . . . "/" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass254.java b/miniJava/tests/pa2_tests/pass254.java new file mode 100644 index 0000000..0d58bff --- /dev/null +++ b/miniJava/tests/pa2_tests/pass254.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + x = 1 + 2 < 3; + } +} diff --git a/miniJava/tests/pa2_tests/pass254.java.out b/miniJava/tests/pa2_tests/pass254.java.out new file mode 100644 index 0000000..6ca6ee6 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass254.java.out @@ -0,0 +1,26 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . BinaryExpr + . . . "<" Operator + . . . BinaryExpr + . . . "+" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass255.java b/miniJava/tests/pa2_tests/pass255.java new file mode 100644 index 0000000..866788b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass255.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + boolean x = 1 < 2 + 3; + } +} diff --git a/miniJava/tests/pa2_tests/pass255.java.out b/miniJava/tests/pa2_tests/pass255.java.out new file mode 100644 index 0000000..af77f34 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass255.java.out @@ -0,0 +1,27 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "x" varname + . . . BinaryExpr + . . . "<" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . BinaryExpr + . . . "+" Operator + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass256.java b/miniJava/tests/pa2_tests/pass256.java new file mode 100644 index 0000000..a7e5f7f --- /dev/null +++ b/miniJava/tests/pa2_tests/pass256.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + boolean x = !true < false; + } +} diff --git a/miniJava/tests/pa2_tests/pass256.java.out b/miniJava/tests/pa2_tests/pass256.java.out new file mode 100644 index 0000000..5d97220 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass256.java.out @@ -0,0 +1,25 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "x" varname + . . . BinaryExpr + . . . "<" Operator + . . . UnaryExpr + . . . "!" Operator + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . LiteralExpr + . . . "false" BooleanLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass257.java b/miniJava/tests/pa2_tests/pass257.java new file mode 100644 index 0000000..3a4ac9b --- /dev/null +++ b/miniJava/tests/pa2_tests/pass257.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + boolean x = true && false || true; + } +} diff --git a/miniJava/tests/pa2_tests/pass257.java.out b/miniJava/tests/pa2_tests/pass257.java.out new file mode 100644 index 0000000..d0bc5a7 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass257.java.out @@ -0,0 +1,27 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "x" varname + . . . BinaryExpr + . . . "||" Operator + . . . BinaryExpr + . . . "&&" Operator + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . LiteralExpr + . . . "false" BooleanLiteral + . . . LiteralExpr + . . . "true" BooleanLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass258.java b/miniJava/tests/pa2_tests/pass258.java new file mode 100644 index 0000000..746fa64 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass258.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + x = (1 + 2) * 3; + } +} diff --git a/miniJava/tests/pa2_tests/pass258.java.out b/miniJava/tests/pa2_tests/pass258.java.out new file mode 100644 index 0000000..d0eafdd --- /dev/null +++ b/miniJava/tests/pa2_tests/pass258.java.out @@ -0,0 +1,26 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . BinaryExpr + . . . "*" Operator + . . . BinaryExpr + . . . "+" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass259.java b/miniJava/tests/pa2_tests/pass259.java new file mode 100644 index 0000000..56a2583 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass259.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + x = 1 - 2 * -3; + } + } diff --git a/miniJava/tests/pa2_tests/pass259.java.out b/miniJava/tests/pa2_tests/pass259.java.out new file mode 100644 index 0000000..7c3a39d --- /dev/null +++ b/miniJava/tests/pa2_tests/pass259.java.out @@ -0,0 +1,28 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . BinaryExpr + . . . "-" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . BinaryExpr + . . . "*" Operator + . . . LiteralExpr + . . . "2" IntLiteral + . . . UnaryExpr + . . . "-" Operator + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass260.java b/miniJava/tests/pa2_tests/pass260.java new file mode 100644 index 0000000..f5e39e7 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass260.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + x = - -1 * 2 -3; + } +} diff --git a/miniJava/tests/pa2_tests/pass260.java.out b/miniJava/tests/pa2_tests/pass260.java.out new file mode 100644 index 0000000..78abffc --- /dev/null +++ b/miniJava/tests/pa2_tests/pass260.java.out @@ -0,0 +1,30 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . BinaryExpr + . . . "-" Operator + . . . BinaryExpr + . . . "*" Operator + . . . UnaryExpr + . . . "-" Operator + . . . UnaryExpr + . . . "-" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "3" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass261.java b/miniJava/tests/pa2_tests/pass261.java new file mode 100644 index 0000000..60bff9c --- /dev/null +++ b/miniJava/tests/pa2_tests/pass261.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f() { + boolean x = 2 < 1 && 3 >= 4; + } +} diff --git a/miniJava/tests/pa2_tests/pass261.java.out b/miniJava/tests/pa2_tests/pass261.java.out new file mode 100644 index 0000000..e07c152 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass261.java.out @@ -0,0 +1,31 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "x" varname + . . . BinaryExpr + . . . "&&" Operator + . . . BinaryExpr + . . . "<" Operator + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "1" IntLiteral + . . . BinaryExpr + . . . ">=" Operator + . . . LiteralExpr + . . . "3" IntLiteral + . . . LiteralExpr + . . . "4" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass262.java b/miniJava/tests/pa2_tests/pass262.java new file mode 100644 index 0000000..b365a08 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass262.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f ( ) { + boolean x = false && 2 >= 3 || true; + } +} diff --git a/miniJava/tests/pa2_tests/pass262.java.out b/miniJava/tests/pa2_tests/pass262.java.out new file mode 100644 index 0000000..99df7e6 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass262.java.out @@ -0,0 +1,31 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "x" varname + . . . BinaryExpr + . . . "||" Operator + . . . BinaryExpr + . . . "&&" Operator + . . . LiteralExpr + . . . "false" BooleanLiteral + . . . BinaryExpr + . . . ">=" Operator + . . . LiteralExpr + . . . "2" IntLiteral + . . . LiteralExpr + . . . "3" IntLiteral + . . . LiteralExpr + . . . "true" BooleanLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass263.java b/miniJava/tests/pa2_tests/pass263.java new file mode 100644 index 0000000..23aa533 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass263.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f ( ) { + int x = 1 + 2 - 3 * 4 / 5 ; + } +} diff --git a/miniJava/tests/pa2_tests/pass263.java.out b/miniJava/tests/pa2_tests/pass263.java.out new file mode 100644 index 0000000..9449796 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass263.java.out @@ -0,0 +1,35 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . INT BaseType + . . . "x" varname + . . . BinaryExpr + . . . "-" Operator + . . . BinaryExpr + . . . "+" Operator + . . . LiteralExpr + . . . "1" IntLiteral + . . . LiteralExpr + . . . "2" IntLiteral + . . . BinaryExpr + . . . "/" Operator + . . . BinaryExpr + . . . "*" Operator + . . . LiteralExpr + . . . "3" IntLiteral + . . . LiteralExpr + . . . "4" IntLiteral + . . . LiteralExpr + . . . "5" IntLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass264.java b/miniJava/tests/pa2_tests/pass264.java new file mode 100644 index 0000000..3348dbe --- /dev/null +++ b/miniJava/tests/pa2_tests/pass264.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f ( ) { + boolean x = true || false && false || true == false; + } +} diff --git a/miniJava/tests/pa2_tests/pass264.java.out b/miniJava/tests/pa2_tests/pass264.java.out new file mode 100644 index 0000000..4679c18 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass264.java.out @@ -0,0 +1,35 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "x" varname + . . . BinaryExpr + . . . "||" Operator + . . . BinaryExpr + . . . "||" Operator + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . BinaryExpr + . . . "&&" Operator + . . . LiteralExpr + . . . "false" BooleanLiteral + . . . LiteralExpr + . . . "false" BooleanLiteral + . . . BinaryExpr + . . . "==" Operator + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . LiteralExpr + . . . "false" BooleanLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass265.java b/miniJava/tests/pa2_tests/pass265.java new file mode 100644 index 0000000..e642a53 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass265.java @@ -0,0 +1,6 @@ +// PA2 pass expr precedence +class A { + int f (){ + int d = 2+-x- -x; + } +} diff --git a/miniJava/tests/pa2_tests/pass265.java.out b/miniJava/tests/pa2_tests/pass265.java.out new file mode 100644 index 0000000..3ca3a9d --- /dev/null +++ b/miniJava/tests/pa2_tests/pass265.java.out @@ -0,0 +1,33 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . INT BaseType + . . "f" methodname + . . ParameterDeclList [0] + . . StmtList [1] + . . . VarDeclStmt + . . . VarDecl + . . . INT BaseType + . . . "d" varname + . . . BinaryExpr + . . . "-" Operator + . . . BinaryExpr + . . . "+" Operator + . . . LiteralExpr + . . . "2" IntLiteral + . . . UnaryExpr + . . . "-" Operator + . . . RefExpr + . . . IdRef + . . . "x" Identifier + . . . UnaryExpr + . . . "-" Operator + . . . RefExpr + . . . IdRef + . . . "x" Identifier +============================================= diff --git a/miniJava/tests/pa2_tests/pass290.java b/miniJava/tests/pa2_tests/pass290.java new file mode 100644 index 0000000..69552a0 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass290.java @@ -0,0 +1,8 @@ +// PA2 pass AST reflects operator precedence +class A { + public static void main(String [] args) { + // these two stmts should have the same expr AST + boolean b = false || true == 2 < -3 - 4 / 5 && !!false; + boolean b = false || ((true == (2 < ((-3) - (4 /5)))) && (!(!false))); + } +} diff --git a/miniJava/tests/pa2_tests/pass290.java.out b/miniJava/tests/pa2_tests/pass290.java.out new file mode 100644 index 0000000..3291d4a --- /dev/null +++ b/miniJava/tests/pa2_tests/pass290.java.out @@ -0,0 +1,90 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "A" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public static) MethodDecl + . . VOID BaseType + . . "main" methodname + . . ParameterDeclList [1] + . . . ParameterDecl + . . . ArrayType + . . . ClassType + . . . "String" classname + . . . "args"parametername + . . StmtList [2] + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "b" varname + . . . BinaryExpr + . . . "||" Operator + . . . LiteralExpr + . . . "false" BooleanLiteral + . . . BinaryExpr + . . . "&&" Operator + . . . BinaryExpr + . . . "==" Operator + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . BinaryExpr + . . . "<" Operator + . . . LiteralExpr + . . . "2" IntLiteral + . . . BinaryExpr + . . . "-" Operator + . . . UnaryExpr + . . . "-" Operator + . . . LiteralExpr + . . . "3" IntLiteral + . . . BinaryExpr + . . . "/" Operator + . . . LiteralExpr + . . . "4" IntLiteral + . . . LiteralExpr + . . . "5" IntLiteral + . . . UnaryExpr + . . . "!" Operator + . . . UnaryExpr + . . . "!" Operator + . . . LiteralExpr + . . . "false" BooleanLiteral + . . . VarDeclStmt + . . . VarDecl + . . . BOOLEAN BaseType + . . . "b" varname + . . . BinaryExpr + . . . "||" Operator + . . . LiteralExpr + . . . "false" BooleanLiteral + . . . BinaryExpr + . . . "&&" Operator + . . . BinaryExpr + . . . "==" Operator + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . BinaryExpr + . . . "<" Operator + . . . LiteralExpr + . . . "2" IntLiteral + . . . BinaryExpr + . . . "-" Operator + . . . UnaryExpr + . . . "-" Operator + . . . LiteralExpr + . . . "3" IntLiteral + . . . BinaryExpr + . . . "/" Operator + . . . LiteralExpr + . . . "4" IntLiteral + . . . LiteralExpr + . . . "5" IntLiteral + . . . UnaryExpr + . . . "!" Operator + . . . UnaryExpr + . . . "!" Operator + . . . LiteralExpr + . . . "false" BooleanLiteral +============================================= diff --git a/miniJava/tests/pa2_tests/pass291.java b/miniJava/tests/pa2_tests/pass291.java new file mode 100644 index 0000000..711d673 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass291.java @@ -0,0 +1,34 @@ +// PA2 pass AST reflects associativity of nested if stmts +class B { + public void foo() { + // nested if stmts should associate in order suggested + // by indentation + + if (b) + if (c) + x = 1; + else + x = 2; + else + if (d) + x = 11; + else + x = 22; + + + if (true) + if (false) + x = 3; + else + x = 4; + + + if (!true) + x = 33; + else + if (!false) + x = 44; + else + x = 55; + } +} diff --git a/miniJava/tests/pa2_tests/pass291.java.out b/miniJava/tests/pa2_tests/pass291.java.out new file mode 100644 index 0000000..829f868 --- /dev/null +++ b/miniJava/tests/pa2_tests/pass291.java.out @@ -0,0 +1,86 @@ +======= AST Display ========================= +Package + ClassDeclList [1] + . ClassDecl + . "B" classname + . FieldDeclList [0] + . MethodDeclList [1] + . . (public) MethodDecl + . . VOID BaseType + . . "foo" methodname + . . ParameterDeclList [0] + . . StmtList [3] + . . . IfStmt + . . . RefExpr + . . . IdRef + . . . "b" Identifier + . . . IfStmt + . . . RefExpr + . . . IdRef + . . . "c" Identifier + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . LiteralExpr + . . . "1" IntLiteral + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . LiteralExpr + . . . "2" IntLiteral + . . . IfStmt + . . . RefExpr + . . . IdRef + . . . "d" Identifier + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . LiteralExpr + . . . "11" IntLiteral + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . LiteralExpr + . . . "22" IntLiteral + . . . IfStmt + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . IfStmt + . . . LiteralExpr + . . . "false" BooleanLiteral + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . LiteralExpr + . . . "3" IntLiteral + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . LiteralExpr + . . . "4" IntLiteral + . . . IfStmt + . . . UnaryExpr + . . . "!" Operator + . . . LiteralExpr + . . . "true" BooleanLiteral + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . LiteralExpr + . . . "33" IntLiteral + . . . IfStmt + . . . UnaryExpr + . . . "!" Operator + . . . LiteralExpr + . . . "false" BooleanLiteral + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . LiteralExpr + . . . "44" IntLiteral + . . . AssignStmt + . . . IdRef + . . . "x" Identifier + . . . LiteralExpr + . . . "55" IntLiteral +=============================================