class ParserBase { dchar[] document; int pos = 0; void parse(char[] str) { // load doc and sort out encoding so we can go back and forth.. this.document = std.utf.toUTF32(str); } int getChar() { int r= cast(int)document[pos]; pos++; return r; } Value ungetChar(int n) { pos -= n; return null; } int getPos() { return pos; } Value setPos(int n) { pos = n; return null; } }