public final class JavaScriptTranslator extends TranslatorNodeVisitor<LexicalContext,JavaScriptNode>
| Modifier and Type | Field and Description |
|---|---|
protected String[] |
argumentNames |
protected JSContext |
context |
static JavaScriptNode[] |
EMPTY_NODE_ARRAY |
protected NodeFactory |
factory |
protected int |
prologLength |
protected com.oracle.truffle.api.source.Source |
source |
protected int |
sourceLength |
lc| Modifier and Type | Method and Description |
|---|---|
JavaScriptNode |
enterAccessNode(AccessNode accessNode)
Callback for entering an AccessNode
|
JavaScriptNode |
enterBinaryNode(BinaryNode binaryNode)
Callback for entering a BinaryNode
|
JavaScriptNode |
enterBlock(Block block)
Callback for entering a Block
|
JavaScriptNode |
enterBlockExpression(BlockExpression blockExpression)
Callback for entering a BlockExpression
|
JavaScriptNode |
enterBlockStatement(BlockStatement blockStatement)
Callback for entering a BlockStatement
|
JavaScriptNode |
enterBreakNode(BreakNode breakNode)
Callback for entering a BreakNode
|
JavaScriptNode |
enterCallNode(CallNode callNode)
Callback for entering a CallNode
|
JavaScriptNode |
enterClassNode(ClassNode classNode)
Callback for entering a ClassNode
|
JavaScriptNode |
enterContinueNode(ContinueNode continueNode)
Callback for entering a ContinueNode
|
JavaScriptNode |
enterDebuggerNode(DebuggerNode debuggerNode)
Callback for entering a DebuggerNode
|
protected JavaScriptNode |
enterDefault(Node node)
Override this method to do a double inheritance pattern, e.g.
|
JavaScriptNode |
enterEmptyNode(EmptyNode emptyNode)
Callback for entering an EmptyNode
|
JavaScriptNode |
enterExpressionStatement(ExpressionStatement expressionStatement)
Callback for entering an ExpressionStatement
|
JavaScriptNode |
enterForNode(ForNode forNode)
Callback for entering a ForNode
|
JavaScriptNode |
enterFunctionNode(FunctionNode functionNode)
Callback for entering a FunctionNode
|
JavaScriptNode |
enterIdentNode(IdentNode identNode)
Callback for entering an IdentNode
|
JavaScriptNode |
enterIfNode(IfNode ifNode)
Callback for entering an IfNode
|
JavaScriptNode |
enterIndexNode(IndexNode indexNode)
Callback for entering an IndexNode
|
JavaScriptNode |
enterJoinPredecessorExpression(JoinPredecessorExpression expr)
Callback for entering a
JoinPredecessorExpression. |
JavaScriptNode |
enterLabelNode(LabelNode labelNode)
Callback for entering a LabelNode
|
JavaScriptNode |
enterLiteralNode(LiteralNode<?> literalNode)
Callback for entering a LiteralNode
|
JavaScriptNode |
enterObjectNode(ObjectNode objectNode)
Callback for entering an ObjectNode
|
JavaScriptNode |
enterParameterNode(ParameterNode paramNode)
Callback for entering a ParameterNode
|
JavaScriptNode |
enterReturnNode(ReturnNode returnNode)
Callback for entering a ReturnNode
|
JavaScriptNode |
enterRuntimeNode(RuntimeNode runtimeNode)
Callback for entering a RuntimeNode
|
JavaScriptNode |
enterSwitchNode(SwitchNode switchNode)
Callback for entering a SwitchNode
|
JavaScriptNode |
enterTernaryNode(TernaryNode ternaryNode)
Callback for entering a TernaryNode
|
JavaScriptNode |
enterThrowNode(ThrowNode throwNode)
Callback for entering a ThrowNode
|
JavaScriptNode |
enterTryNode(TryNode tryNode)
Callback for entering a TryNode
|
JavaScriptNode |
enterUnaryNode(UnaryNode unaryNode)
Callback for entering a UnaryNode
|
JavaScriptNode |
enterVarNode(VarNode varNode)
Callback for entering a VarNode
|
JavaScriptNode |
enterWhileNode(WhileNode whileNode)
Callback for entering a WhileNode
|
JavaScriptNode |
enterWithNode(WithNode withNode)
Callback for entering a WithNode
|
protected static String |
error(String message,
long errorToken,
LexicalContext lc) |
protected com.oracle.truffle.js.parser.GraalJSTranslator |
newTranslator(Environment env,
LexicalContext savedLC) |
protected JavaScriptNode |
transform(Node node) |
protected JavaScriptNode |
transformFunction(FunctionNode functionNode) |
static ScriptNode |
translateEvalScript(NodeFactory factory,
JSContext context,
com.oracle.truffle.api.source.Source source,
boolean isParentStrict,
DirectEvalContext directEval) |
static ScriptNode |
translateFunction(NodeFactory factory,
JSContext context,
Environment env,
com.oracle.truffle.api.source.Source source,
boolean isParentStrict,
FunctionNode rootNode) |
static ScriptNode |
translateFunction(NodeFactory factory,
JSContext context,
Environment env,
com.oracle.truffle.api.source.Source source,
int prologLength,
boolean isParentStrict,
FunctionNode rootNode) |
static ScriptNode |
translateInlineScript(NodeFactory factory,
JSContext context,
Environment env,
com.oracle.truffle.api.source.Source source,
boolean isParentStrict) |
static JSModuleRecord |
translateModule(NodeFactory factory,
JSContext context,
com.oracle.truffle.api.source.Source source,
JSModuleLoader moduleLoader) |
protected ScriptNode |
translateScript(FunctionNode functionNode) |
static ScriptNode |
translateScript(NodeFactory factory,
JSContext context,
com.oracle.truffle.api.source.Source source,
boolean isParentStrict,
String prologue,
String epilogue) |
static ScriptNode |
translateScript(NodeFactory factory,
JSContext context,
com.oracle.truffle.api.source.Source source,
boolean isParentStrict,
String prologue,
String epilogue,
String[] argumentNames) |
enterCaseNode, enterCatchNode, enterErrorNode, enterExportNode, enterExportSpecifierNode, enterFromNode, enterImportClauseNode, enterImportNode, enterImportSpecifierNode, enterNamedExportsNode, enterNamedImportsNode, enterNameSpaceImportNode, enterPropertyNode, getLexicalContextpublic static final JavaScriptNode[] EMPTY_NODE_ARRAY
protected final JSContext context
protected final NodeFactory factory
protected final com.oracle.truffle.api.source.Source source
protected final String[] argumentNames
protected final int sourceLength
protected final int prologLength
public static ScriptNode translateScript(NodeFactory factory, JSContext context, com.oracle.truffle.api.source.Source source, boolean isParentStrict, String prologue, String epilogue)
public static ScriptNode translateScript(NodeFactory factory, JSContext context, com.oracle.truffle.api.source.Source source, boolean isParentStrict, String prologue, String epilogue, String[] argumentNames)
public static ScriptNode translateEvalScript(NodeFactory factory, JSContext context, com.oracle.truffle.api.source.Source source, boolean isParentStrict, DirectEvalContext directEval)
public static ScriptNode translateInlineScript(NodeFactory factory, JSContext context, Environment env, com.oracle.truffle.api.source.Source source, boolean isParentStrict)
public static ScriptNode translateFunction(NodeFactory factory, JSContext context, Environment env, com.oracle.truffle.api.source.Source source, boolean isParentStrict, FunctionNode rootNode)
public static ScriptNode translateFunction(NodeFactory factory, JSContext context, Environment env, com.oracle.truffle.api.source.Source source, int prologLength, boolean isParentStrict, FunctionNode rootNode)
public static JSModuleRecord translateModule(NodeFactory factory, JSContext context, com.oracle.truffle.api.source.Source source, JSModuleLoader moduleLoader)
protected com.oracle.truffle.js.parser.GraalJSTranslator newTranslator(Environment env, LexicalContext savedLC)
protected final JavaScriptNode transform(Node node)
protected final ScriptNode translateScript(FunctionNode functionNode)
protected final JavaScriptNode transformFunction(FunctionNode functionNode)
public JavaScriptNode enterFunctionNode(FunctionNode functionNode)
TranslatorNodeVisitorenterFunctionNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>functionNode - the nodepublic JavaScriptNode enterReturnNode(ReturnNode returnNode)
TranslatorNodeVisitorenterReturnNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>returnNode - the nodepublic JavaScriptNode enterBlock(Block block)
TranslatorNodeVisitorenterBlock in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>block - the nodepublic JavaScriptNode enterBlockStatement(BlockStatement blockStatement)
TranslatorNodeVisitorenterBlockStatement in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>blockStatement - the nodepublic JavaScriptNode enterLiteralNode(LiteralNode<?> literalNode)
TranslatorNodeVisitorenterLiteralNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>literalNode - the nodepublic JavaScriptNode enterIdentNode(IdentNode identNode)
TranslatorNodeVisitorenterIdentNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>identNode - the nodepublic JavaScriptNode enterVarNode(VarNode varNode)
TranslatorNodeVisitorenterVarNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>varNode - the nodepublic JavaScriptNode enterWhileNode(WhileNode whileNode)
TranslatorNodeVisitorenterWhileNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>whileNode - the nodepublic JavaScriptNode enterForNode(ForNode forNode)
TranslatorNodeVisitorenterForNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>forNode - the nodepublic JavaScriptNode enterLabelNode(LabelNode labelNode)
TranslatorNodeVisitorenterLabelNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>labelNode - the nodepublic JavaScriptNode enterBreakNode(BreakNode breakNode)
TranslatorNodeVisitorenterBreakNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>breakNode - the nodepublic JavaScriptNode enterContinueNode(ContinueNode continueNode)
TranslatorNodeVisitorenterContinueNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>continueNode - the nodepublic JavaScriptNode enterIfNode(IfNode ifNode)
TranslatorNodeVisitorenterIfNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>ifNode - the nodepublic JavaScriptNode enterTernaryNode(TernaryNode ternaryNode)
TranslatorNodeVisitorenterTernaryNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>ternaryNode - the nodepublic JavaScriptNode enterUnaryNode(UnaryNode unaryNode)
TranslatorNodeVisitorenterUnaryNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>unaryNode - the nodepublic JavaScriptNode enterCallNode(CallNode callNode)
TranslatorNodeVisitorenterCallNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>callNode - the nodepublic JavaScriptNode enterBinaryNode(BinaryNode binaryNode)
TranslatorNodeVisitorenterBinaryNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>binaryNode - the nodepublic JavaScriptNode enterAccessNode(AccessNode accessNode)
TranslatorNodeVisitorenterAccessNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>accessNode - the nodepublic JavaScriptNode enterIndexNode(IndexNode indexNode)
TranslatorNodeVisitorenterIndexNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>indexNode - the nodepublic JavaScriptNode enterObjectNode(ObjectNode objectNode)
TranslatorNodeVisitorenterObjectNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>objectNode - the nodepublic JavaScriptNode enterTryNode(TryNode tryNode)
TranslatorNodeVisitorenterTryNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>tryNode - the nodepublic JavaScriptNode enterThrowNode(ThrowNode throwNode)
TranslatorNodeVisitorenterThrowNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>throwNode - the nodepublic JavaScriptNode enterSwitchNode(SwitchNode switchNode)
TranslatorNodeVisitorenterSwitchNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>switchNode - the nodepublic JavaScriptNode enterEmptyNode(EmptyNode emptyNode)
TranslatorNodeVisitorenterEmptyNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>emptyNode - the nodepublic JavaScriptNode enterWithNode(WithNode withNode)
TranslatorNodeVisitorenterWithNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>withNode - the nodepublic JavaScriptNode enterRuntimeNode(RuntimeNode runtimeNode)
TranslatorNodeVisitorenterRuntimeNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>runtimeNode - the nodepublic JavaScriptNode enterDebuggerNode(DebuggerNode debuggerNode)
TranslatorNodeVisitorenterDebuggerNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>debuggerNode - the nodeprotected static String error(String message, long errorToken, LexicalContext lc)
public JavaScriptNode enterExpressionStatement(ExpressionStatement expressionStatement)
TranslatorNodeVisitorenterExpressionStatement in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>expressionStatement - the nodepublic JavaScriptNode enterJoinPredecessorExpression(JoinPredecessorExpression expr)
TranslatorNodeVisitorJoinPredecessorExpression.enterJoinPredecessorExpression in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>expr - the join predecessor expressionpublic JavaScriptNode enterClassNode(ClassNode classNode)
TranslatorNodeVisitorenterClassNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>classNode - the nodepublic JavaScriptNode enterBlockExpression(BlockExpression blockExpression)
TranslatorNodeVisitorenterBlockExpression in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>blockExpression - the nodepublic JavaScriptNode enterParameterNode(ParameterNode paramNode)
TranslatorNodeVisitorenterParameterNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>paramNode - the nodeprotected JavaScriptNode enterDefault(Node node)
TranslatorNodeVisitor
if (x instanceof NodeTypeA) {
...
} else if (x instanceof NodeTypeB) {
...
} else {
...
}
Use a NodeVisitor instead, and this method contents forms the else case.enterDefault in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>node - the node to visit