lscript_typecheck.cpp File Reference

typechecks script More...

#include "linden_common.h"
#include "lscript_tree.h"

Include dependency graph for lscript_typecheck.cpp:

Go to the source code of this file.

Functions

LSCRIPTType implicit_casts (LSCRIPTType left_side, LSCRIPTType right_side)
LSCRIPTType promote (LSCRIPTType left_side, LSCRIPTType right_side)
BOOL legal_assignment (LSCRIPTType left_side, LSCRIPTType right_side)
BOOL legal_casts (LSCRIPTType cast, LSCRIPTType base)
void init_supported_expressions (void)
BOOL legal_binary_expression (LSCRIPTType &result, LSCRIPTType left_side, LSCRIPTType right_side, LSCRIPTExpressionType expression)
BOOL legal_unary_expression (LSCRIPTType &result, LSCRIPTType left_side, LSCRIPTExpressionType expression)

Variables

LSCRIPTType gSupportedExpressionArray [LET_EOF][LST_EOF][LST_EOF]


Detailed Description

typechecks script

LicenseInfo
firstyear=2002&license=viewergpl

Copyright (c) 2002-2007, 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://secondlife.com/developers/opensource/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://secondlife.com/developers/opensource/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$

Definition in file lscript_typecheck.cpp.


Function Documentation

LSCRIPTType implicit_casts ( LSCRIPTType  left_side,
LSCRIPTType  right_side 
)

Definition at line 63 of file lscript_typecheck.cpp.

References LST_FLOATINGPOINT, LST_INTEGER, LST_KEY, LST_LIST, LST_NULL, LST_QUATERNION, LST_STRING, LST_UNDEFINED, and LST_VECTOR.

Referenced by legal_assignment(), and promote().

void init_supported_expressions ( void   ) 

Definition at line 294 of file lscript_typecheck.cpp.

References gSupportedExpressionArray, i, j, LET_ADD_ASSIGN, LET_ASSIGNMENT, LET_BIT_AND, LET_BIT_NOT, LET_BIT_OR, LET_BIT_XOR, LET_BOOLEAN_AND, LET_BOOLEAN_NOT, LET_BOOLEAN_OR, LET_DIV_ASSIGN, LET_DIVIDE, LET_EOF, LET_EQUALITY, LET_GREATER_EQUALS, LET_GREATER_THAN, LET_LESS_EQUALS, LET_LESS_THAN, LET_MINUS, LET_MOD, LET_MOD_ASSIGN, LET_MUL_ASSIGN, LET_NOT_EQUALS, LET_PARENTHESIS, LET_PLUS, LET_POST_DECREMENT, LET_POST_INCREMENT, LET_PRE_DECREMENT, LET_PRE_INCREMENT, LET_SHIFT_LEFT, LET_SHIFT_RIGHT, LET_SUB_ASSIGN, LET_TIMES, LET_UNARY_MINUS, LST_EOF, LST_FLOATINGPOINT, LST_INTEGER, LST_KEY, LST_LIST, LST_NULL, LST_QUATERNION, LST_STRING, LST_VECTOR, and S32.

BOOL legal_assignment ( LSCRIPTType  left_side,
LSCRIPTType  right_side 
)

Definition at line 160 of file lscript_typecheck.cpp.

References FALSE, implicit_casts(), LST_UNDEFINED, and TRUE.

Referenced by LLScriptDeclaration::recurse(), LLScriptReturn::recurse(), LLScriptQuaternionInitializer::recurse(), LLScriptVectorInitializer::recurse(), LLScriptAssignment::recurse(), LLScriptFuncExpressionList::recurse(), LLScriptGlobalVariable::recurse(), LLScriptSAQuaternion::recurse(), and LLScriptSAVector::recurse().

BOOL legal_binary_expression ( LSCRIPTType result,
LSCRIPTType  left_side,
LSCRIPTType  right_side,
LSCRIPTExpressionType  expression 
)

Definition at line 537 of file lscript_typecheck.cpp.

References FALSE, gSupportedExpressionArray, LST_NULL, LST_UNDEFINED, and TRUE.

Referenced by LLScriptShiftRight::recurse(), LLScriptShiftLeft::recurse(), LLScriptBooleanOr::recurse(), LLScriptBooleanAnd::recurse(), LLScriptBitXor::recurse(), LLScriptBitOr::recurse(), LLScriptBitAnd::recurse(), LLScriptMod::recurse(), LLScriptDivide::recurse(), LLScriptTimes::recurse(), LLScriptMinus::recurse(), LLScriptPlus::recurse(), LLScriptGreaterThan::recurse(), LLScriptLessThan::recurse(), LLScriptGreaterEquals::recurse(), LLScriptLessEquals::recurse(), LLScriptNotEquals::recurse(), LLScriptEquality::recurse(), LLScriptModAssignment::recurse(), LLScriptDivAssignment::recurse(), LLScriptMulAssignment::recurse(), LLScriptSubAssignment::recurse(), LLScriptAddAssignment::recurse(), and store2stack().

BOOL legal_casts ( LSCRIPTType  cast,
LSCRIPTType  base 
)

Definition at line 179 of file lscript_typecheck.cpp.

References FALSE, LST_FLOATINGPOINT, LST_INTEGER, LST_KEY, LST_LIST, LST_NULL, LST_QUATERNION, LST_STRING, LST_UNDEFINED, LST_VECTOR, and TRUE.

Referenced by LLScriptTypeCast::recurse().

BOOL legal_unary_expression ( LSCRIPTType result,
LSCRIPTType  left_side,
LSCRIPTExpressionType  expression 
)

Definition at line 563 of file lscript_typecheck.cpp.

References FALSE, gSupportedExpressionArray, LST_NULL, LST_UNDEFINED, and TRUE.

Referenced by LLScriptPostDecrement::recurse(), LLScriptPostIncrement::recurse(), LLScriptPreDecrement::recurse(), LLScriptPreIncrement::recurse(), LLScriptBitNot::recurse(), LLScriptBooleanNot::recurse(), and LLScriptUnaryMinus::recurse().

LSCRIPTType promote ( LSCRIPTType  left_side,
LSCRIPTType  right_side 
)

Definition at line 144 of file lscript_typecheck.cpp.

References implicit_casts(), LST_UNDEFINED, and type.


Variable Documentation

LSCRIPTType gSupportedExpressionArray[LET_EOF][LST_EOF][LST_EOF]

Definition at line 292 of file lscript_typecheck.cpp.

Referenced by init_supported_expressions(), legal_binary_expression(), and legal_unary_expression().


Generated on Thu Jul 1 06:10:53 2010 for Second Life Viewer by  doxygen 1.4.7