null
mais ce sera vite pénible.
class Token { final static int INT=0, ARROW=1, EOF=2, SEMI=3 ; int nature ; int asInt ; Token (int nat) { nature = nat ; } Token (int nat, int val) { nature = nat ; asInt = val ; } } |
Reader
dans un champ privé.
class Lexer { private Reader in ; Lexer (Reader in) { this.in = in ; } Token read() { … } } |
Graph (Reader in) { Lexer lexer = new Lexer (in) ; succ = new List[readInt(lexer.read())] ; Token tok = lexer.read() ; while (tok.nature != Token.EOF) { int src = readInt(tok) ; readArrow(lexer.read()) ; tok = lexer.read() ; while (tok.nature != Token.SEMI) { int dst = readInt(tok) ; arc(src,dst) ; tok = lexer.read() ; } tok = lexer.read() ; } } |
error
, readInt
et
readToken
sont :
private static void error(String msg) { System.err.println("Erreur de syntaxe : " + msg) ; System.exit(2) ; } private static int readInt(Token tok) { if (tok.nature != Token.INT) error("Entier attendu"); return tok.asInt ; } private static void readArrow(Token tok) { if (tok.nature != Token.ARROW) error("Flèche attendue"); } |