private final ASTNode parsePrefixOperator(final PrefixOperator prefixOperator) { getNextToken(); final ASTNode temp = parseLookaheadOperator(prefixOperator.getPrecedence()); if ("PreMinus".equals(prefixOperator.getFunctionName()) && temp instanceof NumberNode) { // special cases for negative numbers ((NumberNode) temp).toggleSign(); return temp; } return prefixOperator.createFunction(fFactory, temp); }
private ASTNode parsePrimary() { if (fToken == TT_OPERATOR) { if (fOperatorString.equals(".")) { fCurrentChar = '.'; return getNumber(false); } final PrefixOperator prefixOperator = determinePrefixOperator(); if (prefixOperator != null) { getNextToken(); final ASTNode temp = parseLookaheadOperator(prefixOperator.getPrecedence()); if (prefixOperator.getFunctionName().equals("PreMinus")) { // special cases for negative numbers if (temp instanceof NumberNode) { ((NumberNode) temp).toggleSign(); return temp; } } return prefixOperator.createFunction(fFactory, temp); } throwSyntaxError("Operator: " + fOperatorString + " is no prefix operator."); } return getPart(); }
/** * Parses the primary. * * @return the AST node */ private ASTNode parsePrimary() { if ( fToken == TT_OPERATOR ) { final PrefixOperator prefixOperator = determinePrefixOperator(); if ( prefixOperator != null ) { getNextToken(); final ASTNode temp = parseLookaheadOperator( prefixOperator.getPrecedence() ); if ( prefixOperator.getFunctionName().equals( "PreMinus" ) ) { // special cases for negative numbers if ( temp instanceof NumberNode ) { ((NumberNode) temp).toggleSign(); return temp; } } return prefixOperator.createFunction( fFactory, temp ); } throwSyntaxError( "Operator: " + fOperatorString + " is no prefix operator." ); } return getPart(); }