|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectat.dms.kjc.KjcEmptyVisitor
at.dms.kjc.SLIREmptyVisitor
at.dms.kjc.common.ToCCommon
public abstract class ToCCommon
Somewhat artificial class to provide common code for at.dms.kjc.common.ToC and at.dms.kjc.lir.LIRToC Hopefully keep from having to fix some bugs twice.
| Field Summary | |
|---|---|
static boolean |
alternatePrintsForTiming
|
protected boolean |
hasBoolType
For C code generation, the Java type 'boolean' will be printed as 'int' For C++ code generation, set hasBoolType = true; to print the Java type 'boolean' as 'bool' |
protected JExpression |
lastLeft
Needed to pass info from assignment to visitNewArray * |
protected CodegenPrintWriter |
p
Object with useful print routines |
protected static Map<String,String> |
printPostfixMap
Print postfixes: defaults to ");" useful for printing boolean. |
protected static Map<String,String> |
printPrefixMap
Controls visitPrintStatement. |
| Fields inherited from interface at.dms.kjc.Constants |
|---|
CMP_VERSION, JAV_CLASS, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_THIS, JAV_THROWABLE, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LE, OPE_LNOT, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BIT, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VECTOR, TID_VOID, VECTOR_EMPTY |
| Constructor Summary | |
|---|---|
protected |
ToCCommon()
With no parameters: create a new string TabbedPrintWriter for output |
protected |
ToCCommon(CodegenPrintWriter p)
With a TabbedPrintWriter: use the given TabbedPrintWriter for output and start off with no indentation yet. |
| Method Summary | |
|---|---|
CodegenPrintWriter |
getPrinter()
Make sure anyone can get the printer to insert code generated outside of a descendant of this class. |
String[] |
makeArrayStrings(JPhylum[] dims)
Generate an array of code strings for an array of JPhylums. |
String |
makeString(JPhylum e)
Generate a code string for a JExpression or JStatement |
protected void |
printDecl(CType s,
String ident)
Prints a declaration for the given type with the given identifier. |
protected boolean |
printExp(JExpression expr)
|
protected void |
printLParen()
Print a left parenthesis if not in statement context. |
protected void |
printRParen()
Print a right parenthesis if not in statement context. |
protected void |
printType(CType s)
Print a CType. |
protected List<JExpression> |
splitForPrint(JExpression exp)
Split expression into list of expressions for print. |
void |
visitBitwiseComplementExpression(JUnaryExpression self,
JExpression expr)
prints a bitwise complement expression |
void |
visitBlockStatement(JBlock self,
JavaStyleComment[] comments)
prints an block statement |
void |
visitBreakStatement(JBreakStatement self,
String label)
prints a break statement |
void |
visitCastExpression(JCastExpression self,
JExpression expr,
CType type)
prints a cast expression |
void |
visitClassExpression(JClassExpression self,
CType type)
Print a class Name. |
void |
visitCompoundAssignmentExpression(JCompoundAssignmentExpression self,
int oper,
JExpression left,
JExpression right)
prints a compound expression |
void |
visitCompoundStatement(JCompoundStatement self,
JStatement[] body)
prints a compound statement: 2-argument form |
void |
visitCompoundStatement(JStatement[] body)
prints a compound statement |
void |
visitConditionalExpression(JConditionalExpression self,
JExpression cond,
JExpression left,
JExpression right)
prints a conditional expression |
void |
visitContinueStatement(JContinueStatement self,
String label)
prints a continue statement |
void |
visitDoStatement(JDoStatement self,
JExpression cond,
JStatement body)
prints a do statement |
void |
visitEmittedTextExpression(JEmittedTextExpression self,
Object[] parts)
Code generation for JEmittedTextExpression: bits of text, types, subexpressions emitted in order. |
void |
visitEmptyStatement(JEmptyStatement self)
Emits code for an empty statement. |
void |
visitEqualityExpression(JEqualityExpression self,
boolean equal,
JExpression left,
JExpression right)
prints an equality expression |
void |
visitExpressionListStatement(JExpressionListStatement self,
JExpression[] expr)
prints an expression list statement |
void |
visitExpressionStatement(JExpressionStatement self,
JExpression expr)
prints an expression statement |
void |
visitForStatement(JForStatement self,
JStatement init,
JExpression cond,
JStatement incr,
JStatement body)
Emit code for a "for" statement. |
void |
visitLabeledStatement(JLabeledStatement self,
String label,
JStatement stmt)
prints a labeled statement |
void |
visitLocalVariableExpression(JLocalVariableExpression self,
String ident)
prints a local variable expression |
void |
visitLogicalComplementExpression(JUnaryExpression self,
JExpression expr)
prints a logical complement expression |
void |
visitMarker(SIRMarker self)
Print marker as a comment. |
void |
visitParenthesedExpression(JParenthesedExpression self,
JExpression expr)
prints a parenthesed expression |
void |
visitPostfixExpression(JPostfixExpression self,
int oper,
JExpression expr)
prints a postfix expression |
void |
visitPrefixExpression(JPrefixExpression self,
int oper,
JExpression expr)
prints a prefix expression |
void |
visitPrintStatement(SIRPrintStatement self,
JExpression exp)
Process a Print statment, table driven to allow several backends Deals with the problem of string concatenation in Java not translating to our output languages C or C++ |
void |
visitReturnStatement(JReturnStatement self,
JExpression expr)
prints a return statement |
void |
visitShiftExpression(JShiftExpression self,
int oper,
JExpression left,
JExpression right)
prints a shift expression |
void |
visitSwitchStatement(JSwitchStatement self,
JExpression expr,
JSwitchGroup[] body)
prints a switch statement |
void |
visitTypeDeclarationStatement(JTypeDeclarationStatement self,
JTypeDeclaration decl)
prints a type declaration statement |
void |
visitTypeNameExpression(JTypeNameExpression self,
CType type)
prints a type name expression |
void |
visitUnaryMinusExpression(JUnaryExpression self,
JExpression expr)
prints an unary minus expression |
void |
visitUnaryPlusExpression(JUnaryExpression self,
JExpression expr)
prints an unary plus expression |
void |
visitUnaryPromoteExpression(JUnaryPromote self,
JExpression expr,
CType type)
prints a cast expression |
void |
visitVariableDeclarationStatement(JVariableDeclarationStatement self,
JVariableDefinition[] vars)
prints a variable declaration statement |
void |
visitWhileStatement(JWhileStatement self,
JExpression cond,
JStatement body)
prints a while statement |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static boolean alternatePrintsForTiming
protected static Map<String,String> printPrefixMap
protected static Map<String,String> printPostfixMap
protected JExpression lastLeft
protected CodegenPrintWriter p
protected boolean hasBoolType
| Constructor Detail |
|---|
protected ToCCommon()
protected ToCCommon(CodegenPrintWriter p)
| Method Detail |
|---|
public CodegenPrintWriter getPrinter()
protected void printLParen()
protected void printRParen()
public String makeString(JPhylum e)
usage:
(new mySubClass()).makeString(e);
e - a JPhylum (superclass of Jexpression and Jstatement)
public String[] makeArrayStrings(JPhylum[] dims)
usual usage:
String[] dims_code = (new mySubClass()).makeArrayStrings(((CArrayType)type).getDims());
or, if called from a within an object method of a subclass:
String[] dims_code = this.makeArrayStrings(((CArrayType)type).getDims());
dims - an array of JExpression
public void visitForStatement(JForStatement self,
JStatement init,
JExpression cond,
JStatement incr,
JStatement body)
visitForStatement in interface KjcVisitorvisitForStatement in class KjcEmptyVisitorpublic void visitEmptyStatement(JEmptyStatement self)
visitEmptyStatement in interface KjcVisitorvisitEmptyStatement in class KjcEmptyVisitor
public void visitWhileStatement(JWhileStatement self,
JExpression cond,
JStatement body)
visitWhileStatement in interface KjcVisitorvisitWhileStatement in class KjcEmptyVisitor
public void visitVariableDeclarationStatement(JVariableDeclarationStatement self,
JVariableDefinition[] vars)
visitVariableDeclarationStatement in interface KjcVisitorvisitVariableDeclarationStatement in class KjcEmptyVisitor
public void visitSwitchStatement(JSwitchStatement self,
JExpression expr,
JSwitchGroup[] body)
visitSwitchStatement in interface KjcVisitorvisitSwitchStatement in class KjcEmptyVisitor
public void visitReturnStatement(JReturnStatement self,
JExpression expr)
visitReturnStatement in interface KjcVisitorvisitReturnStatement in class KjcEmptyVisitor
public void visitLabeledStatement(JLabeledStatement self,
String label,
JStatement stmt)
visitLabeledStatement in interface KjcVisitorvisitLabeledStatement in class KjcEmptyVisitor
public void visitCompoundStatement(JCompoundStatement self,
JStatement[] body)
visitCompoundStatement in interface KjcVisitorvisitCompoundStatement in class KjcEmptyVisitor
public void visitExpressionStatement(JExpressionStatement self,
JExpression expr)
visitExpressionStatement in interface KjcVisitorvisitExpressionStatement in class KjcEmptyVisitor
public void visitExpressionListStatement(JExpressionListStatement self,
JExpression[] expr)
visitExpressionListStatement in interface KjcVisitorvisitExpressionListStatement in class KjcEmptyVisitor
public void visitDoStatement(JDoStatement self,
JExpression cond,
JStatement body)
visitDoStatement in interface KjcVisitorvisitDoStatement in class KjcEmptyVisitor
public void visitContinueStatement(JContinueStatement self,
String label)
visitContinueStatement in interface KjcVisitorvisitContinueStatement in class KjcEmptyVisitor
public void visitBreakStatement(JBreakStatement self,
String label)
visitBreakStatement in interface KjcVisitorvisitBreakStatement in class KjcEmptyVisitorpublic void visitCompoundStatement(JStatement[] body)
visitCompoundStatement in class KjcEmptyVisitor
public void visitBlockStatement(JBlock self,
JavaStyleComment[] comments)
visitBlockStatement in interface KjcVisitorvisitBlockStatement in class KjcEmptyVisitor
public void visitTypeDeclarationStatement(JTypeDeclarationStatement self,
JTypeDeclaration decl)
visitTypeDeclarationStatement in interface KjcVisitorvisitTypeDeclarationStatement in class KjcEmptyVisitor
public void visitEmittedTextExpression(JEmittedTextExpression self,
Object[] parts)
visitEmittedTextExpression in interface KjcVisitorvisitEmittedTextExpression in class KjcEmptyVisitorself -
public void visitUnaryPlusExpression(JUnaryExpression self,
JExpression expr)
visitUnaryPlusExpression in interface KjcVisitorvisitUnaryPlusExpression in class KjcEmptyVisitor
public void visitUnaryMinusExpression(JUnaryExpression self,
JExpression expr)
visitUnaryMinusExpression in interface KjcVisitorvisitUnaryMinusExpression in class KjcEmptyVisitor
public void visitBitwiseComplementExpression(JUnaryExpression self,
JExpression expr)
visitBitwiseComplementExpression in interface KjcVisitorvisitBitwiseComplementExpression in class KjcEmptyVisitor
public void visitLogicalComplementExpression(JUnaryExpression self,
JExpression expr)
visitLogicalComplementExpression in interface KjcVisitorvisitLogicalComplementExpression in class KjcEmptyVisitor
public void visitTypeNameExpression(JTypeNameExpression self,
CType type)
visitTypeNameExpression in interface KjcVisitorvisitTypeNameExpression in class KjcEmptyVisitor
public void visitShiftExpression(JShiftExpression self,
int oper,
JExpression left,
JExpression right)
visitShiftExpression in interface KjcVisitorvisitShiftExpression in class KjcEmptyVisitor
public void visitPrefixExpression(JPrefixExpression self,
int oper,
JExpression expr)
visitPrefixExpression in interface KjcVisitorvisitPrefixExpression in class KjcEmptyVisitor
public void visitPostfixExpression(JPostfixExpression self,
int oper,
JExpression expr)
visitPostfixExpression in interface KjcVisitorvisitPostfixExpression in class KjcEmptyVisitor
public void visitParenthesedExpression(JParenthesedExpression self,
JExpression expr)
visitParenthesedExpression in interface KjcVisitorvisitParenthesedExpression in class KjcEmptyVisitor
public void visitLocalVariableExpression(JLocalVariableExpression self,
String ident)
visitLocalVariableExpression in interface KjcVisitorvisitLocalVariableExpression in class KjcEmptyVisitor
public void visitEqualityExpression(JEqualityExpression self,
boolean equal,
JExpression left,
JExpression right)
visitEqualityExpression in interface KjcVisitorvisitEqualityExpression in class KjcEmptyVisitor
public void visitConditionalExpression(JConditionalExpression self,
JExpression cond,
JExpression left,
JExpression right)
visitConditionalExpression in interface KjcVisitorvisitConditionalExpression in class KjcEmptyVisitor
public void visitCompoundAssignmentExpression(JCompoundAssignmentExpression self,
int oper,
JExpression left,
JExpression right)
visitCompoundAssignmentExpression in interface KjcVisitorvisitCompoundAssignmentExpression in class KjcEmptyVisitor
public void visitCastExpression(JCastExpression self,
JExpression expr,
CType type)
visitCastExpression in interface KjcVisitorvisitCastExpression in class KjcEmptyVisitor
public void visitUnaryPromoteExpression(JUnaryPromote self,
JExpression expr,
CType type)
visitUnaryPromoteExpression in interface KjcVisitorvisitUnaryPromoteExpression in class KjcEmptyVisitorprotected List<JExpression> splitForPrint(JExpression exp)
exp -
protected boolean printExp(JExpression expr)
public void visitPrintStatement(SIRPrintStatement self,
JExpression exp)
visitPrintStatement in interface SLIRVisitorvisitPrintStatement in class SLIREmptyVisitorpublic void visitMarker(SIRMarker self)
visitMarker in interface SLIRVisitorvisitMarker in class SLIREmptyVisitor
protected void printDecl(CType s,
String ident)
s - the type to declareident - the identifier to declare
public void visitClassExpression(JClassExpression self,
CType type)
visitClassExpression in interface KjcVisitorvisitClassExpression in class KjcEmptyVisitorself - a JClassExpressiontype - s CType, presumably a CCLassNameType....protected void printType(CType s)
s - a CType to be printed.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||