68 lines
1.4 KiB
Java
68 lines
1.4 KiB
Java
|
/*
|
||
|
* 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 <code>text</code> 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
|
||
|
* <code>true</code>
|
||
|
*/
|
||
|
public boolean numberp() {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retrieve the integer value of this NUMBER.
|
||
|
*
|
||
|
* @return
|
||
|
* the integer value of this NUMBER
|
||
|
*/
|
||
|
public int getValue() {
|
||
|
return value;
|
||
|
}
|
||
|
|
||
|
}
|