private AviatorObject getAviatorObjectFromToken(Token<?> lookhead) {
   AviatorObject result = null;
   switch (lookhead.getType()) {
     case Number:
       // load numbers
       NumberToken numberToken = (NumberToken) lookhead;
       if (numberToken.getNumber() instanceof Double) {
         result = AviatorDouble.valueOf(numberToken.getNumber());
       } else {
         result = AviatorLong.valueOf(numberToken.getNumber());
       }
       break;
     case String:
       // load string
       result = new AviatorString((String) lookhead.getValue(null));
       break;
     case Pattern:
       // load pattern
       result = new AviatorPattern((String) lookhead.getValue(null));
       break;
     case Variable:
       if (lookhead == Variable.TRUE) {
         result = AviatorBoolean.TRUE;
       } else if (lookhead == Variable.FALSE) {
         result = AviatorBoolean.FALSE;
       } else if (lookhead == Variable.NIL) {
         result = AviatorNil.NIL;
       }
       break;
     case Char:
       result = new AviatorString(String.valueOf(lookhead.getValue(null)));
       break;
   }
   return result;
 }
Exemple #2
0
 @Override
 public AviatorObject call(Map<String, Object> env, AviatorObject arg1) {
   switch (arg1.getAviatorType()) {
     case Boolean:
       return AviatorLong.valueOf(arg1.booleanValue(env) ? 1 : 0);
     case JavaType:
       Object obj = arg1.getValue(env);
       if (obj instanceof Number) {
         return AviatorLong.valueOf(((Number) obj).longValue());
       } else if (obj instanceof String) {
         return AviatorLong.valueOf(Long.valueOf((String) obj));
       } else if (obj instanceof Character) {
         return AviatorLong.valueOf(Long.valueOf(String.valueOf(obj)));
       } else {
         throw new ClassCastException("Could not cast " + obj.getClass().getName() + " to long");
       }
     case String:
       return AviatorLong.valueOf(Long.valueOf((String) arg1.getValue(env)));
     case Long:
     case Double:
       return AviatorLong.valueOf(((Number) arg1.getValue(env)).longValue());
     default:
       throw new ClassCastException("Could not cast " + arg1 + " to long");
   }
 }