exp -> new Fac() exp -> 10 expRests -> expList -> exp -> exp ComputeFac(expList) statement -> System.out.println( exp ) ; mainClass -> class Factorial{ public static void main ( String[] a) { statement } } varDecs -> type -> int type -> int formalRests -> formalList -> varDecs -> type -> int varDecs -> exp -> num exp -> 1 exp -> exp < exp exp -> 1 statement -> num_aux = exp ; exp -> num exp -> this exp -> num exp -> 1 exp -> exp - exp expRests -> expList -> exp -> exp ComputeFac(expList) exp -> (exp) exp -> exp * exp statement -> num_aux = exp ; statement -> if ( exp ) statement else statement statements -> statements -> exp -> num_aux methodDec -> public type ComputeFac( formalList ) { varDecs statements return exp ; } methodDecs -> methodDecs -> classDec -> class Fac{ varDecs methodDecs } classDecs -> classDecs -> classDec classDecs program -> mainClass classDecs