/* ('#' (('-'? 'Infinity') | 'NaN') ('f' | 'F')? ) ; */ public void outAFloatConstant(AFloatConstant node) { String s = (String) mProductions.removeLast(); boolean isDouble = true; float value = 0; double dvalue = 0; if (s.endsWith("f") || s.endsWith("F")) isDouble = false; if (s.charAt(0) == '#') { if (s.charAt(1) == '-') { if (isDouble) dvalue = Double.NEGATIVE_INFINITY; else value = Float.NEGATIVE_INFINITY; } else if (s.charAt(1) == 'I') { if (isDouble) dvalue = Double.POSITIVE_INFINITY; else value = Float.POSITIVE_INFINITY; } else { if (isDouble) dvalue = Double.NaN; else value = Float.NaN; } } else { StringBuffer buf = new StringBuffer(); if (node.getMinus() != null) buf.append('-'); buf.append(s); s = buf.toString(); if (isDouble) dvalue = Double.parseDouble(s); else value = Float.parseFloat(s); } Object res; if (isDouble) res = DoubleConstant.v(dvalue); else res = FloatConstant.v(value); mProductions.addLast(res); }