Scheme2Js

Logiciel capture d'écran:
Scheme2Js
Détails logiciels:
Version: 20101114
Date de transfert: 11 May 15
Développeur: Florian Loitsch
Licence: Gratuit
Popularité: 6

Rating: nan/5 (Total Votes: 0)

Scheme2Js est un schéma de compilateur Javascript. Bien que des efforts ont été consacrés à être aussi proche que possible de r5rs, nous nous sommes concentrés principalement sur l'efficacité.
Habituellement Scheme2Js produit du code Javascript, qui est comparable à un code écrit à la main. Afin d'atteindre cette performance, Scheme2Js est pas complètement r5rs conforme. En particulier, il manque de soutien pour les continuations, les chiffres exacts et il traite la récursivité que partiellement.
Scheme2Js fournit plusieurs drapeaux, qui permettent de modifier le résultat:
ย ท --no-js-dot-notation interdit l'accès aux champs de JavaScript avec la notation pointée. Ce drapeau désactive abords de la forme xy comme dans document.getElementById. Il est cependant toujours possible d'accéder à la est une expression valide en utilisant la fonction js-champ.
ย ท --mutable-cordes: afin d'améliorer la performance des cordes-opérations et de faciliter l'interface entre le schéma et le code JavaScript, l'implémentation par défaut Scheme cartes cordes à cordes JavaScript. Contrairement à cordes Scheme, chaînes JavaScript sont cependant immuable. Cette cadastraux drapeau cordes à une classe JavaScript, qui représente des chaînes Scheme, qui sont immuables. Le code résultant peut-être un peu plus lent, et il est plus difficile pour interfacer avec le code Javascript.
ย ท --encapsulate-pièces encapsule le programme dans une fonction anonyme. Seules les variables globales sont en dehors de cette fonction anonyme. D'une part, cela introduit un appel de fonction à la fonction anonyme. Mais d'autre part la plupart des implémentations Javascript doit courir plus vite avec cette optimisation: habituellement hashtables sont utilisés pour représenter les étendues en JavaScript. En utilisant une fonction anonyme les programmes variables sont séparés dans leur propre table de hachage plus petite qui (en théorie) accélère les accès à ces variables. Plus important encore, les variables sont stockées dans leur propre table de hachage, et pas dans la table de hachage global, qui est accessible par la variable globale. Il est extrêmement facile de modifier indirectement le contenu de variables globales. Inlining ou d'autres optimisations communes sont donc impossible de faire des variables globales. En stockant les variables du programme dans une fonction anonyme ces optimisations deviennent à nouveau possible.
ย ท --optimize-nombre-var réduit le nombre de variables utilisées dans le code JavaScript résultant. Le code peut courir plus vite, mais il est plus difficile à déboguer, que les noms de variables sont perdus et la même variable peuvent être utilisés plusieurs fois.
ย ท --optimize-tout: avec ce drapeau Scheme2Js optimise commun tout en boucles. Le non optimisée tout en boucles sont souvent de la forme:
 while (true) {
   if (test)
     resVar = res;
   else {
     modify_loop_variable;
     continuer;
   }
   break;
 }
 
Cette optimisation recherche ces modèles et déplace le test dans la boucle while:
 tout (test!) {
   modify_loop_variable;
 }
 resVar = res;
 
Cette optimisation a été mis en place que récemment et est donc pas encore activé par défaut.
ย ท --verbose imprime quelques informations.
ย ท --no-inline désactive toutes les fonctions inline (constantes pourraient encore être inline).
ย ท --inline-globales permet Scheme2Js inline fonctions et constantes globales. Cela pourrait avoir deux effets secondaires indésirables: pour l'un, les variables globales sont souvent utilisés pour transférer des données entre les différents modules. Certaines fonctions inlined sont perdues si il n'y a aucune référence à eux plus. Si les fonctions globales doivent être utilisés en dehors d'un module, il ne faut pas utiliser ce drapeau. (Ce comportement est susceptible de changer dans les futures versions de Scheme2Js.)
ย ท --unresolved-est-js: si une variable est non lié, le compilateur va assumer la variable vient d'un autre module, ou à partir de JavaScript. Voir la section Scheme - Javascript pour une discussion plus détaillée de l'interface Scheme JavaScript.
ย ท --js-ce l'offre de cette variable dans les fonctions Scheme. De cette façon, les procédures schéma peut être utilisé en tant que méthodes d'objets JavaScript.
ย ท --no-tailrec désactive le tailrec à l'optimisation boucle while. Si vous soupçonnez un bogue dans la façon de traduire queue recs du compilateur, vous pouvez essayer ce drapeau.
ย ท --no-optimiser-ses appels désactive Scheme2Js inlining des opérations binaires ou unaires. Par exemple sci_plus (3, 5) est optimisée à (3 + 5). Cette optimisation est très important, et il n'y a généralement pas de raison de le désactiver.
ย ท --no-optimiser-consts désactive le calcul pré-constante. Sauf handicapés (avec ce drapeau), les constantes de composés sont précalculées et leurs occurrences remplacées par une référence à une variable contenant la constante. Cela rend répété accède à ces constantes plus rapide, mais elle introduit de nouvelles variables.
ย ท --no-optimiser-boolify désactive l'optimisation boolify. Ne sont pas équivalentes de boolify de schéma de JavaScript et: JavaScript estime faux, 0, null et undefined être faux, alors que le schéma a seulement #f. Le boolify unoptimized ajoute donc toujours l'épreuve contre la fausse: si (test == false!) ... Si Scheme2Js peut voir, que le test lui-même est un booléen, il peut supprimer l'inutile == false essai!. Ce drapeau désactiver cette optimisation.
ย ท --d STAGE imprime un point-fichier (voir graphviz) de l'AST après l'étape de la scène. Étapes possibles sont: élargir, arbre, symbole, noeud-elim1, queue, inline, constante propagation, RM-utilisé-vars, capture, noeud-elim2, tandis que, (tt "déclarations"), noeud-elim3. Habituellement, on n'a pas besoin de ce drapeau, sauf pour des fins de débogage.
ย ท gravures --print-locs les emplacements originaux que les commentaires dans le fichier JavaScript. Ces endroits sont actuellement le caractère décalage depuis le début du fichier

Ce qui est nouveau dans cette version:.

  • Mineure des changements et des corrections de bugs ont été portés de Hop à Scheme2Js.

Quoi de neuf dans la version 20100816:.

  • runtime-lecteur de Scheme2Js reconnaît maintenant les mots clés
  • Plusieurs bugs ont été corrigés.

Ce qui est nouveau dans la version 20081219:.

  • Le compilateur a été optimisée
  • Il est maintenant beaucoup plus rapide et consomme moins de mémoire.
  • De nombreux bugs ont été corrigés.
  • La clause par défaut du module de Scheme2Js est maintenant semblable à celui de Bigloo.
  • Cette version prend en charge les noms qualifiés.

Logiciel similaire

CURSEL
CURSEL

3 Jun 15

purepy
purepy

14 Apr 15

Seed7
Seed7

22 Jun 18

ooc
ooc

3 Jun 15

Commentaires à Scheme2Js

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!