Clover coverage report - PMD - 3.7
Coverage timestamp: Wed May 31 2006 09:25:59 EDT
file stats: LOC: 192   Methods: 5
NCLOC: 110   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
ParseException.java 0% 0% 0% 0%
coverage
 1    /* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
 2    package net.sourceforge.pmd.cpd.cppast;
 3   
 4    /**
 5    * This exception is thrown when parse errors are encountered.
 6    * You can explicitly create objects of this exception type by
 7    * calling the method generateParseException in the generated
 8    * parser.
 9    *
 10    * You can modify this class to customize your error reporting
 11    * mechanisms so long as you retain the public fields.
 12    */
 13    public class ParseException extends RuntimeException {
 14   
 15    /**
 16    * This constructor is used by the method "generateParseException"
 17    * in the generated parser. Calling this constructor generates
 18    * a new object of this type with the fields "currentToken",
 19    * "expectedTokenSequences", and "tokenImage" set. The boolean
 20    * flag "specialConstructor" is also set to true to indicate that
 21    * this constructor was used to create this object.
 22    * This constructor calls its super class with the empty string
 23    * to force the "toString" method of parent class "Throwable" to
 24    * print the error message in the form:
 25    * ParseException: <result of getMessage>
 26    */
 27  0 public ParseException(Token currentTokenVal,
 28    int[][] expectedTokenSequencesVal,
 29    String[] tokenImageVal
 30    )
 31    {
 32  0 super("");
 33  0 specialConstructor = true;
 34  0 currentToken = currentTokenVal;
 35  0 expectedTokenSequences = expectedTokenSequencesVal;
 36  0 tokenImage = tokenImageVal;
 37    }
 38   
 39    /**
 40    * The following constructors are for use by you for whatever
 41    * purpose you can think of. Constructing the exception in this
 42    * manner makes the exception behave in the normal way - i.e., as
 43    * documented in the class "Throwable". The fields "errorToken",
 44    * "expectedTokenSequences", and "tokenImage" do not contain
 45    * relevant information. The JavaCC generated code does not use
 46    * these constructors.
 47    */
 48   
 49  0 public ParseException() {
 50  0 super();
 51  0 specialConstructor = false;
 52    }
 53   
 54  0 public ParseException(String message) {
 55  0 super(message);
 56  0 specialConstructor = false;
 57    }
 58   
 59    /**
 60    * This variable determines which constructor was used to create
 61    * this object and thereby affects the semantics of the
 62    * "getMessage" method (see below).
 63    */
 64    protected boolean specialConstructor;
 65   
 66    /**
 67    * This is the last token that has been consumed successfully. If
 68    * this object has been created due to a parse error, the token
 69    * followng this token will (therefore) be the first error token.
 70    */
 71    public Token currentToken;
 72   
 73    /**
 74    * Each entry in this array is an array of integers. Each array
 75    * of integers represents a sequence of tokens (by their ordinal
 76    * values) that is expected at this point of the parse.
 77    */
 78    public int[][] expectedTokenSequences;
 79   
 80    /**
 81    * This is a reference to the "tokenImage" array of the generated
 82    * parser within which the parse error occurred. This array is
 83    * defined in the generated ...Constants interface.
 84    */
 85    public String[] tokenImage;
 86   
 87    /**
 88    * This method has the standard behavior when this object has been
 89    * created using the standard constructors. Otherwise, it uses
 90    * "currentToken" and "expectedTokenSequences" to generate a parse
 91    * error message and returns it. If this object has been created
 92    * due to a parse error, and you do not catch it (it gets thrown
 93    * from the parser), then this method is called during the printing
 94    * of the final stack trace, and hence the correct error message
 95    * gets displayed.
 96    */
 97  0 public String getMessage() {
 98  0 if (!specialConstructor) {
 99  0 return super.getMessage();
 100    }
 101  0 StringBuffer expected = new StringBuffer();
 102  0 int maxSize = 0;
 103  0 for (int i = 0; i < expectedTokenSequences.length; i++) {
 104  0 if (maxSize < expectedTokenSequences[i].length) {
 105  0 maxSize = expectedTokenSequences[i].length;
 106    }
 107  0 for (int j = 0; j < expectedTokenSequences[i].length; j++) {
 108  0 expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
 109    }
 110  0 if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
 111  0 expected.append("...");
 112    }
 113  0 expected.append(eol).append(" ");
 114    }
 115  0 String retval = "Encountered \"";
 116  0 Token tok = currentToken.next;
 117  0 for (int i = 0; i < maxSize; i++) {
 118  0 if (i != 0) retval += " ";
 119  0 if (tok.kind == 0) {
 120  0 retval += tokenImage[0];
 121  0 break;
 122    }
 123  0 retval += add_escapes(tok.image);
 124  0 tok = tok.next;
 125    }
 126  0 retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
 127  0 retval += "." + eol;
 128  0 if (expectedTokenSequences.length == 1) {
 129  0 retval += "Was expecting:" + eol + " ";
 130    } else {
 131  0 retval += "Was expecting one of:" + eol + " ";
 132    }
 133  0 retval += expected.toString();
 134  0 return retval;
 135    }
 136   
 137    /**
 138    * The end of line string for this machine.
 139    */
 140    protected String eol = System.getProperty("line.separator", "\n");
 141   
 142    /**
 143    * Used to convert raw characters to their escaped version
 144    * when these raw version cannot be used as part of an ASCII
 145    * string literal.
 146    */
 147  0 protected String add_escapes(String str) {
 148  0 StringBuffer retval = new StringBuffer();
 149  0 char ch;
 150  0 for (int i = 0; i < str.length(); i++) {
 151  0 switch (str.charAt(i))
 152    {
 153  0 case 0 :
 154  0 continue;
 155  0 case '\b':
 156  0 retval.append("\\b");
 157  0 continue;
 158  0 case '\t':
 159  0 retval.append("\\t");
 160  0 continue;
 161  0 case '\n':
 162  0 retval.append("\\n");
 163  0 continue;
 164  0 case '\f':
 165  0 retval.append("\\f");
 166  0 continue;
 167  0 case '\r':
 168  0 retval.append("\\r");
 169  0 continue;
 170  0 case '\"':
 171  0 retval.append("\\\"");
 172  0 continue;
 173  0 case '\'':
 174  0 retval.append("\\\'");
 175  0 continue;
 176  0 case '\\':
 177  0 retval.append("\\\\");
 178  0 continue;
 179  0 default:
 180  0 if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
 181  0 String s = "0000" + Integer.toString(ch, 16);
 182  0 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
 183    } else {
 184  0 retval.append(ch);
 185    }
 186  0 continue;
 187    }
 188    }
 189  0 return retval.toString();
 190    }
 191   
 192    }