56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Java
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Java
		
	
	
		
			Executable File
		
	
	
	
	
| package edu.utexas.cs345.jdblisp;
 | |
| 
 | |
| import java.math.BigDecimal;
 | |
| import java.math.BigInteger;
 | |
| 
 | |
| /**
 | |
|  * @author Jonathan Bernard (jdbernard@gmail.com)
 | |
|  */
 | |
| public class Num implements SExp {
 | |
| 
 | |
|     private Number n;
 | |
| 
 | |
|     public Num(String string) {
 | |
|         try { n = Short.parseShort(string); return; }
 | |
|         catch (NumberFormatException nfe) {}
 | |
| 
 | |
|         try { n = Integer.parseInt(string); return; }
 | |
|         catch (NumberFormatException nfe) {}
 | |
| 
 | |
|         try { n = Long.parseLong(string); return; }
 | |
|         catch (NumberFormatException nfe) {}
 | |
| 
 | |
|         try { n = new BigInteger(string); return; }
 | |
|         catch (NumberFormatException nfe) {}
 | |
| 
 | |
|         try { n = Float.parseFloat(string); return; }
 | |
|         catch (NumberFormatException nfe) {}
 | |
| 
 | |
|         try { n = Double.parseDouble(string); return; }
 | |
|         catch (NumberFormatException nfe) {}
 | |
| 
 | |
|         try { n = new BigDecimal(string); return; }
 | |
|         catch (NumberFormatException nfe) {
 | |
|             throw new LispException("Cannot parse number: " + string);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /** {@inheritdoc} */
 | |
|     public SExp eval(SymbolTable table) {
 | |
|         return new SymbolTable(
 | |
|             new TableEntry(
 | |
|                 new Symbol("RETURN-VAL"),
 | |
|                 null,
 | |
|                 this));
 | |
|     }
 | |
| 
 | |
|     public String display(String offset) {
 | |
|         return offset + "Num: " + n.toString() + "\n";
 | |
|     }
 | |
| 
 | |
|     @Override
 | |
|     public String toString() {
 | |
|         return n.toString();
 | |
|     }
 | |
| }
 |