DebuggingCharScanner.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:7k
源码类别:
编译器/解释器
开发平台:
Others
- package antlr.debug;
- import antlr.*;
- import antlr.collections.*;
- import antlr.collections.impl.*;
- import java.io.*;
- public abstract class DebuggingCharScanner extends CharScanner implements DebuggingParser {
- private ParserEventSupport parserEventSupport = new ParserEventSupport(this);
- private boolean _notDebugMode = false;
- protected String ruleNames[];
- protected String semPredNames[];
- public DebuggingCharScanner(InputBuffer cb) {
- super(cb);
- }
- public DebuggingCharScanner(LexerSharedInputState state) {
- super(state);
- }
- public void addMessageListener(MessageListener l) {
- parserEventSupport.addMessageListener(l);
- }
- public void addNewLineListener(NewLineListener l) {
- parserEventSupport.addNewLineListener(l);
- }
- public void addParserListener(ParserListener l) {
- parserEventSupport.addParserListener(l);
- }
- public void addParserMatchListener(ParserMatchListener l) {
- parserEventSupport.addParserMatchListener(l);
- }
- public void addParserTokenListener(ParserTokenListener l) {
- parserEventSupport.addParserTokenListener(l);
- }
- public void addSemanticPredicateListener(SemanticPredicateListener l) {
- parserEventSupport.addSemanticPredicateListener(l);
- }
- public void addSyntacticPredicateListener(SyntacticPredicateListener l) {
- parserEventSupport.addSyntacticPredicateListener(l);
- }
- public void addTraceListener(TraceListener l) {
- parserEventSupport.addTraceListener(l);
- }
- public void consume() throws CharStreamException {
- int la_1 = -99;
- try {la_1 = LA(1);}
- catch (CharStreamException ignoreAnIOException) {}
- super.consume();
- parserEventSupport.fireConsume(la_1);
- }
- protected void fireEnterRule(int num, int data) {
- if (isDebugMode())
- parserEventSupport.fireEnterRule(num,inputState.guessing,data);
- }
- protected void fireExitRule(int num, int ttype) {
- if (isDebugMode())
- parserEventSupport.fireExitRule(num,inputState.guessing, ttype);
- }
- protected boolean fireSemanticPredicateEvaluated(int type, int num, boolean condition) {
- if (isDebugMode())
- return parserEventSupport.fireSemanticPredicateEvaluated(type,num,condition,inputState.guessing);
- else
- return condition;
- }
- protected void fireSyntacticPredicateFailed() {
- if (isDebugMode())
- parserEventSupport.fireSyntacticPredicateFailed(inputState.guessing);
- }
- protected void fireSyntacticPredicateStarted() {
- if (isDebugMode())
- parserEventSupport.fireSyntacticPredicateStarted(inputState.guessing);
- }
- protected void fireSyntacticPredicateSucceeded() {
- if (isDebugMode())
- parserEventSupport.fireSyntacticPredicateSucceeded(inputState.guessing);
- }
- public String getRuleName(int num) {
- return ruleNames[num];
- }
- public String getSemPredName(int num) {
- return semPredNames[num];
- }
- public synchronized void goToSleep() {
- try {wait();}
- catch (InterruptedException e) { }
- }
- public boolean isDebugMode() {
- return !_notDebugMode;
- }
- public char LA(int i) throws CharStreamException {
- char la = super.LA(i);
- parserEventSupport.fireLA(i, la);
- return la;
- }
- protected Token makeToken(int t) {
- // do something with char buffer???
- // try {
- // Token tok = (Token)tokenObjectClass.newInstance();
- // tok.setType(t);
- // // tok.setText(getText()); done in generated lexer now
- // tok.setLine(line);
- // return tok;
- // }
- // catch (InstantiationException ie) {
- // panic("can't instantiate a Token");
- // }
- // catch (IllegalAccessException iae) {
- // panic("Token class is not accessible");
- // }
- return super.makeToken(t);
- }
- public void match(char c) throws MismatchedCharException, CharStreamException {
- char la_1 = LA(1);
- try {
- super.match(c);
- parserEventSupport.fireMatch(c, inputState.guessing);
- }
- catch (MismatchedCharException e) {
- if (inputState.guessing == 0)
- parserEventSupport.fireMismatch(la_1, c, inputState.guessing);
- throw e;
- }
- }
- public void match(BitSet b) throws MismatchedCharException, CharStreamException {
- String text = this.text.toString();
- char la_1 = LA(1);
- try {
- super.match(b);
- parserEventSupport.fireMatch(la_1, b, text, inputState.guessing);
- }
- catch (MismatchedCharException e) {
- if (inputState.guessing == 0)
- parserEventSupport.fireMismatch(la_1, b, text, inputState.guessing);
- throw e;
- }
- }
- public void match(String s) throws MismatchedCharException, CharStreamException {
- StringBuffer la_s = new StringBuffer("");
- int len = s.length();
- // peek at the next len worth of characters
- try {
- for(int i = 1; i <= len; i++) {
- la_s.append(super.LA(i));
- }
- }
- catch(Exception ignoreMe) {}
- try {
- super.match(s);
- parserEventSupport.fireMatch(s, inputState.guessing);
- }
- catch (MismatchedCharException e) {
- if (inputState.guessing == 0)
- parserEventSupport.fireMismatch(la_s.toString(), s, inputState.guessing);
- throw e;
- }
- }
- public void matchNot(char c) throws MismatchedCharException, CharStreamException {
- char la_1 = LA(1);
- try {
- super.matchNot(c);
- parserEventSupport.fireMatchNot(la_1, c, inputState.guessing);
- }
- catch (MismatchedCharException e) {
- if (inputState.guessing == 0)
- parserEventSupport.fireMismatchNot(la_1, c, inputState.guessing);
- throw e;
- }
- }
- public void matchRange(char c1, char c2) throws MismatchedCharException, CharStreamException {
- char la_1 = LA(1);
- try {
- super.matchRange(c1,c2);
- parserEventSupport.fireMatch(la_1, ""+c1+c2, inputState.guessing);
- }
- catch (MismatchedCharException e) {
- if (inputState.guessing == 0)
- parserEventSupport.fireMismatch(la_1, ""+c1+c2, inputState.guessing);
- throw e;
- }
- }
- public void newline() {
- super.newline();
- parserEventSupport.fireNewLine(getLine());
- }
- public void removeMessageListener(MessageListener l) {
- parserEventSupport.removeMessageListener(l);
- }
- public void removeNewLineListener(NewLineListener l) {
- parserEventSupport.removeNewLineListener(l);
- }
- public void removeParserListener(ParserListener l) {
- parserEventSupport.removeParserListener(l);
- }
- public void removeParserMatchListener(ParserMatchListener l) {
- parserEventSupport.removeParserMatchListener(l);
- }
- public void removeParserTokenListener(ParserTokenListener l) {
- parserEventSupport.removeParserTokenListener(l);
- }
- public void removeSemanticPredicateListener(SemanticPredicateListener l) {
- parserEventSupport.removeSemanticPredicateListener(l);
- }
- public void removeSyntacticPredicateListener(SyntacticPredicateListener l) {
- parserEventSupport.removeSyntacticPredicateListener(l);
- }
- public void removeTraceListener(TraceListener l) {
- parserEventSupport.removeTraceListener(l);
- }
- /** Report exception errors caught in nextToken() */
- public void reportError(MismatchedCharException e) {
- parserEventSupport.fireReportError(e);
- super.reportError(e);
- }
- /** Parser error-reporting function can be overridden in subclass */
- public void reportError(String s) {
- parserEventSupport.fireReportError(s);
- super.reportError(s);
- }
- /** Parser warning-reporting function can be overridden in subclass */
- public void reportWarning(String s) {
- parserEventSupport.fireReportWarning(s);
- super.reportWarning(s);
- }
- public void setDebugMode(boolean value) {
- _notDebugMode = !value;
- }
- public void setupDebugging() {
- }
- public synchronized void wakeUp() {
- notify();
- }
- }