List of usage examples for org.antlr.v4.runtime Token getStartIndex
int getStartIndex();
From source file:com.koltem.filetype.verilog.editor.VerilogErrorListener.java
protected void underlineError(Recognizer recognizer, Token offendingToken, int line, int charPositionInLine) { CommonTokenStream tokens = (CommonTokenStream) recognizer.getInputStream(); String input = tokens.getTokenSource().getInputStream().toString(); String[] lines = input.split("\n"); String errorLine = lines[line - 1]; System.err.println(errorLine); for (int i = 0; i < charPositionInLine; i++) { System.err.print(" "); }//from w ww . jav a2 s .com int start = offendingToken.getStartIndex(); int stop = offendingToken.getStopIndex(); if (start >= 0 && stop >= 0) { for (int i = start; i <= stop; i++) { System.err.print("^"); } } System.err.println(); }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public void startFunction(Token nameToken, int bodyStartPos) { assert functionStartPos == 0; assert functionName == null; assert functionBodyStartPos == 0; assert parameterCount == 0; assert frameDescriptor == null; assert lexicalScope == null; functionStartPos = nameToken.getStartIndex(); functionName = nameToken.getText();/* ww w.j a va 2 s . co m*/ functionBodyStartPos = bodyStartPos; frameDescriptor = new FrameDescriptor(); methodNodes = new ArrayList<>(); startBlock(); }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmStatementNode createWhile(Token whileToken, LlvmExpressionNode conditionNode, Map<String, LlvmStatementNode> bodyNode, Token nameToken) { final int start = whileToken.getStartIndex(); List<LlvmStatementNode> whileList = new ArrayList(); if (bodyNode.values() instanceof List) { whileList = (List) bodyNode.values(); } else {// w ww . ja v a2 s. co m whileList = new ArrayList(bodyNode.values()); } List<LlvmStatementNode> whileBody = new ArrayList(); int length = 0; while (length < whileList.size()) { if (whileList.get(length) != null) whileBody.add(whileList.get(length)); length++; } final int end = whileBody.get(whileBody.size() - 1).getSourceSection().getCharEndIndex(); whileBody.add(lexicalScope.blockMap.get(nameToken.getText())); LlvmStatementNode whileReturnNode = this.createBasicBlockNode(nameToken, whileBody, start, end - start); final LlvmWhileNode whileNode = new LlvmWhileNode( source.createSection(whileToken.getText(), start, end - start), conditionNode, whileReturnNode); return whileNode; // final int start = whileToken.getStartIndex(); // final int end = bodyNode.getSourceSection().getCharEndIndex(); // List<LlvmStatementNode> whileBody = new ArrayList(); // System.out.println(nameToken.getText()); // whileBody.add(bodyNode); // whileBody.add(lexicalScope.blockMap.get(nameToken.getText())); // // bodyNode = this.createBasicBlockNode(nameToken, whileBody, start, end - start); // final LlvmWhileNode whileNode = new LlvmWhileNode(source.createSection(whileToken.getText(), // start, end - start), conditionNode, bodyNode); // return whileNode; }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmStatementNode createIf(Token ifToken, String str, LlvmExpressionNode conditionNode, LlvmStatementNode thenPartNode, LlvmStatementNode elsePartNode) { final int start = ifToken.getStartIndex(); final int end = elsePartNode == null ? thenPartNode.getSourceSection().getCharEndIndex() : elsePartNode.getSourceSection().getCharEndIndex(); final SourceSection src = source.createSection(str, start, end - start); final LlvmIfNode ifNode = new LlvmIfNode(source.createSection(ifToken.getText(), start, end - start), conditionNode, thenPartNode, elsePartNode); return ifNode; }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
public LlvmStatementNode createReturn(Token t, LlvmExpressionNode valueNode) { final int start = t.getStartIndex(); final int length = valueNode == null ? t.getText().length() : valueNode.getSourceSection().getCharEndIndex() - start; final LlvmReturnNode returnNode = new LlvmReturnNode(source.createSection(t.getText(), start, length), valueNode);//from w w w.j a v a 2 s.c o m // final LlvmStatementNode returnNode = null; return returnNode; }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
/** * Returns an {@link LlvmInvokeNode} for the given parameters. * * @param functionNode The function being called * @param parameterNodes The parameters of the function call * @param finalToken A token used to determine the end of the sourceSelection for this call * @return An LlvmInvokeNode for the given parameters. */// w w w.ja va2 s .c o m public LlvmExpressionNode createCall(LlvmExpressionNode functionNode, List<LlvmExpressionNode> parameterNodes, Token finalToken) { final int startPos = functionNode.getSourceSection().getCharIndex(); final int endPos = finalToken.getStartIndex() + finalToken.getText().length(); final SourceSection src = source.createSection(functionNode.getSourceSection().getIdentifier(), startPos, endPos - startPos); return LlvmInvokeNode.create(src, functionNode, parameterNodes.toArray(new LlvmExpressionNode[parameterNodes.size()])); }
From source file:com.oracle.truffle.llvm.parser.LlvmNodeFactory.java
License:Open Source License
/** * Returns an {@link LlvmWriteLocalVariableNode} for the given parameters. * * @param nameToken The name of the variable being assigned * @param valueNode The value to be assigned * @return An LlvmExpressionNode for the given parameters. */// ww w .j av a 2 s . com public LlvmExpressionNode createAssignment(Token nameToken, LlvmExpressionNode valueNode) { FrameSlot frameLlvmot = frameDescriptor.findOrAddFrameSlot(nameToken.getText()); lexicalScope.locals.put(nameToken.getText(), frameLlvmot); final int start = nameToken.getStartIndex(); final int length = valueNode.getSourceSection().getCharEndIndex() - start; return LlvmWriteLocalVariableNodeGen.create(source.createSection("=", start, length), valueNode, frameLlvmot); }
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);/*from w w w .j ava2s. c o m*/ }
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);/*from w w w .j av a 2 s . c o m*/ // 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
/** * 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 www. jav a 2s . c o m 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()); }