public override void Read(Tokeniser t, CharacterReader r) { string data = r.ConsumeTo("]]>"); t.Emit(data); r.MatchConsume("]]>"); t.Transition(Data); }
public override void Read(Tokeniser t, CharacterReader r) { // TODO: handle bogus comment starting from eof. when does that trigger? // rewind to capture char that lead us here r.Unconsume(); Token.Comment comment = new Token.Comment(); comment.data.Append(r.ConsumeTo('>')); comment.IsBogus = true; // TODO: replace nullChar with replaceChar t.Emit(comment); t.AdvanceTransition(Data); }
public override void Read(Tokeniser t, CharacterReader r) { switch (r.Current) { case nullChar: t.Error(this); r.Advance(); t.Emit(replacementChar); break; case eof: t.Emit(Token.EOF.Instance); break; default: string data = r.ConsumeTo(nullChar); t.Emit(data); break; } }