|
||||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectorg.eclipse.jdt.internal.compiler.ast.ASTNode
org.eclipse.jdt.internal.compiler.ast.Statement
org.eclipse.jdt.internal.compiler.ast.Expression
org.eclipse.jdt.internal.compiler.ast.OperatorExpression
org.eclipse.jdt.internal.compiler.ast.BinaryExpression
org.eclipse.jdt.internal.compiler.ast.CombinedBinaryExpression
public class CombinedBinaryExpression
CombinedBinaryExpression is an implementation of BinaryExpression that
specifically attempts to mitigate the issues raised by expressions which
have a very deep leftmost branch. It does so by maintaining a table of
direct references to its subexpressions, and implementing non-recursive
variants of the most significant recursive algorithms of its ancestors.
The subexpressions table only holds intermediate binary expressions. Its
role is to provide the reversed navigation through the left relationship
of BinaryExpression to Expression. To cope with potentially very deep
left branches, an instance of CombinedBinaryExpression is created once in
a while, using variable thresholds held by arityMax.
As a specific case, the topmost node of all binary expressions that are
deeper than one is a CombinedBinaryExpression, but it has no references
table.
Notes:
| 字段摘要 | |
|---|---|
int |
arity
The number of consecutive binary expressions of this' left branch that bear the same operator as this. |
static int |
ARITY_MAX_MAX
Upper limit for arityMax. |
static int |
ARITY_MAX_MIN
Default lower limit for arityMax. |
int |
arityMax
The threshold that will trigger the creation of the next full-fledged CombinedBinaryExpression. |
static int |
defaultArityMaxStartingValue
Default value for the first term of the series of arityMax
values. |
BinaryExpression[] |
referencesTable
A table of references to the binary expressions of this' left branch. |
| 从类 org.eclipse.jdt.internal.compiler.ast.BinaryExpression 继承的字段 |
|---|
left, optimizedBooleanConstant, right |
| 从类 org.eclipse.jdt.internal.compiler.ast.OperatorExpression 继承的字段 |
|---|
OperatorSignatures |
| 从类 org.eclipse.jdt.internal.compiler.ast.Expression 继承的字段 |
|---|
constant, implicitConversion, resolvedType, statementEnd |
| 从类 org.eclipse.jdt.internal.compiler.ast.Statement 继承的字段 |
|---|
COMPLAINED_FAKE_REACHABLE, COMPLAINED_UNREACHABLE, NOT_COMPLAINED |
| 从接口 org.eclipse.jdt.internal.compiler.ast.OperatorIds 继承的字段 |
|---|
AND, AND_AND, DIVIDE, EQUAL, EQUAL_EQUAL, GREATER, GREATER_EQUAL, INSTANCEOF, LEFT_SHIFT, LESS, LESS_EQUAL, MINUS, MINUS_MINUS, MULTIPLY, NOT, NOT_EQUAL, NumberOfTables, OR, OR_OR, PLUS, PLUS_PLUS, QUESTIONCOLON, REMAINDER, RIGHT_SHIFT, TWIDDLE, UNSIGNED_RIGHT_SHIFT, XOR |
| 构造方法摘要 | |
|---|---|
CombinedBinaryExpression(CombinedBinaryExpression expression)
|
|
CombinedBinaryExpression(Expression left,
Expression right,
int operator,
int arity)
Make a new CombinedBinaryExpression. |
|
| 方法摘要 | |
|---|---|
FlowInfo |
analyseCode(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo)
|
void |
generateOptimizedStringConcatenation(BlockScope blockScope,
CodeStream codeStream,
int typeID)
|
void |
generateOptimizedStringConcatenationCreation(BlockScope blockScope,
CodeStream codeStream,
int typeID)
|
StringBuffer |
printExpressionNoParenthesis(int indent,
StringBuffer output)
|
TypeBinding |
resolveType(BlockScope scope)
Resolve the type of this expression in the context of a blockScope |
void |
traverse(ASTVisitor visitor,
BlockScope scope)
Traverse an expression in the context of a blockScope |
void |
tuneArityMax()
Change arityMax if and as needed. |
| 从类 org.eclipse.jdt.internal.compiler.ast.OperatorExpression 继承的方法 |
|---|
classInitialize, generateTableTestCase, get_AND_AND, get_AND, get_DIVIDE, get_EQUAL_EQUAL, get_GREATER_EQUAL, get_GREATER, get_LEFT_SHIFT, get_LESS_EQUAL, get_LESS, get_MINUS, get_MULTIPLY, get_OR_OR, get_OR, get_PLUS, get_REMAINDER, get_RIGHT_SHIFT, get_UNSIGNED_RIGHT_SHIFT, get_XOR, nullStatus, operatorToString, printExpression |
| 从类 org.eclipse.jdt.internal.compiler.ast.Statement 继承的方法 |
|---|
branchChainTo, checkAgainstNullAnnotation, complainIfUnreachable, expectedType, generateArguments, isBoxingCompatible, isEmptyBlock, isKnowDeadCodePattern, isValidJavaStatement, resolveCase |
| 从类 org.eclipse.jdt.internal.compiler.ast.ASTNode 继承的方法 |
|---|
checkInvocationArguments, concreteStatement, isFieldUseDeprecated, isImplicitThis, isMethodUseDeprecated, isSuper, isThis, isTypeUseDeprecated, printAnnotations, printIndent, printModifiers, resolveAnnotations, resolveDeprecatedAnnotations, sourceEnd, sourceStart, toString |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| 字段详细信息 |
|---|
public int arity
public int arityMax
public static final int ARITY_MAX_MAX
arityMax.
public static final int ARITY_MAX_MIN
arityMax.
public static int defaultArityMaxStartingValue
arityMax
values. Changing this allows for experimentation. Not meant to be
changed during a parse operation.
public BinaryExpression[] referencesTable
| 构造方法详细信息 |
|---|
public CombinedBinaryExpression(Expression left,
Expression right,
int operator,
int arity)
BinaryExpression.left. arity and left must be
compatible with each other (that is, there must be at least arity - 1
consecutive compatible binary expressions into the leftmost branch of left,
the topmost of which being left's immediate left expression).
left - the left branch expressionright - the right branch expressionoperator - the operator for this binary expression - only PLUS for nowarity - the number of binary expressions of a compatible operator that
already exist into the leftmost branch of left (including left); must
be strictly greater than 0public CombinedBinaryExpression(CombinedBinaryExpression expression)
| 方法详细信息 |
|---|
public FlowInfo analyseCode(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo)
BinaryExpression 中的 analyseCode
public void generateOptimizedStringConcatenation(BlockScope blockScope,
CodeStream codeStream,
int typeID)
BinaryExpression 中的 generateOptimizedStringConcatenation
public void generateOptimizedStringConcatenationCreation(BlockScope blockScope,
CodeStream codeStream,
int typeID)
BinaryExpression 中的 generateOptimizedStringConcatenationCreation
public StringBuffer printExpressionNoParenthesis(int indent,
StringBuffer output)
BinaryExpression 中的 printExpressionNoParenthesispublic TypeBinding resolveType(BlockScope scope)
Expression 复制的描述
BinaryExpression 中的 resolveType
public void traverse(ASTVisitor visitor,
BlockScope scope)
Expression 复制的描述
BinaryExpression 中的 traversepublic void tuneArityMax()
arityMax if and as needed. The current policy is to double
arityMax each time this method is called, until it reaches
ARITY_MAX_MAX. Other policies may consider incrementing it less
agressively. Call only after an appropriate value has been assigned to
BinaryExpression.left.
|
||||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||