List of usage examples for org.antlr.v4.runtime Token getText
String getText();
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmExpressionNode createReassignment(Token nameToken, LlvmExpressionNode valueNode) { FrameSlot frameLlvmot = frameDescriptor.findOrAddFrameSlot(nameToken.getText()); lexicalScope.locals.put(nameToken.getText(), frameLlvmot); final int start = nameToken.getStartIndex(); final int length = start - valueNode.getSourceSection().getCharIndex(); return LlvmWriteLocalArrayVariableNodeGen.create(source.createSection("=", start, length), valueNode, frameLlvmot);//w w w .j a v a 2 s. co m }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmStatementNode createBasicBlockNode(Token nameToken, List<LlvmStatementNode> bodyNodes, int startPos, int length) { // lexicalScope = lexicalScope.outer; FrameSlot frameLlvmot = frameDescriptor.findOrAddFrameSlot(nameToken.getText()); lexicalScope.locals.put(nameToken.getText(), frameLlvmot); List<LlvmStatementNode> flattenedNodes = new ArrayList<>(bodyNodes.size()); flattenBlocks(bodyNodes, flattenedNodes); final SourceSection src = source.createSection(nameToken.getText(), startPos, length); LlvmBlockNode blockNode = new LlvmBlockNode(src, flattenedNodes.toArray(new LlvmStatementNode[flattenedNodes.size()])); // ??// w ww . j a va2s . c o m blockNode.assignSourceSection(src); lexicalScope.blockMap.put(nameToken.getText(), blockNode); return blockNode; }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmStatementNode createCallBasicBlock(LlvmExpressionNode blockNode, Token finalToken) { final int startPos = blockNode.getSourceSection().getCharIndex(); final int endPos = finalToken.getStartIndex() + finalToken.getText().length(); final SourceSection src = source.createSection(blockNode.getSourceSection().getIdentifier(), startPos, endPos - startPos);/* www . j a v a 2 s . c om*/ // return LlvmInvokeBasicBlockNode.create(src, blockNode); return lexicalScope.blockMap.get(blockNode.getSourceSection().getIdentifier()); }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmExpressionNode createisReadBlock(Token nameToken) { FrameSlot frameLlvmot = lexicalScope.locals.get(nameToken.getText()); final SourceSection src = srcFromToken(nameToken); if (frameLlvmot != null) { return LlvmReadLocalVariableNodeGen.create(src, frameLlvmot); } else {/* w w w .j a va 2 s . co m*/ // LlvmBlockNode block = new LlvmBlockNode(src, null); // block.assignSourceSection(src); // frameLlvmot = frameDescriptor.findOrAddFrameSlot(nameToken.getText()); // lexicalScope.locals.put(nameToken.getText(), frameLlvmot); // return new LlvmBasicBlockLiteralNode(src, block); return null; } }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmExpressionNode createRead(Token nameToken) { final FrameSlot frameLlvmot = lexicalScope.locals.get(nameToken.getText()); final SourceSection src = srcFromToken(nameToken); if (frameLlvmot != null) { /* Read of a local variable. */ // return new LlvmFunctionLiteralNode(src, // context.getFunctionRegistry().lookup(nameToken.val)); return LlvmReadLocalVariableNodeGen.create(src, frameLlvmot); } else {/*ww w.ja v a 2 s.c o m*/ /* Read of a global name. In our language, the only global names are functions. */ return new LlvmFunctionLiteralNode(src, context.getFunctionRegistry().lookup(nameToken.getText())); } }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmExpressionNode createStringLiteral(Token literalToken) { /* Remove the trailing and ending " */ String literal = literalToken.getText(); assert literal.length() >= 2 && literal.startsWith("\"") && literal.endsWith("\""); final SourceSection src = srcFromToken(literalToken); literal = literal.substring(1, literal.length() - 1); return new LlvmStringLiteralNode(src, literal); }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmExpressionNode createNumericLiteral(Token literalToken) { final SourceSection src = srcFromToken(literalToken); try {/*from ww w . ja v a 2s .c o m*/ /* Try if the literal is small enough to fit into a long value. */ return new LlvmLongLiteralNode(src, Long.parseLong(literalToken.getText())); } catch (NumberFormatException ex) { /* Overflow of long value, so fall back to BigInteger. */ return new LlvmBigIntegerLiteralNode(src, new BigInteger(literalToken.getText())); } }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmExpressionNode createFloatLiteral(Token literalToken) { final SourceSection src = srcFromToken(literalToken); try {//ww w .j a va2s . c om /* Try if the literal is small enough to fit into a long value. */ return new LlvmFloatLiteralNode(src, Long.parseLong(literalToken.getText())); } catch (NumberFormatException ex) { /* Overflow of long value, so fall back to BigInteger. */ return new LlvmDoubleLiteralNode(src, new Double(literalToken.getText())); } }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmExpressionNode createArrayLiteral(Token literalToken) { final SourceSection src = srcFromToken(literalToken); String[] str = literalToken.getText().split("x"); switch (str[0]) { case "i32": case "i8": return new LlvmIntArrayLiteralNode(src, new int[Integer.parseInt(str[1])]); case "i64": return new LlvmBigIntArrayLiteralNode(src, new BigInteger[Integer.parseInt(str[1])]); }/*ww w. j a va2 s . co m*/ return null; }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
/** * Returns an {@link LlvmReadPropertyNode} for the given parameters. * * @param receiverNode The receiver of the property access * @param nameToken The name of the property being accessed * @return An LlvmExpressionNode for the given parameters. *//*from w w w . j a v a 2 s.c om*/ public LlvmExpressionNode createReadProperty(LlvmExpressionNode receiverNode, Token nameToken) { final int startPos = receiverNode.getSourceSection().getCharIndex(); final int endPos = nameToken.getStartIndex() + nameToken.getText().length(); final SourceSection src = source.createSection(".", startPos, endPos - startPos); return LlvmReadPropertyNode.create(src, receiverNode, nameToken.getText()); }