/* (non-Javadoc) * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.PrefixExpression) */ public boolean visit(PrefixExpression node) { if (node.getOperand().getNodeType() == ASTNode.NUMBER_LITERAL) { // For number literals we see if it is a "+" or "-" prefix, and if it is, we simply // create a PTNumberLiteral with the operator already in it. It is a simplification. // Any other operator we've left alone since those won't be decoded simply by the // Number decoder. // If not a number literal, then leave alone since needs to be handled as a prefix // operation. PrefixExpression.Operator operator = node.getOperator(); if (operator == PrefixExpression.Operator.PLUS || operator == PrefixExpression.Operator.MINUS) { PTNumberLiteral nm = InstantiationFactory.eINSTANCE.createPTNumberLiteral(); nm.setToken(operator.toString() + ((NumberLiteral) node.getOperand()).getToken()); expression = nm; return false; } } PTPrefixExpression pe = InstantiationFactory.eINSTANCE.createPTPrefixExpression(); PTPrefixOperator ptoper = getParsePrefix(node.getOperator()); if (ptoper == null) { // It is not one we can handle. throw new InvalidExpressionException( MessageFormat.format( WorkbenchUtilityMessages.ParseTreeCreationFromAST_OperatorTooComplicatedToHandle_EXC_, new Object[] {node.getOperator().toString()})); } pe.setOperator(ptoper); pe.setExpression(perform(node.getOperand())); expression = pe; return false; }
/* (non-Javadoc) * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.NumberLiteral) */ public boolean visit(NumberLiteral node) { PTNumberLiteral nl = InstantiationFactory.eINSTANCE.createPTNumberLiteral(); nl.setToken(node.getToken()); expression = nl; return false; }