|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object polyglot.visit.PrettyPrinter polyglot.visit.Translator
public class Translator
A Translator generates output code from the processed AST.
Output is sent to one or more java file in the directory
Options.output_directory
. Each SourceFile in the AST
is output to exactly one java file. The name of that file is
determined as follows:
new Translator(job, ts, nf, tf).translate(ast);The
ast
must be either a SourceFile or a SourceCollection.
Field Summary | |
---|---|
protected Context |
context
|
protected Job |
job
|
protected NodeFactory |
nf
|
protected ClassType |
outerClass
|
protected TargetFactory |
tf
|
protected TypeSystem |
ts
|
Fields inherited from class polyglot.visit.PrettyPrinter |
---|
appendSemicolon, printType |
Constructor Summary | |
---|---|
Translator(Job job,
TypeSystem ts,
NodeFactory nf,
TargetFactory tf)
Create a Translator. |
Method Summary | |
---|---|
Context |
context()
Get the current context in which we are translating. |
Translator |
context(Context c)
Create a new Translator identical to this but
with new context c |
java.lang.Object |
copy()
Copy the translator. |
static java.lang.String |
cScope(java.lang.String s)
Turns a package or class name from Java "x.y.z" format into a C-style scope ("x::y::z") |
protected java.util.List |
exports(SourceFile sfn)
Get the list of public top-level classes declared in the source file. |
static java.util.HashMap |
getFileNames()
|
HeaderTranslator |
headerContext(Context c)
Create a new Translator identical to this ,
except: a) wrapped inside a HeaderTranslator object, and b) with
a new context c |
Job |
job()
Return the job associated with this Translator. |
static java.lang.String |
macroEscape(java.lang.String s)
"Escapes" an input string "s" so that it can be used as a macro. |
NodeFactory |
nodeFactory()
Get the extension's node factory. |
ClassType |
outerClass()
Set the outer class context of the translator. |
void |
print(Node parent,
Node child,
CodeWriter w)
Print an ast node using the given code writer. |
void |
setOuterClass(ClassType ct)
Destructively set the outer class context of the translator. |
TargetFactory |
targetFactory()
|
java.lang.String |
toString()
|
boolean |
translate(Node ast)
Translate the entire AST. |
protected boolean |
translateSource(SourceFile sfn)
Transate a single SourceFile node |
TypeSystem |
typeSystem()
Get the extension's type system. |
protected void |
writeFooter(SourceFile sfn,
CodeWriter w)
C++ files also require a footer terminal '}' because they need to close the namespace they're opening. |
protected void |
writeHeader(SourceFile sfn,
CodeWriter w)
Write the package and import declarations for a source file. |
protected void |
writeHFileFooter(SourceFile sfn,
CodeWriter w)
Write the footer of the .h file if we're in C++ mode |
protected void |
writeHFileHeader(SourceFile sfn,
java.lang.String className,
CodeWriter w)
Write the opening lines of the header file for a given class |
Methods inherited from class polyglot.visit.PrettyPrinter |
---|
appendSemicolon, appendSemicolon, printAst, printType, printType |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected Job job
protected NodeFactory nf
protected TargetFactory tf
protected TypeSystem ts
protected Context context
protected ClassType outerClass
Constructor Detail |
---|
public Translator(Job job, TypeSystem ts, NodeFactory nf, TargetFactory tf)
outputFiles
.
Method Detail |
---|
public static java.util.HashMap getFileNames()
public Job job()
public Translator context(Context c)
Translator
identical to this
but
with new context c
public java.lang.Object copy()
copy
in interface Copy
public HeaderTranslator headerContext(Context c)
Translator
identical to this
,
except: a) wrapped inside a HeaderTranslator object, and b) with
a new context c
c
- - the new context to use
public ClassType outerClass()
outerClass
), rather
than in the current context returned by context()
.
public void setOuterClass(ClassType ct)
public TypeSystem typeSystem()
public Context context()
public NodeFactory nodeFactory()
public TargetFactory targetFactory()
public void print(Node parent, Node child, CodeWriter w)
translate(Node)
instead. This method should only be called
by nodes to print their children.
print
in class PrettyPrinter
public boolean translate(Node ast)
protected boolean translateSource(SourceFile sfn)
public static java.lang.String macroEscape(java.lang.String s)
s
- - the input string to escape.
public static java.lang.String cScope(java.lang.String s)
s
- the input package or class name
protected void writeHFileHeader(SourceFile sfn, java.lang.String className, CodeWriter w)
sfn
- - representation of the source file we're compiling; used for Imports.className
- - The name of the class we're describingw
- - The CodeWriter to write it all out to (the .h file)protected void writeHFileFooter(SourceFile sfn, CodeWriter w)
w
- protected void writeFooter(SourceFile sfn, CodeWriter w)
protected void writeHeader(SourceFile sfn, CodeWriter w)
protected java.util.List exports(SourceFile sfn)
public java.lang.String toString()
toString
in class java.lang.Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |