Scheme2Js

Software kuvakaappaus:
Scheme2Js
Ohjelmiston tiedot:
Versio: 20101114
Lähetyksen päivämäärä: 11 May 15
Kehittäjä: Florian Loitsch
Lupa: Vapaa
Suosio: 106

Rating: 3.5/5 (Total Votes: 2)

Scheme2Js on Scheme Javascript kääntäjä. Vaikka jotkut vaivaa on käytetty on niin lähellä kuin mahdollista R5rs, olemme keskittyneet pääasiassa tehokkuuteen.
Yleensä Scheme2Js tuottaa JavaScript-koodia, joka on verrattavissa käsin kirjoitettu koodi. Jotta saavutetaan tämän suorituskyky, Scheme2Js ei ole täysin R5rs yhteensopiva. Erityisesti puuttuu tuki jatkamiset, tarkkoja lukuja ja se kohtelee häntä rekursion vain osittain.
Scheme2Js tarjoaa useita lippuja, jotka mahdollistavat muuttaa tulos:
ย ท --no-js-dot-merkintä hyväksytä pääsy JavaScript kenttiin piste-merkintä. Tämä lippu poistaa sisäänkäyntien lomakkeen xy kuten document.getElementById. On kuitenkin vielä mahdollista päästä on voimassa lauseke käyttäen js-kenttään toiminto.
ย ท --mutable-merkkijonojen: parantaakseen suorituskykyä merkkijonon-toiminnan ja helpottaa rajapinta Scheme ja JavaScript-koodia, oletuksena täytäntöönpanoa kartat Scheme jousille JavaScript jouset. Vastoin Scheme jouset, JavaScript jouset ovat kuitenkin muuttumaton. Tämä lippu kartat jousille JavaScript luokkaan, joka edustaa Scheme jouset, jotka ovat muuttuva. Tuloksena koodi saattaa olla hieman hitaampaa, ja se on vaikeampi käyttöliittymä JavaScript-koodia.
ย ท --encapsulate-osat kiteyttää ohjelma anonyymi toiminto. Ainoa maailmanlaajuinen muuttujat ulkopuolella nimettömiä toiminnon. Toisaalta tämä tuo yksi toiminto soittaa nimettömän funktion. Mutta toisaalta kaikkein Javascript toteutukset pitäisi ajaa nopeammin optimointi: yleensä hashtables käytetään edustamaan laajuuksia JavaScript. Käyttämällä anonyymi toiminto ohjelmat muuttujat erotetaan omiksi pienempiin Hashtable joka (teoriassa) kiihdyttää sisäänkäyntien näihin muuttujiin. Vielä tärkeämpää muuttujat tallennetaan omissa Hashtable, eikä globaali Hashtable, jonne pääsee globaali muuttuja. Se on erittäin helppo välillisesti muokata sisältöä globaalien muuttujien. Upottamista tai muiden yhteisten optimointeja on siis mahdotonta tehdä globaalien muuttujien. Tallentamalla ohjelman muuttujia nimettömän funktion optimoinnilla tulevat jälleen mahdollista.
ย ท --optimize-var-numero vähentää muuttujia käytetään tuloksena JavaScript-koodia. Koodi voi ajaa nopeammin, mutta on vaikeampi debug, koska muuttujien nimet ovat kadonneet ja sama muuttuja voidaan käyttää useita kertoja.
ย ท --optimize-aikana: tämän lippu Scheme2Js optimoi yhteisiä samalla silmukoita. Optimoimaton kun silmukat ovat usein muotoa:
 while (true) {
   jos (testi)
     resVar = res;
   else {
     modify_loop_variable;
     jatkaa;
   }
   break;
 }
 
Tämä optimointi etsii näitä kuvioita ja liikkuu testin osaksi taas silmukka:
 while (! testi) {
   modify_loop_variable;
 }
 resVar = res;
 
Tämä optimointi on toteutettu vasta äskettäin, joten se ei vielä ole oletusarvoisesti aktivoitu.
ย ท verbose tulostaa joitakin tietoja.
ย ท --no-upottamista poistaa kaikki toiminnon upottamista (vakiot saattaa silti inlined).
ย ท --inline-global avulla Scheme2Js inline maailmanlaajuisia toimintoja ja vakiot. Tämä saattaa olla kaksi ei-toivottuja sivuvaikutuksia: yksi, globaalien muuttujien käytetään usein siirtää dataa eri moduulien. Jotkut inlined toiminnot menetetään, jos ei ole viittausta niihin enää. Jos maailmanlaajuiset toiminnot on tarkoitus käyttää ulkona moduuli, ei pitäisi käyttää tätä lippua. (Tämä toiminta on todennäköisesti muuttumaan tulevissa versioissa Scheme2Js.)
ย ท --unresolved-on-js: jos muuttuja on sitoutumattoman, kääntäjä olettaa muuttuvan tulee toisesta moduuli, tai JavaScript. Katso kappaletta Scheme - Javascript yksityiskohtaisempaa keskustelua JavaScript Scheme käyttöliittymä.
ย ท --js-tämä antaa tämän muuttujan kuluessa Scheme toimintoja. Tällä tavalla, kaavio menettelyjä voidaan käyttää menetelmissä JavaScript-esineitä.
ย ท --no-tailrec poistaa tailrec on taas silmukan optimointi. Jos epäilet vian kääntäjän tapa kääntää hännän työllisyyttä koskevat suositukset, voit kokeilla tätä lippua.
ย ท --no-optimoida-puhelut poistaa Scheme2Js upottamista binary tai unaarista toimintaa. Esimerkiksi sci_plus (3, 5) on optimoitu (3 + 5). Tämä optimointi on varsin tärkeä, ja siellä on yleensä ole syytä poistaa sen.
ย ท --no-optimoida-consts poistaa ennen vakiolaskenta. Ellei käytössä (tämä lippu), yhdiste vakiot esilaskea ja niiden esiintymät korvataan viittauksella muuttuja pitämällä jatkuvasti. Tämä tekee toistuvia sisäänkäyntien näitä vakioita nopeammin, mutta tuo uusia muuttujia.
ย ท --no-optimoida-boolify poistaa boolify optimointia. JavaScript ja järjestelmän boolify eivät ole samanarvoisia: JavaScript katsoo väärä, 0, null ja määrittelemätön vääräksi, kun taas kaavio on vain #F. Optimoimaton boolify siten aina lisää testi vääriltä: jos (testi! == False) ... Jos Scheme2Js voi nähdä, että itse testin on totuusarvo, se voi poistaa tarpeettomat! == Vääriä testi. Tämä lippu poistaa tämän optimointiin.
ย ท --d STAGE tulostaa dot-tiedoston (katso GraphViz) ja AST jälkeen vaiheessa STAGE. Mahdollisia vaiheita ovat: laajentaa, puu, symboli, solmu-elim1, hännän, inline, jatkuva-eteneminen, rm-käyttämättömiä-VARS, capture, solmu-elim2, taas, (tt "lausunnot"), solmu-elim3. Yleensä yksi ei tarvitse tätä lippua, ellei virheenjäljitykseen tarkoituksiin.
ย ท --print-locs tulostaa alkuperäisen paikkoihin kommentit JavaScript-tiedoston. Nämä paikat ovat tällä hetkellä hahmo-siirtymän tiedoston alusta.

Mikä on uusi tässä julkaisussa:

  • Minor muutokset ja bugikorjauksia on tuotavasta Hop ja Scheme2Js.

Mikä on uusi versiossa 20100816:

  • Scheme2Js "runtime-lukija tunnistaa nyt avainsanoja.
  • useita vikoja on korjattu.

Mikä on uusi versiossa 20081219:

  • kääntäjä on optimoitu.
  • Nyt on paljon nopeampi ja kuluttaa vähemmän muistia.
  • Monia bugeja on korjattu.
  • Oletuksena moduuli lauseke Scheme2Js on nyt samanlainen kuin yhden Bigloo.
  • Tämä versio tukee pätevän nimiä.

Vastaavia ohjelmistoja

Zsh
Zsh

17 Feb 15

HGL Suite
HGL Suite

17 Feb 15

Ubucompilator
Ubucompilator

12 May 15

Kommentit Scheme2Js

Kommentteja ei löytynyt
Lisää kommentti
Ota kuvia!