Title: [638] trunk/qdox/src/grammar/skeleton.inner: ooops
Revision
638
Author
paul
Date
2009-09-03 12:53:13 -0500 (Thu, 03 Sep 2009)

Log Message

ooops

Added Paths


Diff

Added: trunk/qdox/src/grammar/skeleton.inner (0 => 638)

--- trunk/qdox/src/grammar/skeleton.inner	                        (rev 0)
+++ trunk/qdox/src/grammar/skeleton.inner	2009-09-03 17:53:13 UTC (rev 638)
@@ -0,0 +1,433 @@
+/*
+
+  This file is based on skeleton.nested, but this version skips resetting the line number and column.
+  It's used for parsing the javadoc comments. It's much more solid to extract the comment block and read it per line. 
+
+*/
+  /** This character denotes the end of file */
+  public static final int YYEOF = -1;
+
+  /** initial size of the lookahead buffer */
+--- private static final int ZZ_BUFFERSIZE = ...;
+
+  /** lexical states */
+---  lexical states, charmap
+
+  /* error codes */
+  private static final int ZZ_UNKNOWN_ERROR = 0;
+  private static final int ZZ_NO_MATCH = 1;
+  private static final int ZZ_PUSHBACK_2BIG = 2;
+
+  /* error messages for the codes above */
+  private static final String ZZ_ERROR_MSG[] = {
+    "Unkown internal scanner error",
+    "Error: could not match input",
+    "Error: pushback value was too large"
+  };
+
+--- isFinal list
+  /** the input device */
+  private java.io.Reader zzReader;
+
+  /** the current state of the DFA */
+  private int zzState;
+
+  /** the current lexical state */
+  private int zzLexicalState = YYINITIAL;
+
+  /** this buffer contains the current text to be matched and is
+      the source of the yytext() string */
+  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
+
+  /** the textposition at the last accepting state */
+  private int zzMarkedPos;
+  
+  /** the current text position in the buffer */
+  private int zzCurrentPos;
+
+  /** startRead marks the beginning of the yytext() string in the buffer */
+  private int zzStartRead;
+
+  /** endRead marks the last character in the buffer, that has been read
+      from input */
+  private int zzEndRead;
+
+  /** number of newlines encountered up to the start of the matched text */
+  private int yyline;
+
+  /** the number of characters up to the start of the matched text */
+  private int yychar;
+
+  /**
+   * the number of characters from the last newline up to the start of the 
+   * matched text
+   */
+  private int yycolumn;
+
+  /** 
+   * zzAtBOL == true <=> the scanner is currently at the beginning of a line
+   */
+  private boolean zzAtBOL = true;
+
+  /** zzAtEOF == true <=> the scanner is at the EOF */
+  private boolean zzAtEOF;
+
+  /** denotes if the user-EOF-code has already been executed */
+  private boolean zzEOFDone;
+
+  /** the stack of open (nested) input streams to read from */
+  private java.util.Stack zzStreams = new java.util.Stack();
+
+  /**
+   * inner class used to store info for nested
+   * input streams
+   */
+  private static final class ZzFlexStreamInfo {
+    java.io.Reader zzReader;
+    int zzEndRead;
+    int zzStartRead;
+    int zzCurrentPos;
+    int zzMarkedPos;
+    int yyline;
+    int yycolumn;
+    char [] zzBuffer;
+    boolean zzAtEOF;
+    boolean zzEOFDone;
+
+    /** sets all values stored in this class */
+    ZzFlexStreamInfo(java.io.Reader zzReader, int zzEndRead, int zzStartRead,
+                  int zzCurrentPos, int zzMarkedPos, 
+                  char [] zzBuffer, boolean zzAtEOF, int yyline, int yycolumn) {
+      this.zzReader      = zzReader;
+      this.zzEndRead     = zzEndRead;
+      this.zzStartRead   = zzStartRead;
+      this.zzCurrentPos  = zzCurrentPos;
+      this.zzMarkedPos   = zzMarkedPos;
+      this.zzBuffer      = zzBuffer;
+      this.zzAtEOF       = zzAtEOF;
+      this.zzEOFDone     = zzEOFDone;
+      this.yyline         = yyline;
+      this.yycolumn       = yycolumn;
+    }
+  }
+
+--- user class code
+
+  /**
+   * Creates a new scanner
+   * There is also a java.io.InputStream version of this constructor.
+   *
+   * @param   in  the java.io.Reader to read input from.
+   */
+--- constructor declaration
+
+
+  /**
+   * Refills the input buffer.
+   *
+   * @return      <code>false</code>, iff there was new input.
+   * 
+   * @exception   java.io.IOException  if any I/O-Error occurs
+   */
+  private boolean zzRefill() throws java.io.IOException {
+
+    /* first: make room (if you can) */
+    if (zzStartRead > 0) {
+      System.arraycopy(zzBuffer, zzStartRead,
+                       zzBuffer, 0,
+                       zzEndRead-zzStartRead);
+
+      /* translate stored positions */
+      zzEndRead-= zzStartRead;
+      zzCurrentPos-= zzStartRead;
+      zzMarkedPos-= zzStartRead;
+      zzStartRead = 0;
+    }
+
+    /* is the buffer big enough? */
+    if (zzCurrentPos >= zzBuffer.length) {
+      /* if not: blow it up */
+      char newBuffer[] = new char[zzCurrentPos*2];
+      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
+      zzBuffer = newBuffer;
+    }
+
+    /* finally: fill the buffer with new input */
+    int numRead = zzReader.read(zzBuffer, zzEndRead,
+                                            zzBuffer.length-zzEndRead);
+
+    if (numRead > 0) {
+      zzEndRead+= numRead;
+      return false;
+    }
+    // unlikely but not impossible: read 0 characters, but not at end of stream
+    if (numRead == 0) {
+      int c = zzReader.read();
+      if (c == -1) {
+        return true;
+      } else {
+        zzBuffer[zzEndRead++] = (char) c;
+        return false;
+      }     
+    }
+    
+    // numRead < 0) 
+    return true;
+  }
+
+    
+  /**
+   * Closes the input stream.
+   */
+  public final void yyclose() throws java.io.IOException {
+    zzAtEOF = true;            /* indicate end of file */
+    zzEndRead = zzStartRead;  /* invalidate buffer    */
+
+    if (zzReader != null)
+      zzReader.close();
+  }
+
+
+  /**
+   * Stores the current input stream on a stack, and
+   * reads from a new stream. Lexical state, line,
+   * char, and column counting remain untouched.
+   *
+   * The current input stream can be restored with
+   * yypopstream (usually in an <<EOF>> action).
+   *
+   * @param reader the new input stream to read from
+   *
+   * @see #yypopStream()
+   */
+  public final void yypushStream(java.io.Reader reader) {
+    zzStreams.push(
+      new ZzFlexStreamInfo(zzReader, zzEndRead, zzStartRead, zzCurrentPos,
+                        zzMarkedPos, zzBuffer, zzAtEOF,
+                        yyline, yycolumn)
+    );
+    zzAtEOF  = false;
+    zzBuffer = new char[ZZ_BUFFERSIZE];
+    zzReader = reader;
+    zzEndRead = zzStartRead = 0;
+    zzCurrentPos = zzMarkedPos = 0;
+//    yyline = yycolumn = 0;
+  }
+    
+
+  /**
+   * Closes the current input stream and continues to
+   * read from the one on top of the stream stack. 
+   *
+   * @throws java.util.EmptyStackException
+   *         if there is no further stream to read from.
+   *
+   * @throws java.io.IOException
+   *         if there was an error in closing the stream.
+   *
+   * @see #yypushStream(java.io.Reader)
+   */
+  public final void yypopStream() throws java.io.IOException {
+    zzReader.close();
+    ZzFlexStreamInfo s = (ZzFlexStreamInfo) zzStreams.pop();
+    zzBuffer      = s.zzBuffer;
+    zzReader      = s.zzReader;
+    zzEndRead     = s.zzEndRead;
+    zzStartRead   = s.zzStartRead;
+    zzCurrentPos  = s.zzCurrentPos;
+    zzMarkedPos   = s.zzMarkedPos ;
+    zzAtEOF       = s.zzAtEOF;
+    zzEOFDone     = s.zzEOFDone;
+//    yyline         = s.yyline;
+//    yycolumn       = s.yycolumn;
+  }
+
+
+  /**
+   * Returns true iff there are still streams left 
+   * to read from on the stream stack.
+   */
+  public final boolean yymoreStreams() {
+    return !zzStreams.isEmpty();
+  }
+
+
+  /**
+   * Resets the scanner to read from a new input stream.
+   * Does not close the old reader.
+   *
+   * All internal variables are reset, the old input stream 
+   * <b>cannot</b> be reused (internal buffer is discarded and lost).
+   * Lexical state is set to <tt>ZZ_INITIAL</tt>.
+   *
+   * @param reader   the new input stream 
+   *
+   * @see #yypushStream(java.io.Reader)
+   * @see #yypopStream()
+   */
+  public final void yyreset(java.io.Reader reader) {
+    zzReader = reader;
+    zzAtBOL  = true;
+    zzAtEOF  = false;
+    zzEOFDone = false;
+    zzEndRead = zzStartRead = 0;
+    zzCurrentPos = zzMarkedPos = 0;
+//    yyline = yychar = yycolumn = 0;
+    zzLexicalState = YYINITIAL;
+  }
+
+
+  /**
+   * Returns the current lexical state.
+   */
+  public final int yystate() {
+    return zzLexicalState;
+  }
+
+
+  /**
+   * Enters a new lexical state
+   *
+   * @param newState the new lexical state
+   */
+  public final void yybegin(int newState) {
+    zzLexicalState = newState;
+  }
+
+
+  /**
+   * Returns the text matched by the current regular _expression_.
+   */
+  public final String yytext() {
+    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
+  }
+
+
+  /**
+   * Returns the character at position <tt>pos</tt> from the 
+   * matched text. 
+   * 
+   * It is equivalent to yytext().charAt(pos), but faster
+   *
+   * @param pos the position of the character to fetch. 
+   *            A value from 0 to yylength()-1.
+   *
+   * @return the character at position pos
+   */
+  public final char yycharat(int pos) {
+    return zzBuffer[zzStartRead+pos];
+  }
+
+
+  /**
+   * Returns the length of the matched text region.
+   */
+  public final int yylength() {
+    return zzMarkedPos-zzStartRead;
+  }
+
+
+  /**
+   * Reports an error that occured while scanning.
+   *
+   * In a wellformed scanner (no or only correct usage of 
+   * yypushback(int) and a match-all fallback rule) this method 
+   * will only be called with things that "Can't Possibly Happen".
+   * If this method is called, something is seriously wrong
+   * (e.g. a JFlex bug producing a faulty scanner etc.).
+   *
+   * Usual syntax/scanner level error handling should be done
+   * in error fallback rules.
+   *
+   * @param   errorCode  the code of the errormessage to display
+   */
+--- zzScanError declaration
+    String message;
+    try {
+      message = ZZ_ERROR_MSG[errorCode];
+    }
+    catch (ArrayIndexOutOfBoundsException e) {
+      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+    }
+
+--- throws clause
+  } 
+
+
+  /**
+   * Pushes the specified amount of characters back into the input stream.
+   *
+   * They will be read again by then next call of the scanning method
+   *
+   * @param number  the number of characters to be read again.
+   *                This number must not be greater than yylength()!
+   */
+--- yypushback decl (contains zzScanError exception)
+    if ( number > yylength() )
+      zzScanError(ZZ_PUSHBACK_2BIG);
+
+    zzMarkedPos -= number;
+  }
+
+
+--- zzDoEOF
+  /**
+   * Resumes scanning until the next regular _expression_ is matched,
+   * the end of input is encountered or an I/O-Error occurs.
+   *
+   * @return      the next token
+   * @exception   java.io.IOException  if any I/O-Error occurs
+   */
+--- yylex declaration
+    int zzInput;
+    int zzAction;
+
+--- local declarations
+
+    while (true) {
+      // cached fields:
+      int zzCurrentPosL;
+      int zzMarkedPosL = zzMarkedPos;
+      int zzEndReadL = zzEndRead;
+      char [] zzBufferL = zzBuffer;
+      char [] zzCMapL = ZZ_CMAP;
+
+--- start admin (line, char, col count)
+      zzAction = -1;
+
+      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+  
+--- start admin (lexstate etc)
+
+      zzForAction: {
+        while (true) {
+    
+--- next input, line, col, char count, next transition, isFinal action
+            zzAction = zzState;
+            zzMarkedPosL = zzCurrentPosL;
+--- line count update
+          }
+
+        }
+      }
+
+      // store back cached position
+      zzMarkedPos = zzMarkedPosL;
+--- char count update
+
+--- actions
+        default: 
+          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+            zzAtEOF = true;
+--- eofvalue
+          } 
+          else {
+--- no match
+          }
+      }
+    }
+  }
+
+--- main
+
+}


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to