exp -> new QS() exp -> 10 expRests -> expList -> exp -> exp Start(expList) statement -> System.out.println( exp ) ; mainClass -> class QuickSort{ public static void main ( String[] a) { statement } } varDecs -> type -> int[] varDecs -> type -> int varDecs -> type -> int type -> int formalRests -> formalList -> varDecs -> type -> int varDecs -> exp -> this exp -> sz expRests -> expList -> exp -> exp Init(expList) statement -> aux01 = exp ; exp -> this expList -> exp -> exp Print(expList) statement -> aux01 = exp ; exp -> 9999 statement -> System.out.println( exp ) ; exp -> size exp -> 1 exp -> exp - exp statement -> aux01 = exp ; exp -> this exp -> 0 exp -> aux01 expRests -> expRests -> expList -> exp -> exp Sort(expList) statement -> aux01 = exp ; exp -> this expList -> exp -> exp Print(expList) statement -> aux01 = exp ; statements -> statements -> statements -> statements -> statements -> statements -> statements -> exp -> 0 methodDec -> public type Start( formalList ) { varDecs statements return exp ; } type -> int type -> int type -> int formalRests -> formalRests -> formalList -> varDecs -> type -> int varDecs -> type -> int varDecs -> type -> int varDecs -> type -> int varDecs -> type -> int varDecs -> type -> boolean varDecs -> type -> boolean varDecs -> type -> int varDecs -> exp -> 0 statement -> t = exp ; exp -> left exp -> right exp -> exp < exp exp -> number exp -> right exp -> exp[exp] statement -> v = exp ; exp -> left exp -> 1 exp -> exp - exp statement -> i = exp ; exp -> right statement -> j = exp ; exp -> true statement -> cont01 = exp ; exp -> cont01 exp -> true statement -> cont02 = exp ; exp -> cont02 exp -> i exp -> 1 exp -> exp + exp statement -> i = exp ; exp -> number exp -> i exp -> exp[exp] statement -> aux03 = exp ; exp -> aux03 exp -> v exp -> exp < exp exp -> (exp) exp -> !exp exp -> false statement -> cont02 = exp ; exp -> true statement -> cont02 = exp ; statement -> if ( exp ) statement else statement statements -> statements -> statements -> statements -> statement -> { statements } statement -> while ( exp ) statement exp -> true statement -> cont02 = exp ; exp -> cont02 exp -> j exp -> 1 exp -> exp - exp statement -> j = exp ; exp -> number exp -> j exp -> exp[exp] statement -> aux03 = exp ; exp -> v exp -> aux03 exp -> exp < exp exp -> (exp) exp -> !exp exp -> false statement -> cont02 = exp ; exp -> true statement -> cont02 = exp ; statement -> if ( exp ) statement else statement statements -> statements -> statements -> statements -> statement -> { statements } statement -> while ( exp ) statement exp -> number exp -> i exp -> exp[exp] statement -> t = exp ; exp -> i exp -> number exp -> j exp -> exp[exp] statement -> number[exp] = exp ; exp -> j exp -> t statement -> number[exp] = exp ; exp -> j exp -> i exp -> 1 exp -> exp + exp exp -> (exp) exp -> exp < exp exp -> false statement -> cont01 = exp ; exp -> true statement -> cont01 = exp ; statement -> if ( exp ) statement else statement statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statement -> { statements } statement -> while ( exp ) statement exp -> j exp -> number exp -> i exp -> exp[exp] statement -> number[exp] = exp ; exp -> i exp -> number exp -> right exp -> exp[exp] statement -> number[exp] = exp ; exp -> right exp -> t statement -> number[exp] = exp ; exp -> this exp -> left exp -> i exp -> 1 exp -> exp - exp expRests -> expRests -> expList -> exp -> exp Sort(expList) statement -> nt = exp ; exp -> this exp -> i exp -> 1 exp -> exp + exp exp -> right expRests -> expRests -> expList -> exp -> exp Sort(expList) statement -> nt = exp ; statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statement -> { statements } exp -> 0 statement -> nt = exp ; statement -> if ( exp ) statement else statement statements -> statements -> statements -> exp -> 0 methodDec -> public type Sort( formalList ) { varDecs statements return exp ; } type -> int formalList -> varDecs -> type -> int varDecs -> exp -> 0 statement -> j = exp ; exp -> j exp -> size exp -> (exp) exp -> exp < exp exp -> number exp -> j exp -> exp[exp] statement -> System.out.println( exp ) ; exp -> j exp -> 1 exp -> exp + exp statement -> j = exp ; statements -> statements -> statements -> statement -> { statements } statement -> while ( exp ) statement statements -> statements -> statements -> exp -> 0 methodDec -> public type Print( formalList ) { varDecs statements return exp ; } type -> int type -> int formalRests -> formalList -> varDecs -> exp -> sz statement -> size = exp ; exp -> sz exp -> new int[exp] statement -> number = exp ; exp -> 0 exp -> 20 statement -> number[exp] = exp ; exp -> 1 exp -> 7 statement -> number[exp] = exp ; exp -> 2 exp -> 12 statement -> number[exp] = exp ; exp -> 3 exp -> 18 statement -> number[exp] = exp ; exp -> 4 exp -> 2 statement -> number[exp] = exp ; exp -> 5 exp -> 11 statement -> number[exp] = exp ; exp -> 6 exp -> 6 statement -> number[exp] = exp ; exp -> 7 exp -> 9 statement -> number[exp] = exp ; exp -> 8 exp -> 19 statement -> number[exp] = exp ; exp -> 9 exp -> 5 statement -> number[exp] = exp ; statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> statements -> exp -> 0 methodDec -> public type Init( formalList ) { varDecs statements return exp ; } methodDecs -> methodDecs -> methodDecs -> methodDecs -> methodDecs -> classDec -> class QS{ varDecs methodDecs } classDecs -> classDecs -> classDec classDecs program -> mainClass classDecs