|
||||||||||
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 KjcVisitor
visitForStatement
in class KjcEmptyVisitor
public void visitEmptyStatement(JEmptyStatement self)
visitEmptyStatement
in interface KjcVisitor
visitEmptyStatement
in class KjcEmptyVisitor
public void visitWhileStatement(JWhileStatement self, JExpression cond, JStatement body)
visitWhileStatement
in interface KjcVisitor
visitWhileStatement
in class KjcEmptyVisitor
public void visitVariableDeclarationStatement(JVariableDeclarationStatement self, JVariableDefinition[] vars)
visitVariableDeclarationStatement
in interface KjcVisitor
visitVariableDeclarationStatement
in class KjcEmptyVisitor
public void visitSwitchStatement(JSwitchStatement self, JExpression expr, JSwitchGroup[] body)
visitSwitchStatement
in interface KjcVisitor
visitSwitchStatement
in class KjcEmptyVisitor
public void visitReturnStatement(JReturnStatement self, JExpression expr)
visitReturnStatement
in interface KjcVisitor
visitReturnStatement
in class KjcEmptyVisitor
public void visitLabeledStatement(JLabeledStatement self, String label, JStatement stmt)
visitLabeledStatement
in interface KjcVisitor
visitLabeledStatement
in class KjcEmptyVisitor
public void visitCompoundStatement(JCompoundStatement self, JStatement[] body)
visitCompoundStatement
in interface KjcVisitor
visitCompoundStatement
in class KjcEmptyVisitor
public void visitExpressionStatement(JExpressionStatement self, JExpression expr)
visitExpressionStatement
in interface KjcVisitor
visitExpressionStatement
in class KjcEmptyVisitor
public void visitExpressionListStatement(JExpressionListStatement self, JExpression[] expr)
visitExpressionListStatement
in interface KjcVisitor
visitExpressionListStatement
in class KjcEmptyVisitor
public void visitDoStatement(JDoStatement self, JExpression cond, JStatement body)
visitDoStatement
in interface KjcVisitor
visitDoStatement
in class KjcEmptyVisitor
public void visitContinueStatement(JContinueStatement self, String label)
visitContinueStatement
in interface KjcVisitor
visitContinueStatement
in class KjcEmptyVisitor
public void visitBreakStatement(JBreakStatement self, String label)
visitBreakStatement
in interface KjcVisitor
visitBreakStatement
in class KjcEmptyVisitor
public void visitCompoundStatement(JStatement[] body)
visitCompoundStatement
in class KjcEmptyVisitor
public void visitBlockStatement(JBlock self, JavaStyleComment[] comments)
visitBlockStatement
in interface KjcVisitor
visitBlockStatement
in class KjcEmptyVisitor
public void visitTypeDeclarationStatement(JTypeDeclarationStatement self, JTypeDeclaration decl)
visitTypeDeclarationStatement
in interface KjcVisitor
visitTypeDeclarationStatement
in class KjcEmptyVisitor
public void visitEmittedTextExpression(JEmittedTextExpression self, Object[] parts)
visitEmittedTextExpression
in interface KjcVisitor
visitEmittedTextExpression
in class KjcEmptyVisitor
self
- public void visitUnaryPlusExpression(JUnaryExpression self, JExpression expr)
visitUnaryPlusExpression
in interface KjcVisitor
visitUnaryPlusExpression
in class KjcEmptyVisitor
public void visitUnaryMinusExpression(JUnaryExpression self, JExpression expr)
visitUnaryMinusExpression
in interface KjcVisitor
visitUnaryMinusExpression
in class KjcEmptyVisitor
public void visitBitwiseComplementExpression(JUnaryExpression self, JExpression expr)
visitBitwiseComplementExpression
in interface KjcVisitor
visitBitwiseComplementExpression
in class KjcEmptyVisitor
public void visitLogicalComplementExpression(JUnaryExpression self, JExpression expr)
visitLogicalComplementExpression
in interface KjcVisitor
visitLogicalComplementExpression
in class KjcEmptyVisitor
public void visitTypeNameExpression(JTypeNameExpression self, CType type)
visitTypeNameExpression
in interface KjcVisitor
visitTypeNameExpression
in class KjcEmptyVisitor
public void visitShiftExpression(JShiftExpression self, int oper, JExpression left, JExpression right)
visitShiftExpression
in interface KjcVisitor
visitShiftExpression
in class KjcEmptyVisitor
public void visitPrefixExpression(JPrefixExpression self, int oper, JExpression expr)
visitPrefixExpression
in interface KjcVisitor
visitPrefixExpression
in class KjcEmptyVisitor
public void visitPostfixExpression(JPostfixExpression self, int oper, JExpression expr)
visitPostfixExpression
in interface KjcVisitor
visitPostfixExpression
in class KjcEmptyVisitor
public void visitParenthesedExpression(JParenthesedExpression self, JExpression expr)
visitParenthesedExpression
in interface KjcVisitor
visitParenthesedExpression
in class KjcEmptyVisitor
public void visitLocalVariableExpression(JLocalVariableExpression self, String ident)
visitLocalVariableExpression
in interface KjcVisitor
visitLocalVariableExpression
in class KjcEmptyVisitor
public void visitEqualityExpression(JEqualityExpression self, boolean equal, JExpression left, JExpression right)
visitEqualityExpression
in interface KjcVisitor
visitEqualityExpression
in class KjcEmptyVisitor
public void visitConditionalExpression(JConditionalExpression self, JExpression cond, JExpression left, JExpression right)
visitConditionalExpression
in interface KjcVisitor
visitConditionalExpression
in class KjcEmptyVisitor
public void visitCompoundAssignmentExpression(JCompoundAssignmentExpression self, int oper, JExpression left, JExpression right)
visitCompoundAssignmentExpression
in interface KjcVisitor
visitCompoundAssignmentExpression
in class KjcEmptyVisitor
public void visitCastExpression(JCastExpression self, JExpression expr, CType type)
visitCastExpression
in interface KjcVisitor
visitCastExpression
in class KjcEmptyVisitor
public void visitUnaryPromoteExpression(JUnaryPromote self, JExpression expr, CType type)
visitUnaryPromoteExpression
in interface KjcVisitor
visitUnaryPromoteExpression
in class KjcEmptyVisitor
protected List<JExpression> splitForPrint(JExpression exp)
exp
-
protected boolean printExp(JExpression expr)
public void visitPrintStatement(SIRPrintStatement self, JExpression exp)
visitPrintStatement
in interface SLIRVisitor
visitPrintStatement
in class SLIREmptyVisitor
public void visitMarker(SIRMarker self)
visitMarker
in interface SLIRVisitor
visitMarker
in class SLIREmptyVisitor
protected void printDecl(CType s, String ident)
s
- the type to declareident
- the identifier to declarepublic void visitClassExpression(JClassExpression self, CType type)
visitClassExpression
in interface KjcVisitor
visitClassExpression
in class KjcEmptyVisitor
self
- 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 |