lscript_typecheck.h File Reference

typechecks script More...

#include "lscript_error.h"

Include dependency graph for lscript_typecheck.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef enum e_lscript_expression_types LSCRIPTExpressionType

Enumerations

enum  e_lscript_expression_types {
  LET_NULL, LET_ASSIGNMENT, LET_ADD_ASSIGN, LET_SUB_ASSIGN,
  LET_MUL_ASSIGN, LET_DIV_ASSIGN, LET_MOD_ASSIGN, LET_EQUALITY,
  LET_NOT_EQUALS, LET_LESS_EQUALS, LET_GREATER_EQUALS, LET_LESS_THAN,
  LET_GREATER_THAN, LET_PLUS, LET_MINUS, LET_TIMES,
  LET_DIVIDE, LET_MOD, LET_BIT_AND, LET_BIT_OR,
  LET_BIT_XOR, LET_BOOLEAN_AND, LET_BOOLEAN_OR, LET_PARENTHESIS,
  LET_UNARY_MINUS, LET_BOOLEAN_NOT, LET_BIT_NOT, LET_PRE_INCREMENT,
  LET_PRE_DECREMENT, LET_CAST, LET_VECTOR_INITIALIZER, LET_QUATERNION_INITIALIZER,
  LET_LIST_INITIALIZER, LET_LVALUE, LET_POST_INCREMENT, LET_POST_DECREMENT,
  LET_FUNCTION_CALL, LET_CONSTANT, LET_FOR_EXPRESSION_LIST, LET_FUNC_EXPRESSION_LIST,
  LET_LIST_EXPRESSION_LIST, LET_PRINT, LET_SHIFT_LEFT, LET_SHIFT_RIGHT,
  LET_EOF
}

Functions

LSCRIPTType implicit_casts (LSCRIPTType left_side, LSCRIPTType right_side)
BOOL legal_casts (LSCRIPTType cast, LSCRIPTType base)
LSCRIPTType promote (LSCRIPTType left_side, LSCRIPTType right_side)
BOOL legal_assignment (LSCRIPTType left_side, LSCRIPTType right_side)
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)
void init_supported_expressions (void)


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.h.


Typedef Documentation

typedef enum e_lscript_expression_types LSCRIPTExpressionType


Enumeration Type Documentation

enum e_lscript_expression_types

Enumerator:
LET_NULL 
LET_ASSIGNMENT 
LET_ADD_ASSIGN 
LET_SUB_ASSIGN 
LET_MUL_ASSIGN 
LET_DIV_ASSIGN 
LET_MOD_ASSIGN 
LET_EQUALITY 
LET_NOT_EQUALS 
LET_LESS_EQUALS 
LET_GREATER_EQUALS 
LET_LESS_THAN 
LET_GREATER_THAN 
LET_PLUS 
LET_MINUS 
LET_TIMES 
LET_DIVIDE 
LET_MOD 
LET_BIT_AND 
LET_BIT_OR 
LET_BIT_XOR 
LET_BOOLEAN_AND 
LET_BOOLEAN_OR 
LET_PARENTHESIS 
LET_UNARY_MINUS 
LET_BOOLEAN_NOT 
LET_BIT_NOT 
LET_PRE_INCREMENT 
LET_PRE_DECREMENT 
LET_CAST 
LET_VECTOR_INITIALIZER 
LET_QUATERNION_INITIALIZER 
LET_LIST_INITIALIZER 
LET_LVALUE 
LET_POST_INCREMENT 
LET_POST_DECREMENT 
LET_FUNCTION_CALL 
LET_CONSTANT 
LET_FOR_EXPRESSION_LIST 
LET_FUNC_EXPRESSION_LIST 
LET_LIST_EXPRESSION_LIST 
LET_PRINT 
LET_SHIFT_LEFT 
LET_SHIFT_RIGHT 
LET_EOF 

Definition at line 42 of file lscript_typecheck.h.


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 LLScriptSAVector::recurse(), LLScriptSAQuaternion::recurse(), LLScriptGlobalVariable::recurse(), LLScriptFuncExpressionList::recurse(), LLScriptAssignment::recurse(), LLScriptVectorInitializer::recurse(), LLScriptQuaternionInitializer::recurse(), LLScriptReturn::recurse(), and LLScriptDeclaration::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 LLScriptAddAssignment::recurse(), LLScriptSubAssignment::recurse(), LLScriptMulAssignment::recurse(), LLScriptDivAssignment::recurse(), LLScriptModAssignment::recurse(), LLScriptEquality::recurse(), LLScriptNotEquals::recurse(), LLScriptLessEquals::recurse(), LLScriptGreaterEquals::recurse(), LLScriptLessThan::recurse(), LLScriptGreaterThan::recurse(), LLScriptPlus::recurse(), LLScriptMinus::recurse(), LLScriptTimes::recurse(), LLScriptDivide::recurse(), LLScriptMod::recurse(), LLScriptBitAnd::recurse(), LLScriptBitOr::recurse(), LLScriptBitXor::recurse(), LLScriptBooleanAnd::recurse(), LLScriptBooleanOr::recurse(), LLScriptShiftLeft::recurse(), LLScriptShiftRight::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 LLScriptUnaryMinus::recurse(), LLScriptBooleanNot::recurse(), LLScriptBitNot::recurse(), LLScriptPreIncrement::recurse(), LLScriptPreDecrement::recurse(), LLScriptPostIncrement::recurse(), and LLScriptPostDecrement::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.


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