package net.sourceforge.squirrel_sql.client.session.parser.kernel; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; public class ErrorStream { int count; // number of errors detected public String fileName; /** Internationalized strings for this class */ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ErrorStream.class); // i18n[ErrorStream.expected=expected] private static final String EXPECTED_STR = s_stringMgr.getString("ErrorStream.expected"); // i18n[ErrorStream.notexpected=not expected] private static final String NOT_EXPECTED_STR = s_stringMgr.getString("ErrorStream.notexpected"); // i18n[ErrorStream.invalid=invalid] private static final String INVALID_STR = s_stringMgr.getString("ErrorStream.invalid"); // i18n[ErrorStream.unexpectedsymbol=this symbol not expected in] private static final String UNEXPECTED_SYMBOL_STR = s_stringMgr.getString("ErrorStream.unexpectedsymbol"); public ErrorStream() { count = 0; } protected void StoreError(int n, int line, int col, String s) { System.out.println(fileName + " (" + line + ", " + col + ") " + s); } protected void ParsErr(int n, int line, int col) { String s; count++; switch (n) { case 0: {s = "EOF "+EXPECTED_STR; break;} case 1: {s = "ident "+EXPECTED_STR; break;} case 2: {s = "intValue "+EXPECTED_STR; break;} case 3: {s = "float "+EXPECTED_STR; break;} case 4: {s = "SQLString "+EXPECTED_STR; break;} case ParsingConstants.KIND_OPENING_BRAKET: {s = "OpenParens "+EXPECTED_STR; break;} case 6: {s = "\";\" "+EXPECTED_STR; break;} case ParsingConstants.KW_UNION: {s = "\"UNION\" "+EXPECTED_STR; break;} case ParsingConstants.KW_EXCEPT: {s = "\"EXCEPT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_INTERSECT: {s = "\"INTERSECT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_MINUS: {s = "\"MINUS\" "+EXPECTED_STR; break;} case ParsingConstants.KW_ALL: {s = "\"ALL\" "+EXPECTED_STR; break;} case ParsingConstants.KW_UPDATE: {s = "\"UPDATE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_SET: {s = "\"SET\" "+EXPECTED_STR; break;} case ParsingConstants.KIND_EQUALS: {s = "\"=\" "+EXPECTED_STR; break;} case ParsingConstants.KW_INSERT: {s = "\"INSERT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_INTO: {s = "\"INTO\" "+EXPECTED_STR; break;} case ParsingConstants.KW_VALUES: {s = "\"VALUES\" "+EXPECTED_STR; break;} case ParsingConstants.KW_DELETE: {s = "\"DELETE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_FROM: {s = "\"FROM\" "+EXPECTED_STR; break;} case ParsingConstants.KW_SELECT: {s = "\"SELECT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_DISTINCT: {s = "\"DISTINCT\" "+EXPECTED_STR; break;} case 22: {s = "\".\" "+EXPECTED_STR; break;} case ParsingConstants.KW_AS: {s = "\"AS\" "+EXPECTED_STR; break;} case ParsingConstants.KW_JOIN: {s = "\"JOIN\" "+EXPECTED_STR; break;} case ParsingConstants.KW_CROSS: {s = "\"CROSS\" "+EXPECTED_STR; break;} case ParsingConstants.KW_NATURAL: {s = "\"NATURAL\" "+EXPECTED_STR; break;} case ParsingConstants.KW_INNER: {s = "\"INNER\" "+EXPECTED_STR; break;} case ParsingConstants.KW_FULL: {s = "\"FULL\" "+EXPECTED_STR; break;} case ParsingConstants.KW_LEFT: {s = "\"LEFT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_RIGHT: {s = "\"RIGHT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_OUTER: {s = "\"OUTER\" "+EXPECTED_STR; break;} case ParsingConstants.KW_ON: {s = "\"ON\" "+EXPECTED_STR; break;} case ParsingConstants.KW_USING: {s = "\"USING\" "+EXPECTED_STR; break;} case ParsingConstants.KW_WHERE: {s = "\"WHERE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_GROUP: {s = "\"GROUP\" "+EXPECTED_STR; break;} case ParsingConstants.KW_BY: {s = "\"BY\" "+EXPECTED_STR; break;} case ParsingConstants.KW_HAVING: {s = "\"HAVING\" "+EXPECTED_STR; break;} case ParsingConstants.KW_ORDER: {s = "\"ORDER\" "+EXPECTED_STR; break;} case ParsingConstants.KIND_ASTERISK: {s = "\"*\" "+EXPECTED_STR; break;} case ParsingConstants.KW_TIMESTAMP: {s = "\"TIMESTAMP\" "+EXPECTED_STR; break;} case ParsingConstants.KW_UPPER: {s = "\"UPPER\" "+EXPECTED_STR; break;} case ParsingConstants.KW_MONTH: {s = "\"MONTH\" "+EXPECTED_STR; break;} case ParsingConstants.KW_YEAR: {s = "\"YEAR\" "+EXPECTED_STR; break;} case ParsingConstants.KW_COUNT: {s = "\"COUNT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_SUM: {s = "\"SUM\" "+EXPECTED_STR; break;} case ParsingConstants.KW_MAX: {s = "\"MAX\" "+EXPECTED_STR; break;} case ParsingConstants.KW_MIN: {s = "\"MIN\" "+EXPECTED_STR; break;} case ParsingConstants.KW_AVG: {s = "\"AVG\" "+EXPECTED_STR; break;} case ParsingConstants.KW_NULL: {s = "\"NULL\" "+EXPECTED_STR; break;} case ParsingConstants.KW_DESC: {s = "\"DESC\" "+EXPECTED_STR; break;} case ParsingConstants.KW_ASC: {s = "\"ASC\" "+EXPECTED_STR; break;} case ParsingConstants.KW_MINUS_SIGN: {s = "\"-\" "+EXPECTED_STR; break;} case 53: {s = "\":\" "+EXPECTED_STR; break;} case ParsingConstants.KW_NOT: {s = "\"NOT\" "+EXPECTED_STR; break;} case 55: {s = "\"/\" "+EXPECTED_STR; break;} case 56: {s = "\"+\" "+EXPECTED_STR; break;} case ParsingConstants.KW_AND: {s = "\"AND\" "+EXPECTED_STR; break;} case ParsingConstants.KW_OR: {s = "\"OR\" "+EXPECTED_STR; break;} case ParsingConstants.KW_LIKE: {s = "\"LIKE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_ESCAPE: {s = "\"ESCAPE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_IS: {s = "\"IS\" "+EXPECTED_STR; break;} case 62: {s = "\"<>\" "+EXPECTED_STR; break;} case 63: {s = "\"<\" "+EXPECTED_STR; break;} case 64: {s = "\"<=\" "+EXPECTED_STR; break;} case 65: {s = "\">\" "+EXPECTED_STR; break;} case 66: {s = "\">=\" "+EXPECTED_STR; break;} case ParsingConstants.KW_BETWEEN: {s = "\"BETWEEN\" "+EXPECTED_STR; break;} case ParsingConstants.KW_IN: {s = "\"IN\" "+EXPECTED_STR; break;} case ParsingConstants.KW_COMMIT: {s = "\"COMMIT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_ROLLBACK: {s = "\"ROLLBACK\" "+EXPECTED_STR; break;} case ParsingConstants.KW_WORK: {s = "\"WORK\" "+EXPECTED_STR; break;} case ParsingConstants.KW_CHAR: {s = "\"CHAR\" "+EXPECTED_STR; break;} case ParsingConstants.KW_CHARACTER: {s = "\"CHARACTER\" "+EXPECTED_STR; break;} case ParsingConstants.KW_VARCHAR: {s = "\"VARCHAR\" "+EXPECTED_STR; break;} case ParsingConstants.KW_INTEGER: {s = "\"INTEGER\" "+EXPECTED_STR; break;} case ParsingConstants.KW_INT: {s = "\"INT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_SMALLINT: {s = "\"SMALLINT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_NUMERIC: {s = "\"NUMERIC\" "+EXPECTED_STR; break;} case ParsingConstants.KW_DATE: {s = "\"DATE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_TIME: {s = "\"TIME\" "+EXPECTED_STR; break;} case ParsingConstants.KW_DEFAULT : {s = "\"DEFAULT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_PRIMARY: {s = "\"PRIMARY\" "+EXPECTED_STR; break;} case ParsingConstants.KW_KEY: {s = "\"KEY\" "+EXPECTED_STR; break;} case ParsingConstants.KW_FOREIGN: {s = "\"FOREIGN\" "+EXPECTED_STR; break;} case ParsingConstants.KW_REFERENCES: {s = "\"REFERENCES\" "+EXPECTED_STR; break;} case ParsingConstants.KW_MATCH: {s = "\"MATCH\" "+EXPECTED_STR; break;} case ParsingConstants.KW_PARTIAL: {s = "\"PARTIAL\" "+EXPECTED_STR; break;} case ParsingConstants.KW_CASCADE: {s = "\"CASCADE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_NO: {s = "\"NO\" "+EXPECTED_STR; break;} case ParsingConstants.KW_ACTION: {s = "\"ACTION\" "+EXPECTED_STR; break;} case ParsingConstants.KW_UNIQUE: {s = "\"UNIQUE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_CHECK: {s = "\"CHECK\" "+EXPECTED_STR; break;} case ParsingConstants.KW_CREATE: {s = "\"CREATE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_TABLE: {s = "\"TABLE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_RESTRICT: {s = "\"RESTRICT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_DROP: {s = "\"DROP\" "+EXPECTED_STR; break;} case ParsingConstants.KW_ADD: {s = "\"ADD\" "+EXPECTED_STR; break;} case ParsingConstants.KW_ALTER: {s = "\"ALTER\" "+EXPECTED_STR; break;} case ParsingConstants.KW_CONSTRAINT: {s = "\"CONSTRAINT\" "+EXPECTED_STR; break;} case ParsingConstants.KW_INDEX: {s = "\"INDEX\" "+EXPECTED_STR; break;} case ParsingConstants.KIND_COMMA: {s = "\",\" "+EXPECTED_STR; break;} case ParsingConstants.KIND_CLOSING_BRAKET: {s = "\")\" "+EXPECTED_STR; break;} case ParsingConstants.KW_CASE: {s = "\"CASE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_WHEN: {s = "\"WHEN\" "+EXPECTED_STR; break;} case ParsingConstants.KW_THEN: {s = "\"THEN\" "+EXPECTED_STR; break;} case ParsingConstants.KW_ELSE: {s = "\"ELSE\" "+EXPECTED_STR; break;} case ParsingConstants.KW_END: {s = "\"END\" "+EXPECTED_STR; break;} case ParsingConstants.KW_VIEW: {s = "\"VIEW\" "+EXPECTED_STR; break;} case 103: {s = NOT_EXPECTED_STR; break;} case 104: {s = INVALID_STR +" DropPart"; break;} case 105: {s = INVALID_STR +" Alter"; break;} case 106: {s = INVALID_STR +" Add"; break;} case 107: {s = INVALID_STR +" CascadeRestrict"; break;} case 108: {s = INVALID_STR +" CreatePart"; break;} case 109: {s = INVALID_STR +" ForeignKey"; break;} case 110: {s = INVALID_STR +" ForeignKey"; break;} case 111: {s = INVALID_STR +" ForeignKey"; break;} case 112: {s = INVALID_STR +" ForeignKey"; break;} case 113: {s = INVALID_STR +" ColumnDefault"; break;} case 114: {s = INVALID_STR +" DataType"; break;} case ParsingConstants.KW_INSET: {s = INVALID_STR +" InSetExpr"; break;} case 116: {s = INVALID_STR +" LikeTest"; break;} case 117: {s = INVALID_STR +" WordOperator"; break;} case 118: {s = INVALID_STR +" MathOperator"; break;} case 119: {s = INVALID_STR +" TestExpr"; break;} case 120: {s = INVALID_STR +" TestExpr"; break;} case 121: {s = INVALID_STR +" Operator"; break;} case 122: {s = INVALID_STR +" Term"; break;} case 123: {s = INVALID_STR +" Term"; break;} case 124: {s = INVALID_STR +" Relation"; break;} case 125: {s = INVALID_STR +" OrderByField"; break;} case 126: {s = INVALID_STR +" Field"; break;} case 127: {s = INVALID_STR +" ColumnFunction"; break;} case 128: {s = INVALID_STR +" ColumnFunction"; break;} case 129: {s = INVALID_STR +" FunctionExpr"; break;} case 130: {s = INVALID_STR +" SelectField"; break;} case 131: {s = INVALID_STR +" JoinExpr"; break;} case 132: {s = INVALID_STR +" JoinType"; break;} case 133: {s = INVALID_STR +" JoinStmt"; break;} case 134: {s = UNEXPECTED_SYMBOL_STR +" OrderByClause"; break;} case 135: {s = UNEXPECTED_SYMBOL_STR +" HavingClause"; break;} case 136: {s = UNEXPECTED_SYMBOL_STR +" GroupByClause"; break;} case 137: {s = UNEXPECTED_SYMBOL_STR +" FromClause"; break;} case 138: {s = UNEXPECTED_SYMBOL_STR +" SelectClause"; break;} case 139: {s = INVALID_STR +" ColumnName"; break;} case 140: {s = UNEXPECTED_SYMBOL_STR +" WhereClause"; break;} case 141: {s = INVALID_STR +" SetOperator"; break;} case 142: {s = INVALID_STR +" Transaction"; break;} case 143: {s = INVALID_STR +" AlterTable"; break;} case 144: {s = INVALID_STR +" Drop"; break;} case 145: {s = INVALID_STR +" CreateStmt"; break;} case 146: {s = INVALID_STR +" InsertStmt"; break;} case 147: {s = INVALID_STR +" SQLStatement"; break;} // i18n[ErrorStream.error.syntax=Syntax error {0}] default: s = s_stringMgr.getString("ErrorStream.error.syntax", Integer.valueOf(n)); } StoreError(n, line, col, s); } protected void SemErr(int n, int line, int col) { String s; count++; switch (n) { // for example: case 0: s = "invalid character"; break; // perhaps insert application specific error messages here default: // i18n[ErrorStream.error.semantic=Semantic error {0}] s = s_stringMgr.getString("ErrorStream.error.semantic", Integer.valueOf(n)); break; } StoreError(n, line, col, s); } protected void Exception (String s) { throw new RuntimeException(s); } protected void Summarize () { switch (count) { case 0 : // i18n[ErrorStream.noerrors=No errors detected] ParserLogger.log(s_stringMgr.getString("ErrorStream.noerrors")); break; case 1 : // i18n[ErrorStream.oneerror=1 error detected] ParserLogger.log(s_stringMgr.getString("ErrorStream.oneerror")); break; default: // i18n[ErrorStream.multipleerrors={0} errors detected] String msg = s_stringMgr.getString("ErrorStream.multipleerrors", Integer.valueOf(count)); ParserLogger.log(msg); break; } } }