Scheme2Js

Software captura de pantalla:
Scheme2Js
Detalles de software:
Versión: 20101114
Fecha de carga: 11 May 15
Promotor: Florian Loitsch
Licencia: Libre
Popularidad: 106

Rating: 3.5/5 (Total Votes: 2)

Scheme2Js es un Esquema de compilador de Javascript. Mientras que un poco de esfuerzo se ha dedicado a estar lo más cerca posible a R5RS, nos concentramos principalmente en la eficiencia.
Por lo general Scheme2Js produce código Javascript, esto es comparable al código escrito a mano. Con el fin de lograr este rendimiento, Scheme2Js no es completamente compatible R5RS. En particular, carece de soporte para continuaciones, números exactos y que trata a la recursión de cola sólo parcialmente.
Scheme2Js ofrece varias banderas, que permiten modificar el resultado:
ย ท --no-js-punto-notación no permite el acceso a los campos de JavaScript con la notación de punto. Esta bandera inhabilita accesos de la forma xy como en document.getElementById. Sin embargo, es todavía posible acceder a la es una expresión válida usando la función js-campo.
ย ท --mutable-secuencias: con el fin de mejorar el rendimiento de cuerda-operaciones y facilitar la interfaz entre el esquema y el código JavaScript, la implementación predeterminada cuerdas Esquema de mapas a cadenas de JavaScript. Contrariamente a las cadenas de Scheme, cadenas de JavaScript son, sin embargo inmutable. Este mapas bandera cadenas a una clase de JavaScript que representa cadenas Scheme, que son mutables. El código resultante puede ser ligeramente más lento, y es más difícil para interactuar con código Javascript.
ย ท --encapsulate-partes encapsula el programa en una función anónima. Sólo las variables globales están fuera de esta función anónima. Por un lado esto introduce una llamada de función a la función anónima. Pero por otra parte la mayoría de las implementaciones de Javascript debe correr más rápido con esta optimización: generalmente tablas hash se utilizan para representar los ámbitos en JavaScript. Mediante el uso de una función anónima los programas de las variables se separan en su propia tabla hash más pequeño que (en teoría) acelera los accesos a estas variables. Más importante aún las variables se almacenan en su propia tabla hash, y no en la tabla hash global, que es accesible por la variable global. Es extremadamente fácil de modificar indirectamente el contenido de las variables globales. Inlining u otras optimizaciones comunes son, por tanto, imposible de hacer en las variables globales. Al almacenar las variables del programa en una función anónima estas optimizaciones se convierten de nuevo posible.
ย ท --optimize-var-serie reduce el número de variables utilizadas en el código JavaScript resultante. El código puede correr más rápido, pero es más difícil de depurar, ya que los nombres de las variables se pierden y la misma variable podrían utilizarse varias veces.
ย ท --optimize-tiempo: con esta bandera Scheme2Js optimiza común, mientras que los bucles. El sin optimizar bucles while son a menudo de la forma:
 while (true) {
   si (prueba)
     resVar = res;
   else {
     modify_loop_variable;
     continuar;
   }
   romper;
 }
 
Esta optimización busca estos patrones y mueve la prueba en el bucle while:
 while (prueba!) {
   modify_loop_variable;
 }
 resVar = res;
 
Esta optimización se ha implementado recientemente y está, por tanto, aún no activada de forma predeterminada.
ย ท --verbose imprime alguna información.
ย ท --no-inlining desactiva todas las funciones inline (constantes aún podrían estar en línea).
ย ท --inline-globales permite Scheme2Js inline funciones y constantes globales. Esto puede tener dos efectos secundarios no deseados: para uno, variables globales se utilizan a menudo para transferir datos entre diferentes módulos. Algunas funciones entre líneas se pierden si no se hace referencia a ellos nunca más. Si las funciones globales deben ser utilizados fuera de un módulo, no se debe usar esta bandera. (Este comportamiento es probable que cambie en futuras versiones de Scheme2Js.)
ย ท --unresolved-es-js: si una variable no está consolidado, el compilador asume la variable viene de otro módulo o desde JavaScript. Vea la Sección Esquema - Javascript para una discusión más detallada de la interfaz Esquema JavaScript.
ย ท --js-esto proporciona la esta variable dentro de las funciones de Scheme. De esta manera, los procedimientos de Scheme se puede utilizar como métodos de objetos de JavaScript.
ย ท --no-tailrec desactiva el tailrec a la optimización mientras bucle. Si usted sospecha que un error en el camino del compilador de traducir cola-RECS, puede probar esta bandera.
ย ท --no-optimizar-llamadas desactiva Scheme2Js inlining de operaciones binarias o unarios. Por ejemplo sci_plus (3, 5) está optimizado para (3 + 5). Esta optimización es muy importante, y por lo general hay ninguna razón para desactivarlo.
ย ท --no-optimizar-consts desactiva el cálculo pre-constante. A menos discapacitados (con esta bandera), constantes compuestas se precalculados y sus ocurrencias reemplazadas por una referencia a una variable que contiene la constante. Esto hace que repite los accesos a estas constantes más rápido, pero introduce nuevas variables.
ย ท --no-optimizar-boolify desactiva la optimización boolify. Boolify del Esquema de JavaScript y no son equivalentes: JavaScript considera falsa, 0, null y undefined ser falsa, mientras que el esquema tiene solamente #f. El boolify sin optimizar, por tanto, siempre añade la prueba contra la falsa: si (prueba == false!) ... Si Scheme2Js puede ver, que la prueba en sí es un booleano, puede eliminar lo innecesario == false prueba!. Esta bandera desactiva esta optimización.
ย ท --D ETAPA imprime un archivo de puntos (ver graphviz) de la AST después de la etapa ETAPA. Etapas posibles son: ampliar, árbol, símbolo, nodo-elim1, cola, línea, constante de propagación, sin uso-rm-vars, captura, nodo-elim2, mientras que, (tt "declaraciones"), el nodo-elim3. Por lo general, uno no necesita esta bandera, salvo para propósitos de depuración.
ย ท impresiones --print-locs las localizaciones originales como comentarios en el archivo JavaScript. Estos lugares son actualmente el carácter de compensación desde el principio del archivo

¿Qué hay de nuevo en esta versión:.

  • Menor cambios y correcciones de errores se han portado desde Hop a Scheme2Js.

¿Cuál es nuevo en la versión 20100816:.

  • runtime-reader Scheme2Js 'ahora reconoce palabras clave
  • Varios errores han sido corregidos.

¿Qué hay de nuevo en la versión 20081219:.

  • El compilador ha sido optimizado
  • Ahora es mucho más rápido y consume menos memoria.
  • Muchos errores han sido corregidos.
  • La cláusula de módulo por defecto de Scheme2Js ahora es similar a la de Bigloo.
  • Esta versión es compatible con nombres cualificados.

Programas parecidos

CmdOption
CmdOption

28 Sep 15

nesC
nesC

3 Jun 15

Toka
Toka

3 Jun 15

Comentarios a la Scheme2Js

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!