if(suffix.isEmpty())
suffix = null;
if(prefix == null && suffix == null){
endLineBlock();
}else{
statement = new XOperatorPrefixSuffix(endLineBlock(), prefix, statement, suffix);
}
while(token.kind==XTokenKind.LGROUP || token.kind==XTokenKind.LINDEX){
startLineBlock();
startLineBlock();
if(token.kind==XTokenKind.LGROUP){
List<XStatement> list = makeMethodCallParamList();
statement = new XMethodCall(endLineBlock(), statement, list);
}else if(token.kind==XTokenKind.LINDEX){
nextToken();
XStatement index = makeInnerStatement();
expected(XTokenKind.RINDEX);
statement = new XIndex(endLineBlock(), statement, index);
}
suffix = new ArrayList<XOperator>();
while(isOperator(token.kind)){
operator = readOperator(Type.SUFFIX);
if(operator==XOperator.NONE)
break;
suffix.add(operator);
}
if(suffix.isEmpty())
suffix = null;
if(suffix == null){
endLineBlock();
}else{
statement = new XOperatorPrefixSuffix(endLineBlock(), null, statement, suffix);
}
}
return statement;
}