DebuggingInputBuffer.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:2k
源码类别:

编译器/解释器

开发平台:

Others

  1. package antlr.debug;
  2. import antlr.InputBuffer;
  3. import antlr.CharStreamException;
  4. import java.util.Vector;
  5. import java.io.IOException;
  6. public class DebuggingInputBuffer extends InputBuffer {
  7. private InputBuffer buffer;
  8. private InputBufferEventSupport inputBufferEventSupport;
  9. private boolean debugMode = true;
  10. public DebuggingInputBuffer(InputBuffer buffer) {
  11. this.buffer = buffer;
  12. inputBufferEventSupport = new InputBufferEventSupport(this);
  13. }
  14. public void addInputBufferListener(InputBufferListener l) {
  15.   inputBufferEventSupport.addInputBufferListener(l);
  16. }
  17. public void consume() {
  18. char la = ' ';
  19. try {la = buffer.LA(1);}
  20. catch (CharStreamException e) {} // vaporize it...
  21. buffer.consume();
  22. if (debugMode)
  23. inputBufferEventSupport.fireConsume(la);
  24. }
  25. public void fill(int a) throws CharStreamException {
  26. buffer.fill(a);
  27. }
  28. public Vector getInputBufferListeners() {
  29. return inputBufferEventSupport.getInputBufferListeners();
  30. }
  31. public boolean isDebugMode() {
  32. return debugMode;
  33. }
  34. public boolean isMarked() {
  35. return buffer.isMarked();
  36. }
  37. public char LA(int i) throws CharStreamException {
  38. char la = buffer.LA(i);
  39. if (debugMode)
  40. inputBufferEventSupport.fireLA(la,i);
  41. return la;
  42. }
  43. public int mark() {
  44. int m = buffer.mark();
  45. inputBufferEventSupport.fireMark(m);
  46. return m;
  47. }
  48. public void removeInputBufferListener(InputBufferListener l) {
  49.   if (inputBufferEventSupport != null)
  50.     inputBufferEventSupport.removeInputBufferListener(l);
  51. }
  52. public void rewind(int mark) {
  53. buffer.rewind(mark);
  54. inputBufferEventSupport.fireRewind(mark);
  55. }
  56. public void setDebugMode(boolean value) {
  57. debugMode = value;
  58. }
  59. }