C# 클래스 Pchp.CodeAnalysis.FlowAnalysis.ExpressionAnalysis

Visits single expressions and project transformations to flow state.
상속: AnalysisVisitor
파일 보기 프로젝트 열기: iolevel/peachpie

공개 메소드들

메소드 설명
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