return getFactor();
}
private ASTNode parseLookaheadOperator(final int min_precedence) {
ASTNode rhs = parsePrimary();
Operator operLookahead;
InfixOperator binOper;
while (true) {
final int lookahead = fToken;
if (lookahead != TT_OPERATOR) {
break;
}
operLookahead = determineBinaryOperator();
if (operLookahead instanceof InfixOperator) {
binOper = (InfixOperator) operLookahead;
if (binOper.getPrecedence() > min_precedence) {
rhs = parseOperators(rhs, operLookahead.getPrecedence());
continue;
} else if ((binOper.getPrecedence() == min_precedence) && (binOper.getGrouping() == InfixOperator.RIGHT_ASSOCIATIVE)) {
rhs = parseOperators(rhs, operLookahead.getPrecedence());
continue;
}
} else {
operLookahead = determinePostfixOperator();
if (operLookahead instanceof PostfixOperator) {
if (operLookahead.getPrecedence() > min_precedence) {
getNextToken();
rhs = ((PostfixOperator) operLookahead).createFunction(fFactory, rhs);
continue;
}
}