C# Класс Pchp.CodeAnalysis.FlowAnalysis.ExpressionAnalysis

Visits single expressions and project transformations to flow state.
Наследование: AnalysisVisitor
Показать файл Открыть проект

Открытые методы

Метод Описание
ExpressionAnalysis ( Worklist worklist, ISemanticModel model ) : Devsense.PHP.Syntax
VisitArgument ( BoundArgument x ) : void
VisitArray ( BoundArrayEx x ) : void
VisitArrayItem ( BoundArrayItemEx x ) : void
VisitAssign ( BoundAssignEx x ) : void
VisitCompoundAssign ( BoundCompoundAssignEx x ) : void
VisitConcat ( BoundConcatEx x ) : void
VisitConditional ( BoundConditionalEx x ) : void
VisitEcho ( BoundEcho x ) : void
VisitExit ( BoundExitEx x ) : void
VisitExpressionStatement ( BoundExpressionStatement x ) : void
VisitFieldRef ( BoundFieldRef x ) : void
VisitGlobalConstUse ( BoundGlobalConst x ) : void
VisitGlobalFunctionCall ( BoundGlobalFunctionCall x ) : void
VisitGlobalStatement ( BoundGlobalVariableStatement x ) : void
VisitIncDec ( BoundIncDecEx x ) : void
VisitInclude ( BoundIncludeEx x ) : void
VisitInstanceFunctionCall ( BoundInstanceFunctionCall x ) : void
VisitIsEmpty ( BoundIsEmptyEx x ) : void
VisitIsSet ( BoundIsSetEx x ) : void
VisitList ( BoundListEx x ) : void
VisitLiteral ( BoundLiteral x ) : void
VisitNew ( BoundNewEx x ) : void
VisitPseudoConstUse ( BoundPseudoConst x ) : void
VisitReturn ( BoundReturnStatement x ) : void
VisitStaticFunctionCall ( BoundStaticFunctionCall x ) : void
VisitStaticStatement ( BoundStaticVariableStatement x ) : void
VisitThrow ( BoundThrowStatement x ) : void
VisitTypeRef ( BoundTypeRef tref ) : void
VisitUnset ( BoundUnset x ) : void
VisitVariableRef ( BoundVariableRef x ) : void

Защищенные методы

Метод Описание
Visit ( BoundBinaryEx x, ConditionBranch branch ) : void
Visit ( BoundInstanceOfEx x, ConditionBranch branch ) : void
Visit ( BoundUnaryEx x, ConditionBranch branch ) : void
VisitRoutineCall ( BoundRoutineCall x ) : void

Приватные методы

Метод Описание
AsVariableName ( BoundReferenceExpression r ) : string

In case of a local variable or parameter, gets its name.

BindConstantValue ( BoundExpression target, FieldSymbol symbol ) : bool
CompoundOpToBinaryOp ( Operations op ) : Operations
GetBitOperationType ( TypeRefMask lValType, TypeRefMask rValType ) : TypeRefMask

Gets resulting type of bit operation (bit or, and, xor).

GetPlusOperationType ( BoundExpression left, BoundExpression right ) : TypeRefMask

Gets resulting type of + operation.

IsArrayOnly ( TypeRefMask tmask ) : bool

Gets value indicating the given type represents only array types.

IsClassOnly ( TypeRefMask tmask ) : bool

Gets value indicating the given type represents only class types.

IsDoubleOnly ( BoundExpression x ) : bool

Gets value indicating the given type represents a double and nothing else.

IsDoubleOnly ( TypeRefMask tmask ) : bool

Gets value indicating the given type represents a double and nothing else.

IsLTInt64Max ( BoundReferenceExpression r ) : bool

Determines if given expression represents a variable which value is less than Int64.Max in current state.

IsLongConstant ( BoundExpression expr, long value ) : bool
IsLongOnly ( BoundExpression x ) : bool

Gets value indicating the given type represents a long and nothing else.

IsLongOnly ( TypeRefMask tmask ) : bool

Gets value indicating the given type represents a long and nothing else.

IsNumberOnly ( BoundExpression x ) : bool

Gets value indicating the given type is long or double or both but nothing else.

IsNumberOnly ( TypeRefMask tmask ) : bool

Gets value indicating the given type is long or double or both but nothing else.

LTInt64Max ( BoundReferenceExpression r, bool lt ) : void

In case of a local variable or parameter, sets associated flag determining its value is less than Int64.Max.

ResolveBinaryEx ( BoundBinaryEx x, ConditionBranch branch ) : TypeRefMask
ResolveBitOperation ( object xobj, object yobj, Operations op ) : object

Resolves value of bit operation.

TODO: move to **evaluation**.

ResolveType ( INamedTypeRef dtype ) : TypeSymbol
ResolveUnaryOperatorExpression ( BoundUnaryEx x, ConditionBranch branch ) : TypeRefMask
Visit ( BoundExpression x, BoundAccess access ) : void

Updates the expression access and visits it.

VisitRoutineCallEpilogue ( BoundRoutineCall x ) : void
VisitShortCircuitOp ( BoundExpression lExpr, BoundExpression rExpr, bool isAndOp, ConditionBranch branch ) : void

Описание методов

ExpressionAnalysis() публичный Метод

public ExpressionAnalysis ( Worklist worklist, ISemanticModel model ) : Devsense.PHP.Syntax
worklist Worklist
model ISemanticModel
Результат Devsense.PHP.Syntax

Visit() защищенный Метод

protected Visit ( BoundBinaryEx x, ConditionBranch branch ) : void
x Pchp.CodeAnalysis.Semantics.BoundBinaryEx
branch ConditionBranch
Результат void

Visit() защищенный Метод

protected Visit ( BoundInstanceOfEx x, ConditionBranch branch ) : void
x Pchp.CodeAnalysis.Semantics.BoundInstanceOfEx
branch ConditionBranch
Результат void

Visit() защищенный Метод

protected Visit ( BoundUnaryEx x, ConditionBranch branch ) : void
x Pchp.CodeAnalysis.Semantics.BoundUnaryEx
branch ConditionBranch
Результат void

VisitArgument() публичный Метод

public VisitArgument ( BoundArgument x ) : void
x BoundArgument
Результат void

VisitArray() публичный Метод

public VisitArray ( BoundArrayEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundArrayEx
Результат void

VisitArrayItem() публичный Метод

public VisitArrayItem ( BoundArrayItemEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundArrayItemEx
Результат void

VisitAssign() публичный Метод

public VisitAssign ( BoundAssignEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundAssignEx
Результат void

VisitCompoundAssign() публичный Метод

public VisitCompoundAssign ( BoundCompoundAssignEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundCompoundAssignEx
Результат void

VisitConcat() публичный Метод

public VisitConcat ( BoundConcatEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundConcatEx
Результат void

VisitConditional() публичный Метод

public VisitConditional ( BoundConditionalEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundConditionalEx
Результат void

VisitEcho() публичный Метод

public VisitEcho ( BoundEcho x ) : void
x Pchp.CodeAnalysis.Semantics.BoundEcho
Результат void

VisitExit() публичный Метод

public VisitExit ( BoundExitEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundExitEx
Результат void

VisitExpressionStatement() публичный Метод

public VisitExpressionStatement ( BoundExpressionStatement x ) : void
x Pchp.CodeAnalysis.Semantics.BoundExpressionStatement
Результат void

VisitFieldRef() публичный Метод

public VisitFieldRef ( BoundFieldRef x ) : void
x Pchp.CodeAnalysis.Semantics.BoundFieldRef
Результат void

VisitGlobalConstUse() публичный Метод

public VisitGlobalConstUse ( BoundGlobalConst x ) : void
x Pchp.CodeAnalysis.Semantics.BoundGlobalConst
Результат void

VisitGlobalFunctionCall() публичный Метод

public VisitGlobalFunctionCall ( BoundGlobalFunctionCall x ) : void
x Pchp.CodeAnalysis.Semantics.BoundGlobalFunctionCall
Результат void

VisitGlobalStatement() публичный Метод

public VisitGlobalStatement ( BoundGlobalVariableStatement x ) : void
x Pchp.CodeAnalysis.Semantics.BoundGlobalVariableStatement
Результат void

VisitIncDec() публичный Метод

public VisitIncDec ( BoundIncDecEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundIncDecEx
Результат void

VisitInclude() публичный Метод

public VisitInclude ( BoundIncludeEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundIncludeEx
Результат void

VisitInstanceFunctionCall() публичный Метод

public VisitInstanceFunctionCall ( BoundInstanceFunctionCall x ) : void
x Pchp.CodeAnalysis.Semantics.BoundInstanceFunctionCall
Результат void

VisitIsEmpty() публичный Метод

public VisitIsEmpty ( BoundIsEmptyEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundIsEmptyEx
Результат void

VisitIsSet() публичный Метод

public VisitIsSet ( BoundIsSetEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundIsSetEx
Результат void

VisitList() публичный Метод

public VisitList ( BoundListEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundListEx
Результат void

VisitLiteral() публичный Метод

public VisitLiteral ( BoundLiteral x ) : void
x Pchp.CodeAnalysis.Semantics.BoundLiteral
Результат void

VisitNew() публичный Метод

public VisitNew ( BoundNewEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundNewEx
Результат void

VisitPseudoConstUse() публичный Метод

public VisitPseudoConstUse ( BoundPseudoConst x ) : void
x Pchp.CodeAnalysis.Semantics.BoundPseudoConst
Результат void

VisitReturn() публичный Метод

public VisitReturn ( BoundReturnStatement x ) : void
x Pchp.CodeAnalysis.Semantics.BoundReturnStatement
Результат void

VisitRoutineCall() защищенный Метод

protected VisitRoutineCall ( BoundRoutineCall x ) : void
x Pchp.CodeAnalysis.Semantics.BoundRoutineCall
Результат void

VisitStaticFunctionCall() публичный Метод

public VisitStaticFunctionCall ( BoundStaticFunctionCall x ) : void
x Pchp.CodeAnalysis.Semantics.BoundStaticFunctionCall
Результат void

VisitStaticStatement() публичный Метод

public VisitStaticStatement ( BoundStaticVariableStatement x ) : void
x Pchp.CodeAnalysis.Semantics.BoundStaticVariableStatement
Результат void

VisitThrow() публичный Метод

public VisitThrow ( BoundThrowStatement x ) : void
x Pchp.CodeAnalysis.Semantics.BoundThrowStatement
Результат void

VisitTypeRef() публичный Метод

public VisitTypeRef ( BoundTypeRef tref ) : void
tref Pchp.CodeAnalysis.Semantics.BoundTypeRef
Результат void

VisitUnset() публичный Метод

public VisitUnset ( BoundUnset x ) : void
x Pchp.CodeAnalysis.Semantics.BoundUnset
Результат void

VisitVariableRef() публичный Метод

public VisitVariableRef ( BoundVariableRef x ) : void
x Pchp.CodeAnalysis.Semantics.BoundVariableRef
Результат void