Class JavaCAst2IRTranslator
java.lang.Object
com.ibm.wala.cast.tree.visit.CAstVisitor<AstTranslator.WalkContext>
com.ibm.wala.cast.ir.translator.AstTranslator
com.ibm.wala.cast.java.translator.JavaCAst2IRTranslator
- All Implemented Interfaces:
ArrayOpHandler, TranslatorToIR
-
Nested Class Summary
Nested classes/interfaces inherited from class AstTranslator
AstTranslator.AbstractScope, AstTranslator.AbstractSymbol, AstTranslator.AstCFG, AstTranslator.AstLexicalInformation, AstTranslator.CodeEntityContext, AstTranslator.FinalCAstSymbol, AstTranslator.IncipientCFG, AstTranslator.InternalCAstSymbol, AstTranslator.PreBasicBlock, AstTranslator.RootContext, AstTranslator.Scope, AstTranslator.ScopeType, AstTranslator.Symbol, AstTranslator.TypeContext, AstTranslator.UnwindState, AstTranslator.WalkContextModifier and TypeClassDescriptionclassstatic classprotected static final classdata structure for the final CFG for a method, based on the information in anAstTranslator.IncipientCFGstatic classlexical access information for some entity scope.classprotected static classfinal classholds the control-flow graph as it is being constructed.static classprotected static final classbasic block implementation used in the CFGs constructed during the IR-generating AST traversalfinal classstatic interfacea scope in the symbol table built during AST traversalstatic enumprotected static interfaceinterface for name information stored in a symbol table.protected final classprotected static final classstatic interfaceNested classes/interfaces inherited from class CAstVisitor
CAstVisitor.ContextModifier and TypeClassDescriptionstatic interfaceThis interface represents a visitor-specific context. -
Field Summary
Fields inherited from class AstTranslator
DEBUG_ALL, DEBUG_CFG, DEBUG_LEXICAL, DEBUG_NAMES, DEBUG_TOP, entity2ExposedNames, entity2WrittenNames, insts, loader, namedEntityResolverModifier and TypeFieldDescriptionstatic final booleanstatic final booleanstatic final booleanstatic final booleanstatic final booleanprotected Map<CAstEntity, Set<String>> protected Map<CAstEntity, Set<Pair<CAstEntity, String>>> protected final SSAInstructionFactoryprotected final IClassLoaderprotected final Map<Object, CAstEntity> for handling languages that let you include other source files named statically (e.g., ABAP)Fields inherited from class CAstVisitor
currentPosition -
Constructor Summary
ConstructorsConstructorDescriptionJavaCAst2IRTranslator(ModuleEntry module, CAstEntity sourceFileEntity, JavaSourceLoaderImpl loader, StringFilter exclusions) -
Method Summary
Modifier and TypeMethodDescriptionprotected StringcomposeEntityName(AstTranslator.WalkContext parent, CAstEntity f) create the language-appropriate name for fprotected voiddeclareFunction(CAstEntity N, AstTranslator.WalkContext definingContext) declare a new function, represented by Nprotected TypeReferencefor a block that catches all exceptions, what is the root exception type that it can catch? E.g., for Java, java.lang.Throwableprotected voiddefineField(CAstEntity topEntity, AstTranslator.WalkContext definingContext, CAstEntity n) define a new field fieldEntity within topEntityprotected voiddefineFunction(CAstEntity N, AstTranslator.WalkContext definingContext, AbstractCFG<SSAInstruction, ? extends IBasicBlock<SSAInstruction>> cfg, SymbolTable symtab, boolean hasCatchBlock, Map<IBasicBlock<SSAInstruction>, Set<TypeReference>> caughtTypes, boolean hasMonitorOp, AstTranslator.AstLexicalInformation lexicalInfo, AstMethod.DebuggingInformation debugInfo) fully define a function.protected booleandefineType(CAstEntity type, AstTranslator.WalkContext wc) define a new (presumably nested) type.voiddoArrayRead(AstTranslator.WalkContext context, int result, int arrayValue, CAstNode arrayRefNode, int[] dimValues) generate IR for a CAst array read, updating context.cfg()voiddoArrayWrite(AstTranslator.WalkContext context, int arrayValue, CAstNode arrayRefNode, int[] dimValues, int rval) generate IR for a CAst array write, updating context.cfg()protected voiddoCall(AstTranslator.WalkContext context, CAstNode call, int result, int exception, CAstNode name, int receiver, int[] arguments) generate IR for a CAst method call expression, updating context.cfg()protected voiddoFieldRead(AstTranslator.WalkContext context, int result, int receiver, CAstNode elt, CAstNode parent) generate IR for a CAst field read, updating context.cfg()protected voiddoFieldWrite(AstTranslator.WalkContext context, int receiver, CAstNode elt, CAstNode parent, int rval) generate IR for a CAst field write, updating context.cfg()protected voiddoGlobalWrite(AstTranslator.WalkContext context, String name, TypeReference type, int rval) generate instructions for a write of a globalprotected voiddoMaterializeFunction(CAstNode n, AstTranslator.WalkContext context, int result, int exception, CAstEntity fn) generate IR for a CAst function expression, updating context.cfg()protected voiddoNewObject(AstTranslator.WalkContext context, CAstNode newNode, int result, Object type, int[] arguments) generate IR for a CAst new expression, updating context.cfg()protected voiddoPrimitive(int resultVal, AstTranslator.WalkContext context, CAstNode primitiveCall) generate IR for call modeling creation of primitive value, updating context.cfg()protected voiddoThrow(AstTranslator.WalkContext context, int exception) generate IR for a CAst throw expression, updating context.cfg()protected booleandoVisit(CAstNode n, AstTranslator.WalkContext wc, CAstVisitor<AstTranslator.WalkContext> visitor) Node processing hook; sub-classes are expected to override if they introduce new node types.protected CAstTypethe most-general exception type for the language being translatedprotected CAstSourcePositionMap.Position[]protected booleanIf this returns true, new global declarations get created for any attempt to access a non-existent variable (believe it or not, JavaScript actually does this!)protected voidleaveCast(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Cast node.protected voidleaveInstanceOf(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an InstanceOf node.protected voidleaveThis(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a This node.loader()protected TypeReferenceprotected CAstTypetopType()the most-general type for the language being translatedvoidprotected booleancan lexical reads / writes access globals?protected booleandoes the language care about using type-appropriate default values? For Java, the answer is yes (ints should get a default value of 0, null for pointers, etc.).protected booleanvisitCast(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Cast node.protected booleanvisitInstanceOf(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an InstanceOf node.Methods inherited from class AstTranslator
assignValue, closeFunctionEntity, doGlobalRead, doIsFieldDefined, doLexicallyScopedRead, doLexicallyScopedWrite, doLocalRead, doLocalWrite, doPrologue, enterEntity, getArgumentCount, getArgumentNames, getCodeContext, getIncludedEntity, getTypeForNode, handleUnspecifiedLiteralKey, hasSpecialUndeclaredVariables, ignoreName, initFunctionEntity, isExceptionLabel, leaveArrayLength, leaveArrayLiteral, leaveArrayLiteralInitElement, leaveArrayLiteralObject, leaveArrayRef, leaveArrayRefAssign, leaveArrayRefAssignOp, leaveAssert, leaveAssign, leaveBinaryExpr, leaveBlockExpr, leaveBlockExprAssign, leaveBlockExprAssignOp, leaveBlockStmt, leaveCall, leaveCatch, leaveConstant, leaveDeclStmt, leaveEachElementGet, leaveEachElementHasNext, leaveEcho, leaveEmpty, leaveFieldEntity, leaveFileEntity, leaveFunctionEntity, leaveFunctionExpr, leaveFunctionStmt, leaveGetCaughtException, leaveGlobalEntity, leaveGoto, leaveIfExpr, leaveIfExprCondition, leaveIfExprTrueClause, leaveIfgoto, leaveIfStmt, leaveIfStmtCondition, leaveIfStmtTrueClause, leaveInclude, leaveIsDefinedExpr, leaveLabelStmt, leaveLocalScope, leaveLoop, leaveLoopHeader, leaveNew, leaveObjectLiteral, leaveObjectLiteralFieldInit, leaveObjectRef, leaveObjectRefAssign, leaveObjectRefAssignOp, leavePrimitive, leaveReturn, leaveScriptEntity, leaveSpecialParentScope, leaveSuper, leaveSwitch, leaveSwitchValue, leaveThrow, leaveTry, leaveTryBlock, leaveTypeEntity, leaveTypeLiteralExpr, leaveUnaryExpr, leaveUnwind, leaveVar, leaveVarAssign, leaveVarAssignOp, leaveVoid, leaveYield, liftDeclarationsForLexicalScoping, makeCodeContext, makeFileContext, makeGlobalRef, makeLocalContext, makeNameMap, makeScriptScope, makeSpecialParentContext, makeTypeContext, makeTypeScope, makeUnwindContext, processAssignOp, processFunctionExpr, processIf, setDefaultValue, topLevelFunctionsInGlobalScope, translate, translate, translateBinaryOpcode, translateConditionOpcode, translateUnaryOpcode, visitArrayLength, visitArrayLiteral, visitArrayRef, visitAssert, visitAssign, visitBinaryExpr, visitBlockExpr, visitBlockStmt, visitCall, visitCatch, visitConstant, visitDeclStmt, visitEachElementGet, visitEachElementHasNext, visitEcho, visitEmpty, visitFieldEntity, visitFileEntity, visitFunctionEntity, visitFunctionExpr, visitFunctionStmt, visitGetCaughtException, visitGlobalEntity, visitGoto, visitIfExpr, visitIfgoto, visitIfStmt, visitIsDefinedExpr, visitLabelStmt, visitLocalScope, visitLoop, visitMacroEntity, visitNew, visitObjectLiteral, visitObjectRef, visitPrimitive, visitReturn, visitScriptEntity, visitSpecialParentScope, visitSuper, visitSwitch, visitThis, visitThrow, visitTry, visitTypeEntity, visitTypeLiteralExpr, visitUnaryExpr, visitUnwind, visitVar, visitVoid, visitYield, walkEntitiesModifier and TypeMethodDescriptionprotected voidassignValue(CAstNode n, AstTranslator.WalkContext context, AstTranslator.Symbol ls, String nm, int rval) assign rval to nm as appropriate, depending on the scope of lsvoidcloseFunctionEntity(CAstEntity n, AstTranslator.WalkContext parentContext, AstTranslator.WalkContext functionContext) protected intdoGlobalRead(CAstNode node, AstTranslator.WalkContext context, String name, TypeReference type) generate instructions for a read of a globalprotected voiddoIsFieldDefined(AstTranslator.WalkContext context, int result, int ref, CAstNode f) protected intdoLexicallyScopedRead(CAstNode node, AstTranslator.WalkContext context, String name, TypeReference type) Note that the caller is responsible for ensuring that name is defined in a lexical scope.protected voiddoLexicallyScopedWrite(AstTranslator.WalkContext context, String name, TypeReference type, int rval) Note that the caller is responsible for ensuring that name is defined in a lexical scope.protected intdoLocalRead(AstTranslator.WalkContext context, String name, TypeReference type) get the value number for a name defined locally (i.e., within the current method) by looking up the name in context.currentScope().protected voiddoLocalWrite(AstTranslator.WalkContext context, String nm, TypeReference type, int rval) add anAssignInstructionto context.cfg() that copies rval to the value number of local nm.protected voiddoPrologue(AstTranslator.WalkContext context) generate prologue code for each function bodyprotected booleanenterEntity(CAstEntity n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Enter the entity visitor.protected intprotected String[]protected AstTranslator.WalkContextgetCodeContext(AstTranslator.WalkContext context) protected static CAstTypegetTypeForNode(AstTranslator.WalkContext context, CAstNode node) protected voidsome languages let you omit initialization of certain fields when writing an object literal (e.g., PHP).protected booleanIf this returns true, then attempts to lookup non-existent names return `null' rather than tripping an assertion.protected booleanignoreName(String name) voidinitFunctionEntity(CAstEntity n, AstTranslator.WalkContext functionContext) protected booleanisExceptionLabel(Object label) protected voidleaveArrayLength(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an ArrayLength node.protected voidleaveArrayLiteral(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a ArrayLiteral node.protected voidleaveArrayLiteralInitElement(CAstNode n, int i, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ArrayLiteral node after processing the {i}th element initializer.protected voidleaveArrayLiteralObject(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ArrayLiteral node after processing the array object.protected voidleaveArrayRef(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an ArrayRef node.protected voidleaveArrayRefAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ArrayRef Assignment node after visiting the LHS.protected voidleaveArrayRefAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ArrayRef Op/Assignment node after visiting the LHS.protected voidleaveAssert(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an InstanceOf node.voidleaveAssign(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an Assign node.protected voidleaveBinaryExpr(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a BinaryExpr node.protected voidleaveBlockExpr(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a BlockExpr node.protected voidleaveBlockExprAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a BlockExpr Assignment node after visiting the LHS.protected voidleaveBlockExprAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a BlockExpr Op/Assignment node after visiting the LHS.protected voidleaveBlockStmt(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a BlockStmt node.protected voidleaveCall(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Call node.protected voidleaveCatch(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Catch node.protected voidleaveConstant(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Constant node.protected voidleaveDeclStmt(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a DeclStmt node.protected voidleaveEachElementGet(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an FOR_EACH_ELEMENT_GET node.protected voidleaveEachElementHasNext(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) protected voidleaveEcho(CAstNode n, AstTranslator.WalkContext wc, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an ECHO node.protected voidleaveEmpty(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an Empty node.protected voidleaveFieldEntity(CAstEntity n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Field entity.protected voidleaveFileEntity(CAstEntity n, AstTranslator.WalkContext context, AstTranslator.WalkContext fileContext, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a File entity.protected voidleaveFunctionEntity(CAstEntity n, AstTranslator.WalkContext context, AstTranslator.WalkContext codeContext, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Function entity.protected voidleaveFunctionExpr(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a FunctionExpr node.protected voidleaveFunctionStmt(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a FunctionStmt node.protected voidleaveGetCaughtException(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a GetCaughtException node.protected voidleaveGlobalEntity(CAstEntity n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Field entity.protected voidleaveGoto(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Goto node.protected final voidleaveIfExpr(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an IfExpr node.protected final voidleaveIfExprCondition(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an IfExpr node after processing the condition.protected final voidleaveIfExprTrueClause(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an IfExpr node after processing the true clause.protected voidleaveIfgoto(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an Ifgoto node.protected final voidleaveIfStmt(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an IfStmt node.protected final voidleaveIfStmtCondition(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an IfStmt node after processing the condition.protected final voidleaveIfStmtTrueClause(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an IfStmt node after processing the true clause.protected voidleaveInclude(CAstNode n, AstTranslator.WalkContext wc, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an INCLUDE node.protected voidleaveIsDefinedExpr(CAstNode n, AstTranslator.WalkContext wc, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an IS_DEFINED_EXPR node.protected voidleaveLabelStmt(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a LabelStmt node.protected voidleaveLocalScope(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a LocalScope node.protected final voidleaveLoop(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Loop node.protected final voidleaveLoopHeader(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Loop node after processing the loop header.protected voidleaveNew(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a New node.protected voidleaveObjectLiteral(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an ObjectLiteral node.protected voidleaveObjectLiteralFieldInit(CAstNode n, int i, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ObjectLiteral node after processing the {i}th field initializer.protected voidleaveObjectRef(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an ObjectRef node.protected voidleaveObjectRefAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ObjectRef Assignment node after visiting the LHS.protected voidleaveObjectRefAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ObjectRef Op/Assignment node after visiting the LHS.protected voidleavePrimitive(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Primitive node.protected voidleaveReturn(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Return node.protected voidleaveScriptEntity(CAstEntity n, AstTranslator.WalkContext context, AstTranslator.WalkContext codeContext, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Script entity.protected voidleaveSpecialParentScope(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) protected voidleaveSuper(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Super node.protected final voidleaveSwitch(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Switch node.protected final voidleaveSwitchValue(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Switch node after processing the switch value.protected voidleaveThrow(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Throw node.protected final voidleaveTry(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Try node.protected final voidleaveTryBlock(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Try node after processing the try block.protected voidleaveTypeEntity(CAstEntity n, AstTranslator.WalkContext context, AstTranslator.WalkContext typeContext, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Type entity.protected voidleaveTypeLiteralExpr(CAstNode n, AstTranslator.WalkContext wc, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an TYPE_LITERAL_EXPR node.protected voidleaveUnaryExpr(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a UnaryExpr node.protected voidleaveUnwind(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an Unwind node.protected voidleaveVar(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Var node.protected voidleaveVarAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Var Assignment node after visiting the LHS.protected voidleaveVarAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Var Op/Assignment node after visiting the LHS.protected voidleaveVoid(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Void node.protected voidleaveYield(CAstNode n, AstTranslator.WalkContext wc, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Return node.protected booleanlift variable declarations for lexical scoping purposes?protected AstTranslator.WalkContextmakeCodeContext(AstTranslator.WalkContext context, CAstEntity n) Construct a context for a Code entity.protected AstTranslator.WalkContextConstruct a context for a File entity.protected FieldReferencemakeGlobalRef(String globalName) creates a reference to a global named globalName.protected AstTranslator.WalkContextmakeLocalContext(AstTranslator.WalkContext context, CAstNode n) Construct a context for a LocalScope node.protected String[]makeNameMap(CAstEntity n, Set<AstTranslator.Scope> scopes, SSAInstruction[] insts) protected AstTranslator.AbstractScopemakeScriptScope(CAstEntity s, AstTranslator.Scope parent) protected AstTranslator.WalkContextprotected AstTranslator.WalkContextConstruct a context for a Type entity.protected AstTranslator.ScopemakeTypeScope(CAstEntity type, AstTranslator.Scope parent) protected AstTranslator.WalkContextmakeUnwindContext(AstTranslator.WalkContext context, CAstNode n, CAstVisitor<AstTranslator.WalkContext> visitor) Construct a context for an Unwind node.protected intprocessAssignOp(CAstNode v, CAstNode a, int temp, AstTranslator.WalkContext context) protected intprocessFunctionExpr(CAstNode n, AstTranslator.WalkContext context) protected voidprocessIf(CAstNode n, boolean isExpr, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) voidsetDefaultValue(SymbolTable symtab, int vn, Object value) protected booleanvoidtranslate(CAstEntity N, AstTranslator.WalkContext context) voidtranslate(CAstEntity N, ModuleEntry module) translate module, represented byCAstEntityNprotected IBinaryOpInstruction.IOperatorprotected IConditionalBranchInstruction.IOperatorprotected IUnaryOpInstruction.IOperatorprotected booleanvisitArrayLength(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ArrayLength node.protected booleanvisitArrayLiteral(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ArrayLiteral node.protected booleanvisitArrayRef(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ArrayRef node.protected booleanvisitAssert(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) booleanvisitAssign(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an Assign node.protected booleanvisitBinaryExpr(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a BinaryExpr node.protected booleanvisitBlockExpr(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a BlockExpr node.protected booleanvisitBlockStmt(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a BlockStmt node.protected booleanvisitCall(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Call node.protected booleanvisitCatch(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Catch node.protected booleanvisitConstant(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Constant node.protected booleanvisitDeclStmt(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a DeclStmt node.protected booleanvisitEachElementGet(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an InstanceOf node.protected booleanvisitEachElementHasNext(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an InstanceOf node.protected booleanvisitEcho(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) protected booleanvisitEmpty(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an Empty node.protected booleanvisitFieldEntity(CAstEntity n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Field entity.protected booleanvisitFileEntity(CAstEntity n, AstTranslator.WalkContext context, AstTranslator.WalkContext fileContext, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a File entity.protected booleanvisitFunctionEntity(CAstEntity n, AstTranslator.WalkContext context, AstTranslator.WalkContext codeContext, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Function entity.protected booleanvisitFunctionExpr(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a FunctionExpr node.protected booleanvisitFunctionStmt(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a FunctionStmt node.protected booleanvisitGetCaughtException(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a GetCaughtException node.protected booleanvisitGlobalEntity(CAstEntity n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Field entity.protected booleanvisitGoto(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Goto node.protected booleanvisitIfExpr(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an IfExpr node.protected booleanvisitIfgoto(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an Ifgoto node.protected booleanvisitIfStmt(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an IfStmt node.protected booleanvisitIsDefinedExpr(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) protected booleanvisitLabelStmt(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a LabelStmt node.protected booleanvisitLocalScope(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a LocalScope node.protected booleanvisitLoop(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Loop node.protected booleanvisitMacroEntity(CAstEntity n, AstTranslator.WalkContext context, AstTranslator.WalkContext codeContext, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Macro entity.protected booleanvisitNew(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a New node.protected booleanvisitObjectLiteral(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ObjectLiteral node.protected booleanvisitObjectRef(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ObjectRef node.protected booleanvisitPrimitive(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Primitive node.protected booleanvisitReturn(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Return node.protected booleanvisitScriptEntity(CAstEntity n, AstTranslator.WalkContext context, AstTranslator.WalkContext codeContext, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Script entity.protected booleanvisitSpecialParentScope(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) protected booleanvisitSuper(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Super node.protected booleanvisitSwitch(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Switch node.protected booleanvisitThis(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a This node.protected booleanvisitThrow(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Throw node.protected booleanvisitTry(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Try node.protected booleanvisitTypeEntity(CAstEntity n, AstTranslator.WalkContext context, AstTranslator.WalkContext typeContext, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Type entity.protected booleanvisitTypeLiteralExpr(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an TYPE_LITERAL_EXPR node.protected booleanvisitUnaryExpr(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a UnaryExpr node.protected booleanvisitUnwind(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an Unwind node.protected booleanvisitVar(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Var node.protected booleanvisitVoid(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Void node.protected booleanvisitYield(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Return node.protected final voidMethods inherited from class CAstVisitor
doVisitArrayRefNode, doVisitAssignNodes, doVisitEntity, enterNode, getCurrentPosition, getParent, leaveArrayLiteralAssign, leaveClassStmt, leaveEntity, leaveForIn, leaveMacroEntity, leaveMacroVar, leaveNode, leaveObjectLiteralAssign, postProcessEntity, postProcessNode, setParent, visit, visitAllChildren, visitArrayLiteralAssign, visitArrayRefAssign, visitArrayRefAssignOp, visitAssignNodes, visitBlockExprAssign, visitBlockExprAssignOp, visitChildren, visitClassStmt, visitEntities, visitEntity, visitForIn, visitInclude, visitMacroVar, visitNode, visitObjectLiteralAssign, visitObjectRefAssign, visitObjectRefAssignOp, visitScopedEntities, visitScopedEntities, visitVarAssign, visitVarAssignOpModifier and TypeMethodDescriptionprotected booleandoVisitArrayRefNode(CAstNode n, CAstNode v, CAstNode a, boolean assign, boolean preOp, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Process the given array reference node.protected booleandoVisitAssignNodes(CAstNode n, AstTranslator.WalkContext context, CAstNode v, CAstNode a, CAstVisitor<AstTranslator.WalkContext> visitor) Node processing hook; sub-classes are expected to override if they introduce new node types that appear on the left hand side of assignment operations.protected booleandoVisitEntity(CAstEntity n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Entity processing hook; sub-classes are expected to override if they introduce new entity types.protected booleanenterNode(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Enter the node visitor.protected CAstEntitygetParent(CAstEntity entity) Get the parent entity for a given entity.protected voidleaveArrayLiteralAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an array literal Assignment node after visiting the LHS.protected voidleaveClassStmt(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a FunctionStmt node.voidleaveEntity(CAstEntity n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Leave any entity.protected voidleaveForIn(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a For..In node.protected voidleaveMacroEntity(CAstEntity n, AstTranslator.WalkContext context, AstTranslator.WalkContext codeContext, CAstVisitor<AstTranslator.WalkContext> visitor) Leave a Macro entity.protected voidleaveMacroVar(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave an MACRO_VAR node.voidleaveNode(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Leave any node.protected voidleaveObjectLiteralAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an array literal Assignment node after visiting the LHS.protected voidpostProcessEntity(CAstEntity n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Post-process an entity after visiting it.protected voidpostProcessNode(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Post-process a node after visiting it.protected voidsetParent(CAstEntity entity, CAstEntity parent) Set the parent entity for a given entity.final voidvisit(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Recursively visit a given node.final voidvisitAllChildren(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit all children of a node.protected booleanvisitArrayLiteralAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an array literal Assignment node after visiting the RHS.protected booleanvisitArrayRefAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ArrayRef Assignment node after visiting the RHS.protected booleanvisitArrayRefAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ArrayRef Op/Assignment node after visiting the RHS.protected booleanvisitAssignNodes(CAstNode n, AstTranslator.WalkContext context, CAstNode v, CAstNode a, CAstVisitor<AstTranslator.WalkContext> visitor) protected booleanvisitBlockExprAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a BlockExpr Assignment node after visiting the RHS.protected booleanvisitBlockExprAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a BlockExpr Op/Assignment node after visiting the RHS.final voidvisitChildren(CAstNode n, int start, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit children of a node starting at a given index.protected booleanvisitClassStmt(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a FunctionStmt node.final voidvisitEntities(CAstEntity n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Recursively visit an entity.booleanvisitEntity(CAstEntity n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit any entity.protected booleanvisitForIn(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a For..In node.protected booleanvisitInclude(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) protected booleanvisitMacroVar(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) booleanvisitNode(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit any node.protected booleanvisitObjectLiteralAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an array literal Assignment node after visiting the RHS.protected booleanvisitObjectRefAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ObjectRef Assignment node after visiting the RHS.protected booleanvisitObjectRefAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit an ObjectRef Op/Assignment node after visiting the RHS.final voidvisitScopedEntities(CAstEntity n, Iterator<CAstEntity> i, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) final voidvisitScopedEntities(CAstEntity n, Map<CAstNode, Collection<CAstEntity>> allScopedEntities, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Visit scoped entities of an entity using a given iterator.protected booleanvisitVarAssign(CAstNode n, CAstNode v, CAstNode a, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Var Assignment node after visiting the RHS.protected booleanvisitVarAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Visit a Var Op/Assignment node after visiting the RHS.
-
Constructor Details
-
JavaCAst2IRTranslator
public JavaCAst2IRTranslator(ModuleEntry module, CAstEntity sourceFileEntity, JavaSourceLoaderImpl loader, StringFilter exclusions)
-
-
Method Details
-
translate
public void translate() -
sourceFileEntity
-
loader
-
useDefaultInitValues
protected boolean useDefaultInitValues()Description copied from class:AstTranslatordoes the language care about using type-appropriate default values? For Java, the answer is yes (ints should get a default value of 0, null for pointers, etc.). For JavaScript, the answer is no, as any variable can hold the value 'undefined'.- Specified by:
useDefaultInitValuesin classAstTranslator
-
hasImplicitGlobals
protected boolean hasImplicitGlobals()Description copied from class:AstTranslatorIf this returns true, new global declarations get created for any attempt to access a non-existent variable (believe it or not, JavaScript actually does this!)- Overrides:
hasImplicitGlobalsin classAstTranslator
-
defaultCatchType
Description copied from class:AstTranslatorfor a block that catches all exceptions, what is the root exception type that it can catch? E.g., for Java, java.lang.Throwable- Specified by:
defaultCatchTypein classAstTranslator
-
makeType
- Specified by:
makeTypein classAstTranslator
-
treatGlobalsAsLexicallyScoped
protected boolean treatGlobalsAsLexicallyScoped()Description copied from class:AstTranslatorcan lexical reads / writes access globals?- Specified by:
treatGlobalsAsLexicallyScopedin classAstTranslator
-
doThrow
Description copied from class:AstTranslatorgenerate IR for a CAst throw expression, updating context.cfg()- Specified by:
doThrowin classAstTranslator
-
doArrayRead
public void doArrayRead(AstTranslator.WalkContext context, int result, int arrayValue, CAstNode arrayRefNode, int[] dimValues) Description copied from class:AstTranslatorgenerate IR for a CAst array read, updating context.cfg()- Specified by:
doArrayReadin interfaceArrayOpHandler- Specified by:
doArrayReadin classAstTranslator
-
doArrayWrite
public void doArrayWrite(AstTranslator.WalkContext context, int arrayValue, CAstNode arrayRefNode, int[] dimValues, int rval) Description copied from class:AstTranslatorgenerate IR for a CAst array write, updating context.cfg()- Specified by:
doArrayWritein interfaceArrayOpHandler- Specified by:
doArrayWritein classAstTranslator
-
doFieldRead
protected void doFieldRead(AstTranslator.WalkContext context, int result, int receiver, CAstNode elt, CAstNode parent) Description copied from class:AstTranslatorgenerate IR for a CAst field read, updating context.cfg()- Specified by:
doFieldReadin classAstTranslator
-
doFieldWrite
protected void doFieldWrite(AstTranslator.WalkContext context, int receiver, CAstNode elt, CAstNode parent, int rval) Description copied from class:AstTranslatorgenerate IR for a CAst field write, updating context.cfg()- Specified by:
doFieldWritein classAstTranslator
-
doMaterializeFunction
protected void doMaterializeFunction(CAstNode n, AstTranslator.WalkContext context, int result, int exception, CAstEntity fn) Description copied from class:AstTranslatorgenerate IR for a CAst function expression, updating context.cfg()- Specified by:
doMaterializeFunctionin classAstTranslator
-
doNewObject
protected void doNewObject(AstTranslator.WalkContext context, CAstNode newNode, int result, Object type, int[] arguments) Description copied from class:AstTranslatorgenerate IR for a CAst new expression, updating context.cfg()- Specified by:
doNewObjectin classAstTranslator
-
doCall
protected void doCall(AstTranslator.WalkContext context, CAstNode call, int result, int exception, CAstNode name, int receiver, int[] arguments) Description copied from class:AstTranslatorgenerate IR for a CAst method call expression, updating context.cfg()- Specified by:
doCallin classAstTranslator
-
doGlobalWrite
protected void doGlobalWrite(AstTranslator.WalkContext context, String name, TypeReference type, int rval) Description copied from class:AstTranslatorgenerate instructions for a write of a global- Overrides:
doGlobalWritein classAstTranslator
-
defineField
protected void defineField(CAstEntity topEntity, AstTranslator.WalkContext definingContext, CAstEntity n) Description copied from class:AstTranslatordefine a new field fieldEntity within topEntity- Specified by:
defineFieldin classAstTranslator
-
declareFunction
Description copied from class:AstTranslatordeclare a new function, represented by N- Specified by:
declareFunctionin classAstTranslator
-
defineFunction
protected void defineFunction(CAstEntity N, AstTranslator.WalkContext definingContext, AbstractCFG<SSAInstruction, ? extends IBasicBlock<SSAInstruction>> cfg, SymbolTable symtab, boolean hasCatchBlock, Map<IBasicBlock<SSAInstruction>, Set<TypeReference>> caughtTypes, boolean hasMonitorOp, AstTranslator.AstLexicalInformation lexicalInfo, AstMethod.DebuggingInformation debugInfo) Description copied from class:AstTranslatorfully define a function. invoked after all the code of the function has been processed- Specified by:
defineFunctionin classAstTranslator
-
doPrimitive
protected void doPrimitive(int resultVal, AstTranslator.WalkContext context, CAstNode primitiveCall) Description copied from class:AstTranslatorgenerate IR for call modeling creation of primitive value, updating context.cfg()- Specified by:
doPrimitivein classAstTranslator
-
composeEntityName
Description copied from class:AstTranslatorcreate the language-appropriate name for f- Specified by:
composeEntityNamein classAstTranslator
-
defineType
Description copied from class:AstTranslatordefine a new (presumably nested) type. return true if type was successfully defined, false otherwise- Specified by:
defineTypein classAstTranslator
-
leaveThis
protected void leaveThis(CAstNode n, AstTranslator.WalkContext c, CAstVisitor<AstTranslator.WalkContext> visitor) Description copied from class:CAstVisitorLeave a This node.- Overrides:
leaveThisin classAstTranslator- Parameters:
n- the node to processc- a visitor-specific context
-
visitCast
protected boolean visitCast(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Description copied from class:CAstVisitorVisit a Cast node.- Overrides:
visitCastin classCAstVisitor<AstTranslator.WalkContext>- Parameters:
n- the node to processcontext- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveCast
protected void leaveCast(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Description copied from class:CAstVisitorLeave a Cast node.- Overrides:
leaveCastin classCAstVisitor<AstTranslator.WalkContext>- Parameters:
n- the node to processcontext- a visitor-specific context
-
visitInstanceOf
protected boolean visitInstanceOf(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Description copied from class:CAstVisitorVisit an InstanceOf node.- Overrides:
visitInstanceOfin classCAstVisitor<AstTranslator.WalkContext>- Parameters:
n- the node to processcontext- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveInstanceOf
protected void leaveInstanceOf(CAstNode n, AstTranslator.WalkContext context, CAstVisitor<AstTranslator.WalkContext> visitor) Description copied from class:CAstVisitorLeave an InstanceOf node.- Overrides:
leaveInstanceOfin classCAstVisitor<AstTranslator.WalkContext>- Parameters:
n- the node to processcontext- a visitor-specific context
-
doVisit
protected boolean doVisit(CAstNode n, AstTranslator.WalkContext wc, CAstVisitor<AstTranslator.WalkContext> visitor) Description copied from class:CAstVisitorNode processing hook; sub-classes are expected to override if they introduce new node types.(Should invoke super.doVisit() for unprocessed nodes.)
- Overrides:
doVisitin classCAstVisitor<AstTranslator.WalkContext>- Returns:
- true if node was handled
-
topType
Description copied from class:AstTranslatorthe most-general type for the language being translated- Specified by:
topTypein classAstTranslator
-
exceptionType
Description copied from class:AstTranslatorthe most-general exception type for the language being translated- Specified by:
exceptionTypein classAstTranslator
-
getParameterPositions
- Specified by:
getParameterPositionsin classAstTranslator
-