lscript_error.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:4k
- /**
- * @file lscript_error.h
- * @brief error reporting class and strings
- *
- * $LicenseInfo:firstyear=2002&license=viewergpl$
- *
- * Copyright (c) 2002-2010, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
- #ifndef LL_LSCRIPT_ERROR_H
- #define LL_LSCRIPT_ERROR_H
- #include "lscript_scope.h"
- typedef enum e_lscript_compile_pass
- {
- LSCP_INVALID,
- LSCP_PRETTY_PRINT,
- LSCP_PRUNE,
- LSCP_SCOPE_PASS1,
- LSCP_SCOPE_PASS2,
- LSCP_TYPE,
- LSCP_RESOURCE,
- LSCP_EMIT_ASSEMBLY,
- LSCP_EMIT_BYTE_CODE,
- LSCP_DETERMINE_HANDLERS,
- LSCP_LIST_BUILD_SIMPLE,
- LSCP_TO_STACK,
- LSCP_BUILD_FUNCTION_ARGS,
- LSCP_EMIT_CIL_ASSEMBLY,
- LSCP_EOF
- } LSCRIPTCompilePass;
- typedef enum e_lscript_prune_type
- {
- LSPRUNE_INVALID,
- LSPRUNE_GLOBAL_VOIDS,
- LSPRUNE_GLOBAL_NON_VOIDS,
- LSPRUNE_EVENTS,
- LSPRUNE_DEAD_CODE,
- LSPRUNE_EOF
- } LSCRIPTPruneType;
- extern S32 gColumn;
- extern S32 gLine;
- extern S32 gInternalColumn;
- extern S32 gInternalLine;
- // used to describe where in the file this piece is
- class LLScriptByteCodeChunk;
- class LLScriptLibData;
- class LLScriptFilePosition
- {
- public:
- LLScriptFilePosition(S32 line, S32 col)
- : mLineNumber(line), mColumnNumber(col), mByteOffset(0), mByteSize(0)
- {
- }
- virtual ~LLScriptFilePosition() {}
- virtual void recurse(LLFILE *fp, S32 tabs, S32 tabsize,
- LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg,
- LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count,
- LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata) = 0;
- virtual S32 getSize() = 0;
- void fdotabs(LLFILE *fp, S32 tabs, S32 tabsize);
- S32 mLineNumber;
- S32 mColumnNumber;
- S32 mByteOffset;
- S32 mByteSize;
- };
- typedef enum e_lscript_warnings
- {
- LSWARN_INVALID,
- LSWARN_DEAD_CODE,
- LSWARN_EOF
- } LSCRIPTWarnings;
- typedef enum e_lscript_errors
- {
- LSERROR_INVALID,
- LSERROR_SYNTAX_ERROR,
- LSERROR_NO_RETURN,
- LSERROR_INVALID_VOID_RETURN,
- LSERROR_INVALID_RETURN,
- LSERROR_STATE_CHANGE_IN_GLOBAL,
- LSERROR_DUPLICATE_NAME,
- LSERROR_UNDEFINED_NAME,
- LSERROR_TYPE_MISMATCH,
- LSERROR_EXPRESSION_ON_LVALUE,
- LSERROR_ASSEMBLE_OUT_OF_MEMORY,
- LSERROR_FUNCTION_TYPE_ERROR,
- LSERROR_VECTOR_METHOD_ERROR,
- LSERROR_NO_LISTS_IN_LISTS,
- LSERROR_NO_UNITIALIZED_VARIABLES_IN_LISTS,
- LSERROR_NEED_NEW_SCOPE,
- LSERROR_CIL_ASSEMBLER_FAILED = 16, // Mono build error.
- LSERROR_BYTECODE_TRANSFORM_FAILED = 17, // Mono build error.
- LSERROR_BYTECODE_VERIFICATION_FAILED, // Mono build error.
- LSERROR_EOF
- } LSCRIPTErrors;
- class LLScriptGenerateErrorText
- {
- public:
- LLScriptGenerateErrorText() { init(); }
- ~LLScriptGenerateErrorText() {}
- void init() { mTotalErrors = 0; mTotalWarnings = 0; }
- void writeWarning(LLFILE *fp, LLScriptFilePosition *pos, LSCRIPTWarnings warning);
- void writeWarning(LLFILE *fp, S32 line, S32 col, LSCRIPTWarnings warning);
- void writeError(LLFILE *fp, LLScriptFilePosition *pos, LSCRIPTErrors error);
- void writeError(LLFILE *fp, S32 line, S32 col, LSCRIPTErrors error);
- BOOL getErrors() { return mTotalErrors; }
- BOOL getWarnings() { return mTotalWarnings; }
- S32 mTotalErrors;
- S32 mTotalWarnings;
- };
- std::string getLScriptErrorString(LSCRIPTErrors error);
- extern LLScriptGenerateErrorText gErrorToText;
- #endif