public final class JavaScriptTranslator extends TranslatorNodeVisitor<LexicalContext,JavaScriptNode>
| Modifier and Type | Field and Description |
|---|---|
protected ScriptOrModule |
activeScriptOrModule |
protected List<String> |
argumentNames |
static String |
ARGUMENTS |
protected JSContext |
context |
static String |
DIR__ |
static JavaScriptNode[] |
EMPTY_NODE_ARRAY |
protected NodeFactory |
factory |
static String |
FILE__ |
static com.oracle.truffle.api.strings.TruffleString |
GENERATOREXPR |
static com.oracle.truffle.api.strings.TruffleString |
GENERATORSTATE |
static String |
IMPORT |
static String |
IMPORT_META |
static String |
LINE__ |
protected int |
prologLength |
protected com.oracle.truffle.api.source.Source |
source |
protected int |
sourceLength |
static com.oracle.truffle.api.strings.TruffleString |
SUPER_CALLED_TWICE |
static com.oracle.truffle.api.strings.TruffleString |
UNSUPPORTED_REFERENCE_TO_SUPER |
lc| Modifier and Type | Method and Description |
|---|---|
JSFrameSlot |
addGeneratorStateSlot(JSFrameDescriptor functionFrameDescriptor,
com.oracle.truffle.api.frame.FrameSlotKind slotKind) |
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 |
enterSwitchNode(SwitchNode switchNode)
Callback for entering a SwitchNode
|
JavaScriptNode |
enterTemplateLiteralNode(TemplateLiteralNode templateLiteralNode)
Callback for entering a TemplateLiteralNode
|
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 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,
ScriptOrModule activeScriptOrModule) |
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,
ScriptOrModule activeScriptOrModule) |
static JSModuleData |
translateModule(NodeFactory factory,
JSContext context,
com.oracle.truffle.api.source.Source source) |
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,
List<String> argumentNames) |
enterCaseNode, enterCatchNode, enterClassElement, enterErrorNode, enterExportNode, enterExportSpecifierNode, enterFromNode, enterImportClauseNode, enterImportNode, enterImportSpecifierNode, enterNamedExportsNode, enterNamedImportsNode, enterNameSpaceImportNode, enterPropertyNode, getLexicalContextpublic static final com.oracle.truffle.api.strings.TruffleString SUPER_CALLED_TWICE
public static final com.oracle.truffle.api.strings.TruffleString UNSUPPORTED_REFERENCE_TO_SUPER
public static final String LINE__
public static final String FILE__
public static final String DIR__
public static final String IMPORT
public static final String IMPORT_META
public static final com.oracle.truffle.api.strings.TruffleString GENERATOREXPR
public static final com.oracle.truffle.api.strings.TruffleString GENERATORSTATE
public static final String ARGUMENTS
public 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 int sourceLength
protected final int prologLength
protected final ScriptOrModule activeScriptOrModule
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, List<String> argumentNames)
public static ScriptNode translateEvalScript(NodeFactory factory, JSContext context, com.oracle.truffle.api.source.Source source, boolean isParentStrict, DirectEvalContext directEval, ScriptOrModule activeScriptOrModule)
public static ScriptNode translateInlineScript(NodeFactory factory, JSContext context, Environment env, com.oracle.truffle.api.source.Source source, boolean isParentStrict, ScriptOrModule activeScriptOrModule)
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 JSModuleData translateModule(NodeFactory factory, JSContext context, com.oracle.truffle.api.source.Source source)
protected com.oracle.truffle.js.parser.GraalJSTranslator newTranslator(Environment env, LexicalContext savedLC)
protected final JavaScriptNode transform(Node node)
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 JSFrameSlot addGeneratorStateSlot(JSFrameDescriptor functionFrameDescriptor, com.oracle.truffle.api.frame.FrameSlotKind slotKind)
public 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 enterTemplateLiteralNode(TemplateLiteralNode templateLiteralNode)
TranslatorNodeVisitorenterTemplateLiteralNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>templateLiteralNode - the nodepublic JavaScriptNode enterDebuggerNode(DebuggerNode debuggerNode)
TranslatorNodeVisitorenterDebuggerNode in class TranslatorNodeVisitor<LexicalContext,JavaScriptNode>debuggerNode - the nodepublic 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