Example usage for org.antlr.v4.runtime Token getStartIndex

List of usage examples for org.antlr.v4.runtime Token getStartIndex

Introduction

In this page you can find the example usage for org.antlr.v4.runtime Token getStartIndex.

Prototype

int getStartIndex();

Source Link

Document

The starting character index of the token This method is optional; return -1 if not implemented.

Usage

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());
}