/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is the JavaScript 2 Prototype. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the * terms of the GNU Public License (the "GPL"), in which case the * provisions of the GPL are applicable instead of those above. * If you wish to allow use of your version of this file only * under the terms of the GPL and not to allow others to use your * version of this file under the NPL, indicate your decision by * deleting the provisions above and replace them with the notice * and other provisions required by the GPL. If you do not delete * the provisions above, a recipient may use your version of this * file under either the NPL or the GPL. */ #ifndef exception_h___ #define exception_h___ #include "utilities.h" namespace JavaScript { enum ExceptionType { etUnknown = 0, etLexer, etParser, etRuntime, etCount }; enum ExceptionID { eidExpectBool = 0, eidExpectDouble, eidExpectInt32, eidExpectUInt32, eidExpectRegister, eidExpectArgList, eidExpectColon, eidExpectCloseParen, eidExpectBinaryOp, eidExpectString, eidExpectLabel, eidExpectComma, eidExpectNewline, eidExpectIdentifier, eidDuplicateLabel, eidUnknownICode, eidUnknownBinaryOp, eidUnterminatedString, eidCount }; class JSException { public: JSException (ExceptionID ID, string8_citer pos = 0, string8 source = "", ExceptionType type = etUnknown) : mID(ID), mType(type), mPos(pos), mSource(source) {} ExceptionID mID; ExceptionType mType; string8_citer mPos; string8 mSource; public: void toString8(string8 &rval); /* private: JSException(const JSException&); */ }; class JSLexException : public JSException { public: JSLexException (ExceptionID ID, string8_citer pos = 0, string8 source = "") : JSException(ID, pos, source, etLexer) {} /* private: JSLexException (const JSLexException&); */ }; class JSParseException : public JSException { public: JSParseException (ExceptionID ID, string8_citer pos = 0, string8 source = "") : JSException(ID, pos, source, etParser) {} /* private: JSParseException (const JSParseException&); */ }; } #endif /* exception_h___ */