/** a location <i>between tokens<i> in the input stream */
public static interface Location<Tok> extends Comparable<Location> {
public String toString();
-
- /** an implementation of Location for a cartesian grid (row, col) */
- public static class Cartesian<Tok> implements Location<Tok>, Comparable<Location> {
- protected final int row;
- protected final int col;
- public String toString() { return row+":"+col; }
- public int getCol() { return col; }
- public int getRow() { return row; }
- public Cartesian(int col, int row) { this.row = row; this.col = col; }
- public int compareTo(Location loc) throws ClassCastException {
- if (!(loc instanceof Cartesian)) throw new ClassCastException();
- Cartesian<Tok> c = (Cartesian<Tok>)loc;
- if (row < c.row) return -1;
- if (row > c.row) return 1;
- if (col < c.col) return -1;
- if (col > c.col) return 1;
- return 0;
- }
- }
}
public static class Region<Loc extends Location> /* implements Topology<Location<Tok>> */ {
import edu.berkeley.sbp.misc.*;
import edu.berkeley.sbp.Input.Location;
-public class CharInput extends CartesianInput<Character> {
+public class CharInput extends Cartesian.Input<Character> {
private final Reader r;
public CharInput(String s) { this(new StringReader(s)); }
+++ /dev/null
-package edu.berkeley.sbp.misc;
-import java.io.*;
-import java.util.*;
-import java.lang.reflect.*;
-import java.lang.ref.*;
-import edu.berkeley.sbp.*;
-import edu.berkeley.sbp.Input.Location;
-import edu.berkeley.sbp.util.*;
-
-public abstract class CartesianInput<Token> implements Input<Token> {
-
- public abstract Token next() throws IOException;
- public abstract boolean isCR();
-
- long then = 0;
- private Input.Location.Cartesian location = new Input.Location.Cartesian(0, 1);
- public Input.Location getLocation() { return location; }
-
- public Token next(int numstates, int resets, int waits) throws IOException {
- int line = location.getRow();
- int col = location.getCol();
- Token t = next();
- if (t==null) return null;
- String s = " line "+line+", col " + col;
- while(s.length() < 20) s += " ";
- s += "[ambiguity level: " + (numstates-1) + "] [resets: " + resets + "] [waits: " + waits + "]";
- long now = System.currentTimeMillis();
- if (now-then > 10) {
- then = now;
- System.out.print(s + " \r");
- }
- if (isCR()) {
- line++;
- col = 1;
- } else {
- col++;
- }
- location = new Input.Location.Cartesian(col, line);
- return t;
- }
-}
+
// DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED
new edu.berkeley.sbp.Tree(null, "grammar", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "psx", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "ps", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "nonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+
int _row = 1;
int _col = 0;
- public Input.Location getLocation() { return new Input.Location.Cartesian(_col, _row); }
+ public Input.Location getLocation() { return new Cartesian.Location(_col, _row); }
private BufferedReader br;
char left = CharRange.left;