Scheme2Js

Software screenshot:
Scheme2Js
Dettagli del software:
Versione: 20101114
Data di caricamento: 11 May 15
Sviluppatore: Florian Loitsch
Licenza: Libero
Popolarità: 106

Rating: 3.5/5 (Total Votes: 2)

Scheme2Js è uno Schema di compilatore Javascript. Mentre alcuni sforzo è stato speso per essere il più vicino possibile R5RS, abbiamo concentrati principalmente sull'efficienza.
Di solito Scheme2Js produce codice Javascript, che è paragonabile a codice scritto a mano. Al fine di ottenere queste prestazioni, Scheme2Js non è completamente R5RS conforme. In particolare, manca il supporto per continuazioni, numeri esatti e si tratta coda ricorsione solo parzialmente.
Scheme2Js fornisce diverse bandiere, che consentono di modificare il risultato:
ย ท --no-js-dot-notation non consente l'accesso ai campi JavaScript con il punto notazione. Questo flag disabilita accessi del modulo xy come in document.getElementById. È tuttavia ancora possibile accedere è un'espressione valida utilizzando la funzione js campo.
ย ท --mutable-stringhe: al fine di migliorare le prestazioni delle stringhe-operazioni e per facilitare l'interfaccia tra regime e il codice JavaScript, l'implementazione di default stringhe Scheme mappe in stringhe JavaScript. Contrariamente a stringhe Scheme, stringhe JavaScript sono però immutabili. Questo stringhe bandiera mappe per una classe di JavaScript, che rappresenta le stringhe Scheme, che sono mutabili. Il codice risultante potrebbe essere leggermente più lento, ed è più difficile per interfacciarsi con il codice Java.
ย ท --encapsulate-parti incapsula il programma in una funzione anonima. Solo le variabili globali sono al di fuori di questa funzione anonima. Da un lato questo presenta una chiamata di funzione per la funzione anonima. Ma d'altra parte la maggior parte delle implementazioni Javascript deve correre più velocemente con questa ottimizzazione: solitamente hashtables sono utilizzati per rappresentare gli ambiti in JavaScript. Utilizzando una funzione anonima programmi variabili sono separati nella loro hashtable piccola che (in teoria) accelera accessi a queste variabili. Ancora più importante le variabili sono memorizzati nel loro tabella hash, e non nella tabella hash globale, che è accessibile dalla variabile globale. È estremamente facile modificare indirettamente il contenuto delle variabili globali. Inlining o altre ottimizzazioni comuni sono quindi impossibili da fare in variabili globali. Memorizzando le variabili del programma in una funzione anonima queste ottimizzazioni diventano nuovamente possibili.
ย ท --optimize-var-numero riduce il numero di variabili utilizzate nel codice JavaScript risultante. Il codice può funzionare più velocemente, ma è più difficile da correggere, come i nomi di variabili sono persi e la stessa variabile possono essere utilizzati più volte.
ย ท --optimize-while: con questa bandiera Scheme2Js ottimizza comune cicli while. Il non ottimizzata cicli while sono spesso di forma:
 while (true) {
   if (test)
     resVar = res;
   else {
     modify_loop_variable;
     continua;
   }
   break;
 }
 
Questa ottimizzazione cerca questi schemi e sposta il test nel ciclo while:
 while (test!) {
   modify_loop_variable;
 }
 resVar = res;
 
Questa ottimizzazione è stata implementata solo di recente e pertanto non è ancora attivato per impostazione predefinita.
ย ท verbose stampa alcune informazioni.
ย ท --no-inline disabilita tutte le funzionalità inline (costanti potrebbero ancora essere inline).
ย ท --inline global permette Scheme2Js inline funzioni globali e costanti. Ciò potrebbe avere due effetti collaterali indesiderati: per una, le variabili globali sono spesso utilizzati per trasferire i dati tra diversi moduli. Alcune funzioni inline vengono persi se non vi è alcun riferimento a loro più. Se funzioni globali devono essere utilizzati al di fuori di un modulo, non si dovrebbe usare questo flag. (Questo comportamento è destinata a cambiare nelle future versioni di Scheme2Js.)
ย ท --unresolved-è-js: se una variabile è legato, il compilatore assume la variabile proviene da un altro modulo o da JavaScript. Vedere Sezione Scheme - Javascript per una discussione più dettagliata dell'interfaccia Scheme JavaScript.
ย ท --js-questo fornisce il questa variabile all'interno di funzioni Scheme. In questo modo, le procedure del Programma può essere utilizzato come metodi di oggetti JavaScript.
ย ท --no-tailrec disattiva il tailrec a ciclo while ottimizzazione. Se si sospetta un bug nel modo in cui il compilatore di tradurre coda RECS, si potrebbe provare questo flag.
ย ท --no-ottimizzare-chiamate disabilita Scheme2Js inline di operazioni binarie o unarie. Per esempio sci_plus (3, 5) è ottimizzato per (3 + 5). Questa ottimizzazione è molto importante, e di solito c'è alcun motivo di disattivarlo.
ย ท --no-ottimizzare-const disabilita i calcoli pre-costante. A meno che non disabile (con questo flag), costanti composti sono precalcolate e loro occorrenze sostituiti da un riferimento a una variabile che tiene la costante. Questo rende ripetuto accede a queste costanti più veloce, ma introduce nuove variabili.
ย ท --no-ottimizzare-boolify disabilita l'ottimizzazione boolify. Boolify di Schema di JavaScript e non sono equivalenti: JavaScript considera falso, 0, null e undefined false, mentre il regime ha solo #f. Il boolify non ottimizzata quindi aggiunge sempre il test contro la falsa: se (test == false!) ... Se Scheme2Js può vedere, che il test è di per sé un valore booleano, può rimuovere l'inutile == false prova!. Questo flag disabilita questa ottimizzazione.
ย ท --d STAGE stampa un file di punti (vedi graphviz) della AST dopo la tappa STAGE. Tappe possibili sono: expand, albero, simbolo, il nodo-elim1, coda, inline, costante di propagazione, rm-inutilizzato-vars, la cattura, il nodo-elim2, mentre, (tt "dichiarazioni"), il nodo-elim3. Di solito non c'è bisogno questa bandiera, a meno a scopo di debug.
ย ท stampe --print-LOC le posizioni originali come i commenti al file JavaScript. Queste posizioni sono attualmente il personaggio-offset dall'inizio del file

Cosa c'è di nuovo in questa versione:.

  • Minor modifiche e correzioni di bug sono stati portati da Hop a Scheme2Js.

Cosa c'è di nuovo nella versione 20100816:.

  • runtime-reader Scheme2Js 'riconosce ora le parole chiave
  • numerosi bug sono stati corretti.

Cosa c'è di nuovo nella versione 20081219:.

  • Il compilatore è stato ottimizzato
  • Ora è molto più veloce e consuma meno memoria.
  • Molti bug sono stati corretti.
  • La clausola di default del modulo di Scheme2Js è ora simile a quella di Bigloo.
  • Questa versione supporta nomi qualificati.

Programmi simili

KBasic
KBasic

2 Jun 15

GNU Automake
GNU Automake

22 Jun 18

Scala
Scala

17 Feb 15

Commenti a Scheme2Js

I commenti non trovato
Aggiungi commento
Accendere le immagini!