public class SLNodeFactory extends Object
Parser to create nodes. The code is factored out of the
automatically generated parser to keep the attributed grammar of SL small.| Constructor and Description |
|---|
SLNodeFactory(SLLanguage language,
com.oracle.truffle.api.source.Source source) |
| Modifier and Type | Method and Description |
|---|---|
void |
addFormalParameter(org.antlr.v4.runtime.Token nameToken) |
SLExpressionNode |
createAssignment(SLExpressionNode nameNode,
SLExpressionNode valueNode)
Returns an
SLWriteLocalVariableNode for the given parameters. |
SLExpressionNode |
createAssignment(SLExpressionNode nameNode,
SLExpressionNode valueNode,
Integer argumentIndex)
Returns an
SLWriteLocalVariableNode for the given parameters. |
SLExpressionNode |
createBinary(org.antlr.v4.runtime.Token opToken,
SLExpressionNode leftNode,
SLExpressionNode rightNode)
Returns the corresponding subclass of
SLExpressionNode for binary expressions. |
SLStatementNode |
createBreak(org.antlr.v4.runtime.Token breakToken)
Returns an
SLBreakNode for the given token. |
SLExpressionNode |
createCall(SLExpressionNode functionNode,
List<SLExpressionNode> parameterNodes,
org.antlr.v4.runtime.Token finalToken)
Returns an
SLInvokeNode for the given parameters. |
SLStatementNode |
createContinue(org.antlr.v4.runtime.Token continueToken)
Returns an
SLContinueNode for the given token. |
SLStatementNode |
createIf(org.antlr.v4.runtime.Token ifToken,
SLExpressionNode conditionNode,
SLStatementNode thenPartNode,
SLStatementNode elsePartNode)
Returns an
SLIfNode for the given parameters. |
SLExpressionNode |
createNumericLiteral(org.antlr.v4.runtime.Token literalToken) |
SLExpressionNode |
createParenExpression(SLExpressionNode expressionNode,
int start,
int length) |
SLExpressionNode |
createRead(SLExpressionNode nameNode)
Returns a
SLReadLocalVariableNode if this read is a local variable or a
SLFunctionLiteralNode if this read is global. |
SLExpressionNode |
createReadProperty(SLExpressionNode receiverNode,
SLExpressionNode nameNode)
Returns an
SLReadPropertyNode for the given parameters. |
SLStatementNode |
createReturn(org.antlr.v4.runtime.Token t,
SLExpressionNode valueNode)
Returns an
SLReturnNode for the given parameters. |
SLExpressionNode |
createStringLiteral(org.antlr.v4.runtime.Token literalToken,
boolean removeQuotes) |
SLStatementNode |
createWhile(org.antlr.v4.runtime.Token whileToken,
SLExpressionNode conditionNode,
SLStatementNode bodyNode)
Returns an
SLWhileNode for the given parameters. |
SLExpressionNode |
createWriteProperty(SLExpressionNode receiverNode,
SLExpressionNode nameNode,
SLExpressionNode valueNode)
Returns an
SLWritePropertyNode for the given parameters. |
SLStatementNode |
finishBlock(List<SLStatementNode> bodyNodes,
int startPos,
int length) |
SLStatementNode |
finishBlock(List<SLStatementNode> bodyNodes,
int skipCount,
int startPos,
int length) |
void |
finishFunction(SLStatementNode bodyNode) |
Map<com.oracle.truffle.api.strings.TruffleString,com.oracle.truffle.api.RootCallTarget> |
getAllFunctions() |
void |
startBlock() |
void |
startFunction(org.antlr.v4.runtime.Token nameToken,
org.antlr.v4.runtime.Token bodyStartToken) |
public SLNodeFactory(SLLanguage language, com.oracle.truffle.api.source.Source source)
public Map<com.oracle.truffle.api.strings.TruffleString,com.oracle.truffle.api.RootCallTarget> getAllFunctions()
public void startFunction(org.antlr.v4.runtime.Token nameToken,
org.antlr.v4.runtime.Token bodyStartToken)
public void addFormalParameter(org.antlr.v4.runtime.Token nameToken)
public void finishFunction(SLStatementNode bodyNode)
public void startBlock()
public SLStatementNode finishBlock(List<SLStatementNode> bodyNodes, int startPos, int length)
public SLStatementNode finishBlock(List<SLStatementNode> bodyNodes, int skipCount, int startPos, int length)
public SLStatementNode createBreak(org.antlr.v4.runtime.Token breakToken)
SLBreakNode for the given token.breakToken - The token containing the break node's info.public SLStatementNode createContinue(org.antlr.v4.runtime.Token continueToken)
SLContinueNode for the given token.continueToken - The token containing the continue node's info.public SLStatementNode createWhile(org.antlr.v4.runtime.Token whileToken, SLExpressionNode conditionNode, SLStatementNode bodyNode)
SLWhileNode for the given parameters.whileToken - The token containing the while node's infoconditionNode - The conditional node for this while loopbodyNode - The body of the while looppublic SLStatementNode createIf(org.antlr.v4.runtime.Token ifToken, SLExpressionNode conditionNode, SLStatementNode thenPartNode, SLStatementNode elsePartNode)
SLIfNode for the given parameters.ifToken - The token containing the if node's infoconditionNode - The condition node of this if statementthenPartNode - The then part of the ifelsePartNode - The else part of the if (null if no else part)public SLStatementNode createReturn(org.antlr.v4.runtime.Token t, SLExpressionNode valueNode)
SLReturnNode for the given parameters.t - The token containing the return node's infovalueNode - The value of the return (null if not returning a value)public SLExpressionNode createBinary(org.antlr.v4.runtime.Token opToken, SLExpressionNode leftNode, SLExpressionNode rightNode)
SLExpressionNode for binary expressions.
These nodes are currently not instrumented.opToken - The operator of the binary expressionleftNode - The left node of the expressionrightNode - The right node of the expressionpublic SLExpressionNode createCall(SLExpressionNode functionNode, List<SLExpressionNode> parameterNodes, org.antlr.v4.runtime.Token finalToken)
SLInvokeNode for the given parameters.functionNode - The function being calledparameterNodes - The parameters of the function callfinalToken - A token used to determine the end of the sourceSelection for this callpublic SLExpressionNode createAssignment(SLExpressionNode nameNode, SLExpressionNode valueNode)
SLWriteLocalVariableNode for the given parameters.nameNode - The name of the variable being assignedvalueNode - The value to be assignedpublic SLExpressionNode createAssignment(SLExpressionNode nameNode, SLExpressionNode valueNode, Integer argumentIndex)
SLWriteLocalVariableNode for the given parameters.nameNode - The name of the variable being assignedvalueNode - The value to be assignedargumentIndex - null or index of the argument the assignment is assigningpublic SLExpressionNode createRead(SLExpressionNode nameNode)
SLReadLocalVariableNode if this read is a local variable or a
SLFunctionLiteralNode if this read is global. In SL, the only global names are
functions.nameNode - The name of the variable/function being readpublic SLExpressionNode createStringLiteral(org.antlr.v4.runtime.Token literalToken, boolean removeQuotes)
public SLExpressionNode createNumericLiteral(org.antlr.v4.runtime.Token literalToken)
public SLExpressionNode createParenExpression(SLExpressionNode expressionNode, int start, int length)
public SLExpressionNode createReadProperty(SLExpressionNode receiverNode, SLExpressionNode nameNode)
SLReadPropertyNode for the given parameters.receiverNode - The receiver of the property accessnameNode - The name of the property being accessedpublic SLExpressionNode createWriteProperty(SLExpressionNode receiverNode, SLExpressionNode nameNode, SLExpressionNode valueNode)
SLWritePropertyNode for the given parameters.receiverNode - The receiver object of the property assignmentnameNode - The name of the property being assignedvalueNode - The value to be assigned