/******************************************************************************* * 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.che.ide.ext.java.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(); } }