/* * Name: Mike Cifelli * Course: CIS 443 - Programming Languages * Assignment: Lisp Parser */ package parser; /** * This class represents a NUMBER in the PL-Lisp implementation. */ public class LispNumber extends Atom { private int value; /** * Create a new NUMBER with the specified text. * * @param text * the text representing this NUMBER * @throws IllegalArgumentException * Indicates that text does not represent a valid integer. */ public LispNumber(String text) { super(text.replaceFirst("^0+(?!$)", "")); try { this.value = Integer.parseInt(text); } catch (NumberFormatException e) { throw new IllegalArgumentException(text + " is not a valid integer"); } } /** * Create a new NUMBER with the specified value. * * @param value * the integer value of this NUMBER */ public LispNumber(int value) { super(Integer.toString(value)); this.value = value; } /** * Test if this S-expression is a NUMBER. * * @return * true */ public boolean numberp() { return true; } /** * Retrieve the integer value of this NUMBER. * * @return * the integer value of this NUMBER */ public int getValue() { return value; } }