public void caseAFile(AFile node) { inAFile(node); { Object temp[] = node.getModifier().toArray(); for (int i = 0; i < temp.length; i++) { ((PModifier) temp[i]).apply(this); } } if (node.getFileType() != null) { node.getFileType().apply(this); } if (node.getClassName() != null) { node.getClassName().apply(this); } String className = (String) mProductions.removeLast(); if (mSootClass == null) { mSootClass = new SootClass(className); mSootClass.setResolvingLevel(SootClass.BODIES); } else { if (!mSootClass.getName().equals(className)) throw new RuntimeException( "Invalid SootClass for this JimpleAST. The SootClass provided is of type: >" + mSootClass.getName() + "< whereas this parse tree is for type: >" + className + "<"); } if (node.getExtendsClause() != null) { node.getExtendsClause().apply(this); } if (node.getImplementsClause() != null) { node.getImplementsClause().apply(this); } if (node.getFileBody() != null) { node.getFileBody().apply(this); } outAFile(node); }
/* file = modifier* file_type class_name extends_clause? implements_clause? file_body; */ public void inAFile(AFile node) { if (debug) G.v().out.println("reading class " + node.getClassName()); }