private int forward(int c) { if (c != RubyYaccLexer.EOF) { offset++; switch (c) { case '\n': line++; break; case '\r': // We are peeking ahead. but we need to make sure we uncapture after this read. Otherwise // we double report \n if ((c = read()) != '\n') { unread(c); c = '\r'; } else { if (captureSource){ uncaptureFeature(c); captureFeature('\r'); } } break; } } if (captureSource) { captureFeature(c); } return c; }
@Override public ByteList readUntil(char marker) throws IOException { return readUntil(marker, true); }
@Override public void unreadMany(CharSequence line) { for (int i = line.length() - 1; i >= 0; i--) { unread(line.charAt(i)); } }
public static LexerSource getSource(String name, byte[] content, List<String> list, ParserConfiguration configuration) { return new ByteArrayLexerSource(name, content, list, configuration.getLineNumber(), configuration.hasExtraPositionInformation()); }
@Override public void unread(int c) { if (c == RubyYaccLexer.EOF) { return; } if (captureSource) { uncaptureFeature(c); } readCursor.unread(c); }
@Override public InputStream getRemainingAsStream() { ByteList buf = new ByteList(128); int c; while ((c = read()) != RubyYaccLexer.EOF) { buf.append(c); } return new ByteArrayInputStream(buf.getUnsafeBytes(), 0, buf.length()); }
@Override public String getCurrentLine() { int lineOffset = 0; int c; while ((c = readCursor.at(lineOffset - 1)) != '\n' && c != RubyYaccLexer.EOF) { lineOffset--; } String ptr = makePointer(-(lineOffset + 1)); StringBuilder lineBuilder = new StringBuilder(); for (c = readCursor.at(lineOffset); c != '\n' && c != RubyYaccLexer.EOF; c = readCursor.at(++lineOffset)) { lineBuilder.append((char) c); } lineBuilder.append('\n').append(ptr); return lineBuilder.toString(); }
@Override public void unreadMany(CharSequence line) { for (int i = line.length() - 1; i >= 0; i--) { unread(line.charAt(i)); } }
public static LexerSource getSource(String name, byte[] content, List<String> list, ParserConfiguration configuration) { return new ByteArrayLexerSource(name, content, list, configuration.getLineNumber(), configuration.hasExtraPositionInformation()); }
@Override public void unread(int c) { if (c == RubyYaccLexer.EOF) { return; } if (captureSource) { uncaptureFeature(c); } readCursor.unread(c); }
@Override public InputStream getRemainingAsStream() { ByteList buf = new ByteList(128); int c; while ((c = read()) != RubyYaccLexer.EOF) { buf.append(c); } return new ByteArrayInputStream(buf.getUnsafeBytes(), 0, buf.length()); }
@Override public String getCurrentLine() { int lineOffset = 0; int c; while ((c = readCursor.at(lineOffset - 1)) != '\n' && c != RubyYaccLexer.EOF) { lineOffset--; } String ptr = makePointer(-(lineOffset + 1)); StringBuilder lineBuilder = new StringBuilder(); for (c = readCursor.at(lineOffset); c != '\n' && c != RubyYaccLexer.EOF; c = readCursor.at(++lineOffset)) { lineBuilder.append((char) c); } lineBuilder.append('\n').append(ptr); return lineBuilder.toString(); }
private int forward(int c) { if (c != RubyYaccLexer.EOF) { offset++; switch (c) { case '\n': line++; break; case '\r': // We are peeking ahead. but we need to make sure we uncapture after this read. Otherwise // we double report \n if ((c = read()) != '\n') { unread(c); c = '\r'; } else { if (captureSource){ uncaptureFeature(c); captureFeature('\r'); } } break; } } if (captureSource) { captureFeature(c); } return c; }
@Override public ByteList readLineBytes() throws IOException { return readUntil('\n', false); }
private void backward(int c) { offset--; if (c == '\n') { line--; if (readCursor.at(-1) == '\r') { unread('\r'); } } }
@Override public ByteList readLineBytes() throws IOException { return readUntil('\n', false); }
private void backward(int c) { offset--; if (c == '\n') { line--; if (readCursor.at(-1) == '\r') { unread('\r'); } } }
@Override public ByteList readUntil(char marker) throws IOException { return readUntil(marker, true); }