package edu.berkeley.sbp.tib;
import edu.berkeley.sbp.*;
import edu.berkeley.sbp.misc.*;
+import edu.berkeley.sbp.chr.*;
import java.util.*;
import java.io.*;
* experimentation with the TIB spec. Once the spec is finalized it
* should probably be rewritten.
*/
-public class Tib implements Token.Stream<Character> {
+public class Tib implements Input.Stream<Character> {
public Tib(String s) throws IOException { this(new StringReader(s)); }
public Tib(Reader r) throws IOException { this(new BufferedReader(r)); }
int _row = 1;
int _col = 0;
- public Token.Location getLocation() { return new CartesianInput.Location(_row, _col); }
+ public Input.Location getLocation() { return new CartesianInput.Location(_row, _col); }
private BufferedReader br;
+ char left = CharRange.left;
+ char right = CharRange.right;
+
boolean waiting = false;
char waitingChar = ' ';
boolean indenting = true;
private ArrayList<Integer> istack = new ArrayList<Integer>();
public Character next(int numstates, int resets, int waits) throws IOException {
Character ret = nextc(numstates, resets);
- if (ret==CharToken.left) System.out.print("\033[31m{\033[0m");
- else if (ret==CharToken.right) System.out.print("\033[31m}\033[0m");
+ if (ret==left) System.out.print("\033[31m{\033[0m");
+ else if (ret==right) System.out.print("\033[31m}\033[0m");
else if (ret==null) return null;
else System.out.print(ret);
return ret;
if (i==-1) {
if (istack.size() > 1) {
istack.remove(istack.size()-1);
- return CharToken.right;
+ return right;
}
return null;
}
indenting = false;
waitingChar = c;
waiting = true;
- waitingBrace = CharToken.left;
- return CharToken.right;
+ waitingBrace = left;
+ return right;
//return nextc(numstates);
}
blank = false;
indenting = false;
istack.add(indentation);
//System.out.print("\033[31m+"+indentation+"+\033[0m");
- return CharToken.left;
+ return left;
} else /*if (indentation < last)*/ {
istack.remove(istack.size()-1);
//System.out.print("\033[31m-"+last+"-\033[0m");
blank = true;
- return CharToken.right;
+ return right;
}
} else {
blank = false;
public Character done(char c) {
switch(c) {
- case '{': return CharToken.left;
- case '}': return CharToken.right;
+ case '{': return left;
+ case '}': return right;
default: return c;
}
}
return nonTerminal(s,
new PreSequence[][] {
new PreSequence[] {
- new PreSequence(new Element[] { CharToken.leftBrace,
+ new PreSequence(new Element[] { CharRange.leftBrace,
ws,
u2,
ws,
- CharToken.rightBrace
+ CharRange.rightBrace
})
}
},
/*
public class Braces extends Union {
- private static final Element left = CharToken.string("{");
- private static final Element right = CharToken.string("}");
+ private static final Element left = string("{");
+ private static final Element right = string("}");
public static String join(Object[] e) {
StringBuffer ret = new StringBuffer();