at.dms.kjc
Interface AttributeVisitor<T>

All Known Subinterfaces:
SLIRAttributeVisitor<T>
All Known Implementing Classes:
ArrayDestroyer, BlockFlattener, BranchAnalyzer, ConvertArrayInitializers, ConvertChannelExprs, ConvertCommunication, ConvertCommunicationSimple, ConvertPushesToMethCall, DataFlow, EmptyAttributeVisitor, IDDoLoops, IntroduceMultiPops, Kopi2SIR, Propagator, RemoveDeadDoLoops, RemoveMultiPops, RemoveUnusedVars, RenameAll, RenameDestroyedVars, ReplaceVarDecls, ReplacingVisitor, SeparatePushPop, SLIREmptyAttributeVisitor, SLIRReplacingVisitor, StatementQueueVisitor, StructDestroyer, Unroller, VarDeclRaiser

public interface AttributeVisitor<T>

Implementation of an Attributed Visitor Design Pattern for KJC.


Method Summary
 T visitArrayAccessExpression(JArrayAccessExpression self, JExpression prefix, JExpression accessor)
          visits an array length expression
 T visitArrayInitializer(JArrayInitializer self, JExpression[] elems)
          visits an array initializer expression
 T visitArrayLengthExpression(JArrayLengthExpression self, JExpression prefix)
          visits an array length expression
 T visitAssignmentExpression(JAssignmentExpression self, JExpression left, JExpression right)
          visits an assignment expression
 T visitBinaryExpression(JBinaryExpression self, String oper, JExpression left, JExpression right)
          visits an array allocator expression
 T visitBitwiseComplementExpression(JUnaryExpression self, JExpression expr)
          visits a bitwise complement expression
 T visitBitwiseExpression(JBitwiseExpression self, int oper, JExpression left, JExpression right)
          visits a compound assignment expression
 T visitBlockStatement(JBlock self, JavaStyleComment[] comments)
          visits an expression statement
 T visitBooleanLiteral(JBooleanLiteral self, boolean value)
          visits a boolean literal
 T visitBreakStatement(JBreakStatement self, String label)
          visits a break statement
 T visitByteLiteral(JByteLiteral self, byte value)
          visits a byte literal
 T visitCastExpression(JCastExpression self, JExpression expr, CType type)
          visits a cast expression
 T visitCatchClause(JCatchClause self, JFormalParameter exception, JBlock body)
          visits an array length expression
 T visitCharLiteral(JCharLiteral self, char value)
          visits a character literal
 T visitClassBody(JTypeDeclaration[] decls, JFieldDeclaration[] fields, JMethodDeclaration[] methods, JPhylum[] body)
          visits a class body
 T visitClassDeclaration(JClassDeclaration self, int modifiers, String ident, String superName, CClassType[] interfaces, JPhylum[] body, JFieldDeclaration[] fields, JMethodDeclaration[] methods, JTypeDeclaration[] decls)
          visits a class declaration
 T visitClassExpression(JClassExpression self, CType type)
          visits a class expression
 T visitClassImport(String name)
          visits a class import declaration
 T visitComment(JavaStyleComment comment)
          visits an array length expression
 T visitComments(JavaStyleComment[] comments)
          visits an array length expression
 T visitCompilationUnit(JCompilationUnit self, JPackageName packageName, JPackageImport[] importedPackages, JClassImport[] importedClasses, JTypeDeclaration[] typeDeclarations)
          visits a compilation unit
 T visitCompoundAssignmentExpression(JCompoundAssignmentExpression self, int oper, JExpression left, JExpression right)
          visits a compound expression
 T visitCompoundStatement(JCompoundStatement self, JStatement[] body)
          visits a compound statement
 T visitConditionalExpression(JConditionalExpression self, JExpression cond, JExpression left, JExpression right)
          visits a conditional expression
 T visitConstructorCall(JConstructorCall self, boolean functorIsThis, JExpression[] params)
          visits an array length expression
 T visitConstructorDeclaration(JConstructorDeclaration self, int modifiers, String ident, JFormalParameter[] parameters, CClassType[] exceptions, JConstructorBlock body)
          visits a method declaration
 T visitContinueStatement(JContinueStatement self, String label)
          visits a continue statement
 T visitDoStatement(JDoStatement self, JExpression cond, JStatement body)
          visits a do statement
 T visitDoubleLiteral(JDoubleLiteral self, double value)
          visits a double literal
 T visitEmittedTextExpression(JEmittedTextExpression self, Object[] parts)
          Visit text to be emitted unchanged in a compiler backend.
 T visitEmptyStatement(JEmptyStatement self)
          visits a empty statement
 T visitEqualityExpression(JEqualityExpression self, boolean equal, JExpression left, JExpression right)
          visits an equality expression
 T visitExpressionListStatement(JExpressionListStatement self, JExpression[] expr)
          visits an expression list statement
 T visitExpressionStatement(JExpressionStatement self, JExpression expr)
          visits an expression statement
 T visitFieldDeclaration(JFieldDeclaration self, int modifiers, CType type, String ident, JExpression expr)
          visits a field declaration
 T visitFieldExpression(JFieldAccessExpression self, JExpression left, String ident)
          visits a field expression
 T visitFloatLiteral(JFloatLiteral self, float value)
          visits a float literal
 T visitFormalParameters(JFormalParameter self, boolean isFinal, CType type, String ident)
          visits an array length expression
 T visitForStatement(JForStatement self, JStatement init, JExpression cond, JStatement incr, JStatement body)
          visits a for statement
 T visitIfStatement(JIfStatement self, JExpression cond, JStatement thenClause, JStatement elseClause)
          visits a if statement
 T visitInnerClassDeclaration(JClassDeclaration self, int modifiers, String ident, String superName, CClassType[] interfaces, JTypeDeclaration[] decls, JPhylum[] body, JFieldDeclaration[] fields, JMethodDeclaration[] methods)
          visits a class declaration
 T visitInstanceofExpression(JInstanceofExpression self, JExpression expr, CType dest)
          visits an instanceof expression
 T visitInterfaceDeclaration(JInterfaceDeclaration self, int modifiers, String ident, CClassType[] interfaces, JPhylum[] body, JMethodDeclaration[] methods)
          visits an interface declaration
 T visitIntLiteral(JIntLiteral self, int value)
          visits a int literal
 T visitJavadoc(JavadocComment comment)
          visits an array length expression
 T visitLabeledStatement(JLabeledStatement self, String label, JStatement stmt)
          visits a labeled statement
 T visitLocalVariableExpression(JLocalVariableExpression self, String ident)
          visits a local variable expression
 T visitLogicalComplementExpression(JUnaryExpression self, JExpression expr)
          visits a logical complement expression
 T visitLongLiteral(JLongLiteral self, long value)
          visits a long literal
 T visitMethodCallExpression(JMethodCallExpression self, JExpression prefix, String ident, JExpression[] args)
          visits a method call expression
 T visitMethodDeclaration(JMethodDeclaration self, int modifiers, CType returnType, String ident, JFormalParameter[] parameters, CClassType[] exceptions, JBlock body)
          visits a method declaration
 T visitNameExpression(JNameExpression self, JExpression prefix, String ident)
          visits a name expression
 T visitNewArrayExpression(JNewArrayExpression self, CType type, JExpression[] dims, JArrayInitializer init)
          visits an array allocator expression
 T visitNullLiteral(JNullLiteral self)
          visits a null literal
 T visitPackageImport(String name)
          visits a package import declaration
 T visitPackageName(String name)
          visits a package name declaration
 T visitParenthesedExpression(JParenthesedExpression self, JExpression expr)
          visits a parenthesed expression
 T visitPostfixExpression(JPostfixExpression self, int oper, JExpression expr)
          visits a postfix expression
 T visitPrefixExpression(JPrefixExpression self, int oper, JExpression expr)
          visits a prefix expression
 T visitQualifiedAnonymousCreation(JQualifiedAnonymousCreation self, JExpression prefix, String ident, JExpression[] params, JClassDeclaration decl)
          Visits an unqualified anonymous class instance creation expression.
 T visitQualifiedInstanceCreation(JQualifiedInstanceCreation self, JExpression prefix, String ident, JExpression[] params)
          Visits an unqualified instance creation expression.
 T visitRelationalExpression(JRelationalExpression self, int oper, JExpression left, JExpression right)
          visits a shift expressiona
 T visitReturnStatement(JReturnStatement self, JExpression expr)
          visits a return statement
 T visitShiftExpression(JShiftExpression self, int oper, JExpression left, JExpression right)
          visits a shift expression
 T visitShortLiteral(JShortLiteral self, short value)
          visits a short literal
 T visitStringLiteral(JStringLiteral self, String value)
          visits a string literal
 T visitSuperExpression(JSuperExpression self)
          visits a super expression
 T visitSwitchGroup(JSwitchGroup self, JSwitchLabel[] labels, JStatement[] stmts)
          visits an array length expression
 T visitSwitchLabel(JSwitchLabel self, JExpression expr)
          visits an array length expression
 T visitSwitchStatement(JSwitchStatement self, JExpression expr, JSwitchGroup[] body)
          visits a switch statement
 T visitSynchronizedStatement(JSynchronizedStatement self, JExpression cond, JStatement body)
          visits a synchronized statement
 T visitThisExpression(JThisExpression self, JExpression prefix)
          visits a this expression
 T visitThrowStatement(JThrowStatement self, JExpression expr)
          visits a throw statement
 T visitTryCatchStatement(JTryCatchStatement self, JBlock tryClause, JCatchClause[] catchClauses)
          visits a try-catch statement
 T visitTryFinallyStatement(JTryFinallyStatement self, JBlock tryClause, JBlock finallyClause)
          visits a try-finally statement
 T visitTypeDeclarationStatement(JTypeDeclarationStatement self, JTypeDeclaration decl)
          visits a type declaration statement
 T visitTypeNameExpression(JTypeNameExpression self, CType type)
          visits a type name expression
 T visitUnaryMinusExpression(JUnaryExpression self, JExpression expr)
          visits an unary minus expression
 T visitUnaryPlusExpression(JUnaryExpression self, JExpression expr)
          visits an unary plus expression
 T visitUnaryPromoteExpression(JUnaryPromote self, JExpression expr, CType type)
          visits a cast expression
 T visitUnqualifiedAnonymousCreation(JUnqualifiedAnonymousCreation self, CClassType type, JExpression[] params, JClassDeclaration decl)
          Visits an unqualified anonymous class instance creation expression.
 T visitUnqualifiedInstanceCreation(JUnqualifiedInstanceCreation self, CClassType type, JExpression[] params)
          Visits an unqualified instance creation expression.
 T visitVariableDeclarationStatement(JVariableDeclarationStatement self, JVariableDefinition[] vars)
          visits a variable declaration statement
 T visitVariableDefinition(JVariableDefinition self, int modifiers, CType type, String ident, JExpression expr)
          visits a variable declaration statement
 T visitWhileStatement(JWhileStatement self, JExpression cond, JStatement body)
          visits a while statement
 

Method Detail

visitCompilationUnit

T visitCompilationUnit(JCompilationUnit self,
                       JPackageName packageName,
                       JPackageImport[] importedPackages,
                       JClassImport[] importedClasses,
                       JTypeDeclaration[] typeDeclarations)
visits a compilation unit


visitClassDeclaration

T visitClassDeclaration(JClassDeclaration self,
                        int modifiers,
                        String ident,
                        String superName,
                        CClassType[] interfaces,
                        JPhylum[] body,
                        JFieldDeclaration[] fields,
                        JMethodDeclaration[] methods,
                        JTypeDeclaration[] decls)
visits a class declaration


visitClassBody

T visitClassBody(JTypeDeclaration[] decls,
                 JFieldDeclaration[] fields,
                 JMethodDeclaration[] methods,
                 JPhylum[] body)
visits a class body


visitInnerClassDeclaration

T visitInnerClassDeclaration(JClassDeclaration self,
                             int modifiers,
                             String ident,
                             String superName,
                             CClassType[] interfaces,
                             JTypeDeclaration[] decls,
                             JPhylum[] body,
                             JFieldDeclaration[] fields,
                             JMethodDeclaration[] methods)
visits a class declaration


visitInterfaceDeclaration

T visitInterfaceDeclaration(JInterfaceDeclaration self,
                            int modifiers,
                            String ident,
                            CClassType[] interfaces,
                            JPhylum[] body,
                            JMethodDeclaration[] methods)
visits an interface declaration


visitFieldDeclaration

T visitFieldDeclaration(JFieldDeclaration self,
                        int modifiers,
                        CType type,
                        String ident,
                        JExpression expr)
visits a field declaration


visitMethodDeclaration

T visitMethodDeclaration(JMethodDeclaration self,
                         int modifiers,
                         CType returnType,
                         String ident,
                         JFormalParameter[] parameters,
                         CClassType[] exceptions,
                         JBlock body)
visits a method declaration


visitConstructorDeclaration

T visitConstructorDeclaration(JConstructorDeclaration self,
                              int modifiers,
                              String ident,
                              JFormalParameter[] parameters,
                              CClassType[] exceptions,
                              JConstructorBlock body)
visits a method declaration


visitWhileStatement

T visitWhileStatement(JWhileStatement self,
                      JExpression cond,
                      JStatement body)
visits a while statement


visitVariableDeclarationStatement

T visitVariableDeclarationStatement(JVariableDeclarationStatement self,
                                    JVariableDefinition[] vars)
visits a variable declaration statement


visitVariableDefinition

T visitVariableDefinition(JVariableDefinition self,
                          int modifiers,
                          CType type,
                          String ident,
                          JExpression expr)
visits a variable declaration statement


visitTryCatchStatement

T visitTryCatchStatement(JTryCatchStatement self,
                         JBlock tryClause,
                         JCatchClause[] catchClauses)
visits a try-catch statement


visitTryFinallyStatement

T visitTryFinallyStatement(JTryFinallyStatement self,
                           JBlock tryClause,
                           JBlock finallyClause)
visits a try-finally statement


visitThrowStatement

T visitThrowStatement(JThrowStatement self,
                      JExpression expr)
visits a throw statement


visitSynchronizedStatement

T visitSynchronizedStatement(JSynchronizedStatement self,
                             JExpression cond,
                             JStatement body)
visits a synchronized statement


visitSwitchStatement

T visitSwitchStatement(JSwitchStatement self,
                       JExpression expr,
                       JSwitchGroup[] body)
visits a switch statement


visitReturnStatement

T visitReturnStatement(JReturnStatement self,
                       JExpression expr)
visits a return statement


visitLabeledStatement

T visitLabeledStatement(JLabeledStatement self,
                        String label,
                        JStatement stmt)
visits a labeled statement


visitIfStatement

T visitIfStatement(JIfStatement self,
                   JExpression cond,
                   JStatement thenClause,
                   JStatement elseClause)
visits a if statement


visitForStatement

T visitForStatement(JForStatement self,
                    JStatement init,
                    JExpression cond,
                    JStatement incr,
                    JStatement body)
visits a for statement


visitCompoundStatement

T visitCompoundStatement(JCompoundStatement self,
                         JStatement[] body)
visits a compound statement


visitExpressionStatement

T visitExpressionStatement(JExpressionStatement self,
                           JExpression expr)
visits an expression statement


visitExpressionListStatement

T visitExpressionListStatement(JExpressionListStatement self,
                               JExpression[] expr)
visits an expression list statement


visitEmptyStatement

T visitEmptyStatement(JEmptyStatement self)
visits a empty statement


visitDoStatement

T visitDoStatement(JDoStatement self,
                   JExpression cond,
                   JStatement body)
visits a do statement


visitContinueStatement

T visitContinueStatement(JContinueStatement self,
                         String label)
visits a continue statement


visitBreakStatement

T visitBreakStatement(JBreakStatement self,
                      String label)
visits a break statement


visitBlockStatement

T visitBlockStatement(JBlock self,
                      JavaStyleComment[] comments)
visits an expression statement


visitTypeDeclarationStatement

T visitTypeDeclarationStatement(JTypeDeclarationStatement self,
                                JTypeDeclaration decl)
visits a type declaration statement


visitUnaryPlusExpression

T visitUnaryPlusExpression(JUnaryExpression self,
                           JExpression expr)
visits an unary plus expression


visitUnaryMinusExpression

T visitUnaryMinusExpression(JUnaryExpression self,
                            JExpression expr)
visits an unary minus expression


visitBitwiseComplementExpression

T visitBitwiseComplementExpression(JUnaryExpression self,
                                   JExpression expr)
visits a bitwise complement expression


visitLogicalComplementExpression

T visitLogicalComplementExpression(JUnaryExpression self,
                                   JExpression expr)
visits a logical complement expression


visitTypeNameExpression

T visitTypeNameExpression(JTypeNameExpression self,
                          CType type)
visits a type name expression


visitThisExpression

T visitThisExpression(JThisExpression self,
                      JExpression prefix)
visits a this expression


visitSuperExpression

T visitSuperExpression(JSuperExpression self)
visits a super expression


visitShiftExpression

T visitShiftExpression(JShiftExpression self,
                       int oper,
                       JExpression left,
                       JExpression right)
visits a shift expression


visitRelationalExpression

T visitRelationalExpression(JRelationalExpression self,
                            int oper,
                            JExpression left,
                            JExpression right)
visits a shift expressiona


visitPrefixExpression

T visitPrefixExpression(JPrefixExpression self,
                        int oper,
                        JExpression expr)
visits a prefix expression


visitPostfixExpression

T visitPostfixExpression(JPostfixExpression self,
                         int oper,
                         JExpression expr)
visits a postfix expression


visitParenthesedExpression

T visitParenthesedExpression(JParenthesedExpression self,
                             JExpression expr)
visits a parenthesed expression


visitQualifiedAnonymousCreation

T visitQualifiedAnonymousCreation(JQualifiedAnonymousCreation self,
                                  JExpression prefix,
                                  String ident,
                                  JExpression[] params,
                                  JClassDeclaration decl)
Visits an unqualified anonymous class instance creation expression.


visitQualifiedInstanceCreation

T visitQualifiedInstanceCreation(JQualifiedInstanceCreation self,
                                 JExpression prefix,
                                 String ident,
                                 JExpression[] params)
Visits an unqualified instance creation expression.


visitUnqualifiedAnonymousCreation

T visitUnqualifiedAnonymousCreation(JUnqualifiedAnonymousCreation self,
                                    CClassType type,
                                    JExpression[] params,
                                    JClassDeclaration decl)
Visits an unqualified anonymous class instance creation expression.


visitUnqualifiedInstanceCreation

T visitUnqualifiedInstanceCreation(JUnqualifiedInstanceCreation self,
                                   CClassType type,
                                   JExpression[] params)
Visits an unqualified instance creation expression.


visitNewArrayExpression

T visitNewArrayExpression(JNewArrayExpression self,
                          CType type,
                          JExpression[] dims,
                          JArrayInitializer init)
visits an array allocator expression


visitNameExpression

T visitNameExpression(JNameExpression self,
                      JExpression prefix,
                      String ident)
visits a name expression


visitBinaryExpression

T visitBinaryExpression(JBinaryExpression self,
                        String oper,
                        JExpression left,
                        JExpression right)
visits an array allocator expression


visitMethodCallExpression

T visitMethodCallExpression(JMethodCallExpression self,
                            JExpression prefix,
                            String ident,
                            JExpression[] args)
visits a method call expression


visitLocalVariableExpression

T visitLocalVariableExpression(JLocalVariableExpression self,
                               String ident)
visits a local variable expression


visitInstanceofExpression

T visitInstanceofExpression(JInstanceofExpression self,
                            JExpression expr,
                            CType dest)
visits an instanceof expression


visitEqualityExpression

T visitEqualityExpression(JEqualityExpression self,
                          boolean equal,
                          JExpression left,
                          JExpression right)
visits an equality expression


visitConditionalExpression

T visitConditionalExpression(JConditionalExpression self,
                             JExpression cond,
                             JExpression left,
                             JExpression right)
visits a conditional expression


visitCompoundAssignmentExpression

T visitCompoundAssignmentExpression(JCompoundAssignmentExpression self,
                                    int oper,
                                    JExpression left,
                                    JExpression right)
visits a compound expression


visitFieldExpression

T visitFieldExpression(JFieldAccessExpression self,
                       JExpression left,
                       String ident)
visits a field expression


visitClassExpression

T visitClassExpression(JClassExpression self,
                       CType type)
visits a class expression


visitCastExpression

T visitCastExpression(JCastExpression self,
                      JExpression expr,
                      CType type)
visits a cast expression


visitUnaryPromoteExpression

T visitUnaryPromoteExpression(JUnaryPromote self,
                              JExpression expr,
                              CType type)
visits a cast expression


visitBitwiseExpression

T visitBitwiseExpression(JBitwiseExpression self,
                         int oper,
                         JExpression left,
                         JExpression right)
visits a compound assignment expression


visitAssignmentExpression

T visitAssignmentExpression(JAssignmentExpression self,
                            JExpression left,
                            JExpression right)
visits an assignment expression


visitArrayLengthExpression

T visitArrayLengthExpression(JArrayLengthExpression self,
                             JExpression prefix)
visits an array length expression


visitArrayAccessExpression

T visitArrayAccessExpression(JArrayAccessExpression self,
                             JExpression prefix,
                             JExpression accessor)
visits an array length expression


visitEmittedTextExpression

T visitEmittedTextExpression(JEmittedTextExpression self,
                             Object[] parts)
Visit text to be emitted unchanged in a compiler backend.

Parameters:
parts - a list of embedded objects which might include JExpressions.

visitComments

T visitComments(JavaStyleComment[] comments)
visits an array length expression


visitComment

T visitComment(JavaStyleComment comment)
visits an array length expression


visitJavadoc

T visitJavadoc(JavadocComment comment)
visits an array length expression


visitSwitchLabel

T visitSwitchLabel(JSwitchLabel self,
                   JExpression expr)
visits an array length expression


visitSwitchGroup

T visitSwitchGroup(JSwitchGroup self,
                   JSwitchLabel[] labels,
                   JStatement[] stmts)
visits an array length expression


visitCatchClause

T visitCatchClause(JCatchClause self,
                   JFormalParameter exception,
                   JBlock body)
visits an array length expression


visitFormalParameters

T visitFormalParameters(JFormalParameter self,
                        boolean isFinal,
                        CType type,
                        String ident)
visits an array length expression


visitConstructorCall

T visitConstructorCall(JConstructorCall self,
                       boolean functorIsThis,
                       JExpression[] params)
visits an array length expression


visitArrayInitializer

T visitArrayInitializer(JArrayInitializer self,
                        JExpression[] elems)
visits an array initializer expression


visitBooleanLiteral

T visitBooleanLiteral(JBooleanLiteral self,
                      boolean value)
visits a boolean literal


visitByteLiteral

T visitByteLiteral(JByteLiteral self,
                   byte value)
visits a byte literal


visitCharLiteral

T visitCharLiteral(JCharLiteral self,
                   char value)
visits a character literal


visitDoubleLiteral

T visitDoubleLiteral(JDoubleLiteral self,
                     double value)
visits a double literal


visitFloatLiteral

T visitFloatLiteral(JFloatLiteral self,
                    float value)
visits a float literal


visitIntLiteral

T visitIntLiteral(JIntLiteral self,
                  int value)
visits a int literal


visitLongLiteral

T visitLongLiteral(JLongLiteral self,
                   long value)
visits a long literal


visitShortLiteral

T visitShortLiteral(JShortLiteral self,
                    short value)
visits a short literal


visitStringLiteral

T visitStringLiteral(JStringLiteral self,
                     String value)
visits a string literal


visitNullLiteral

T visitNullLiteral(JNullLiteral self)
visits a null literal


visitPackageName

T visitPackageName(String name)
visits a package name declaration


visitPackageImport

T visitPackageImport(String name)
visits a package import declaration


visitClassImport

T visitClassImport(String name)
visits a class import declaration