public static RubyValue eval(String evalText, RubyBinding binding) {
   RubyCompiler compiler = new RubyCompiler();
   try {
     CompilationResults codes = compiler.compileString(evalText);
     RubyProgram p = codes.getRubyProgram();
     return p.invoke(
         binding.getSelf(), binding.getVariables(), binding.getBlock(), binding.getScope());
   } catch (RecognitionException e) {
     throw new RubyException(RubyRuntime.SyntaxErrorClass, e.toString());
   } catch (TokenStreamException e) {
     throw new RubyException(RubyRuntime.SyntaxErrorClass, e.toString());
   } catch (InstantiationException e) {
     throw new RubyException(e.toString());
   } catch (IllegalAccessException e) {
     throw new RubyException(e.toString());
   }
 }
 private static RubyValue eval(String evalText, RubyBinding binding, String file_name) {
   RubyCompiler compiler = new RubyCompiler(binding, false);
   try {
     CompilationResults codes = compiler.compileString(file_name, evalText);
     RubyProgram p = codes.getRubyProgram();
     if (null != binding) {
       return p.invoke(
           binding.getSelf(), binding.getVariables(), binding.getBlock(), binding.getScope());
     } else {
       return p.invoke();
     }
   } catch (RecognitionException e) {
     throw new RubyException(RubyRuntime.SyntaxErrorClass, file_name + " " + e.toString());
   } catch (TokenStreamException e) {
     throw new RubyException(RubyRuntime.SyntaxErrorClass, file_name + " " + e.toString());
   } catch (InstantiationException e) {
     throw new RubyException(e.toString());
   } catch (IllegalAccessException e) {
     throw new RubyException(e.toString());
   }
 }