/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.internal.compiler.ast; public abstract class NumberLiteral extends Literal { char[] source; public NumberLiteral(char[] token, int s, int e) { this(s,e) ; this.source = token ; } public NumberLiteral(int s, int e) { super (s,e) ; } public boolean isValidJavaStatement(){ return false ; } public char[] source(){ return this.source; } protected static char[] removePrefixZerosAndUnderscores(char[] token, boolean isLong) { int max = token.length; int start = 0; int end = max - 1; if (isLong) { end--; // remove the 'L' or 'l' } if (max > 1 && token[0] == '0') { if (max > 2 && (token[1] == 'x' || token[1] == 'X')) { start = 2; } else if (max > 2 && (token[1] == 'b' || token[1] == 'B')) { start = 2; } else { start = 1; } } boolean modified = false; boolean ignore = true; loop: for (int i = start; i < max; i++) { char currentChar = token[i]; switch(currentChar) { case '0' : // this is a prefix '0' if (ignore && !modified && (i < end)) { modified = true; } break; case '_' : modified = true; break loop; default : ignore = false; } } if (!modified) { return token; } ignore = true; StringBuffer buffer = new StringBuffer(); buffer.append(token, 0, start); loop: for (int i = start; i < max; i++) { char currentChar = token[i]; switch(currentChar) { case '0' : if (ignore && (i < end)) { // this is a prefix '0' continue loop; } break; case '_' : continue loop; default: ignore = false; } buffer.append(currentChar); } return buffer.toString().toCharArray(); } }