package ast; import org.antlr.v4.runtime.ParserRuleContext; public class CodeLocation { final private int NOT_SET = -1; public int startLine = NOT_SET; public int startPos = NOT_SET; public int startIndex = NOT_SET; public int stopIndex = NOT_SET; public CodeLocation() { } public CodeLocation(ParserRuleContext ctx) { initializeFromContext(ctx); } private void initializeFromContext(ParserRuleContext ctx) { startLine = ctx.start.getLine(); startPos = ctx.start.getCharPositionInLine(); startIndex = ctx.start.getStartIndex(); if (ctx.stop != null) stopIndex = ctx.stop.getStopIndex(); else stopIndex = NOT_SET; } @Override public String toString() { return String.format("%d:%d:%d:%d", startLine, startPos, startIndex, stopIndex); } }