Scheme2Js

Screenshot Software:
Scheme2Js
Mga detalye ng Software:
Bersyon: 20101114
I-upload ang petsa: 11 May 15
Nag-develop: Florian Loitsch
Lisensya: Libre
Katanyagan: 6

Rating: nan/5 (Total Votes: 0)

Scheme2Js ay isang Scheme sa compiler Javascript. Habang ang ilang mga pagsisikap ay ginugugol sa pagiging bilang malapit hangga't maaari sa R5rs, kami puro higit sa lahat sa kahusayan.
Karaniwan Scheme2Js gumagawa Javascript code, na maihahambing sa kamay-nakasulat na code. Upang makamit ang pagganap na ito, Scheme2Js ay hindi ganap na R5rs sang-ayon. Sa partikular ito kawalan ng suporta para continuations, eksaktong numero at ito treats buntot recursion lamang bahagyang.
Scheme2Js nagbibigay ng ilang mga flags, na magbibigay-daan upang baguhin ang mga resulta:
ย ท --no-js-dot-notation Pinipigilan access sa mga patlang ng JavaScript sa mga dot-notasyon. Flag na ito ay hindi pagaganahin accesses ng form xy tulad sa document.getElementById. Gayunpaman ito ay posible pa rin na ma-access ang ay isang wastong expression gamit ang function js-field.
ย ท --mutable-string: upang mapabuti ang pagganap ng string-operasyon at sa luwag ang interface sa pagitan ng Scheme at JavaScript code, ang default na pagpapatupad ng mga mapa Scheme string sa string JavaScript. Taliwas sa Scheme string, string JavaScript subalit hindi nababago. Ito bandila maps string sa isang JavaScript na klase, na kumakatawan Scheme string, na maaaring mabago. Ito ay maaaring maging bahagyang mas mabagal ang resultang code, at ito ay mas mahirap na interface sa Javascript code.
ย ท --encapsulate-bahagi ay nakabuod sa programa na ito sa isang anonymous na function. Tanging mga global variable ay nasa labas ng anonymous na function na ito. Sa isang dako ito introduces isang function tawag sa function anonymous. Ngunit sa kabilang banda ay dapat na magpatakbo ng mas mabilis sa pamamagitan ng pagsusulit na ito ang karamihan ng pagpapatupad Javascript: karaniwang hashtables ay ginagamit upang kumatawan scopes sa JavaScript. Sa pamamagitan ng paggamit ng isang anonymous na function sa mga programa variable ay pinaghihiwalay sa kanilang sariling mga mas maliit na hashtable saan (sa teorya) accelerates access sa mga variable. Higit sa lahat ng mga variable ay naka-imbak sa kanilang sariling hashtable, at hindi sa pandaigdigang hashtable, na kung saan ay mapupuntahan sa pamamagitan ng mga global variable. Ito ay lubhang madaling tuwiran baguhin ang mga nilalaman ng mga global variable. Inlining o iba pang karaniwang mga pagsusulit ay samakatuwid imposibleng gawin sa global variable. Sa pamamagitan ng pagtatago variable ng program sa isang anonymous na function ng mga optimizations maging muli posible.
ย ท --optimize-var-number binabawasan ang bilang ng mga variable na ginagamit sa mga resultang JavaScript code. Maaaring mas mabilis na tumakbo ang code, ngunit ito ay mas mahirap i-debug, bilang mga pangalan ng variable ay nawala at ang parehong variable ay maaaring gamitin ng ilang beses.
ย ท --optimize-habang: may napakinabangan karaniwang this bandila Scheme2Js habang loop. Ang unoptimized habang loops ay madalas ng form:
 habang (true) {
   kung (test)
     resVar = res;
   iba {
     modify_loop_variable;
     magpatuloy;
   }
   break;
 }
 
Mukhang optimization na ito para sa mga pattern at inililipat ang mga pagsubok sa habang loop:
 habang (! test) {
   modify_loop_variable;
 }
 resVar = res;
 
Optimization na ito ay ipinatupad lamang kamakailan at samakatuwid ay hindi pa aktibo sa pamamagitan ng default.
ย ท --verbose kopya ng ilang impormasyon.
ย ท --no-inlining hindi pagaganahin ang lahat ng mga function inlining (constants ay maaaring pa rin inlined).
ย ท --inline-globals hinahayaan Scheme2Js inline global function at constants. Ito ay maaaring magkaroon ng dalawang mga hindi ginustong mga side-epekto: para sa isa, global variable ay madalas na ginagamit upang maglipat ng data sa pagitan ng iba't-ibang mga modules. Ang ilang mga inlined function ay mawawala kung walang reference sa mga ito anymore. Kung global function ay dapat na ginagamit sa labas ng isang module, ang isa ay hindi dapat gamitin ang flag na ito. (Pag-uugali na ito ay malamang na magbago sa hinaharap na bersyon ng Scheme2Js.)
ย ท --unresolved-is-js: kung ang isang variable ay hindi nakatali, ang tagatala ay ipalagay ang variable ay dumating mula sa ibang module, o mula sa JavaScript. Tingnan ang Seksyon Scheme - Javascript para sa isang mas detalyadong talakayan ng interface JavaScript Scheme.
ย ท --js-ito ay nagbibigay ng mga variable na ito sa loob ng Scheme function. Sa ganitong paraan, pamamaraan Scheme ay maaaring gamitin bilang pamamaraan ng mga bagay JavaScript.
ย ท --no-tailrec hindi pinapagana ang tailrec sa habang-loop optimization. Kung sa palagay mo ang isang bug sa paraan na ang mga tagatala ng pagsasalin buntot-recs, maaari mong subukan ang flag na ito.
Hindi pinapagana ย ท --no-optimize-tawag Scheme2Js inlining ng binary o unary operasyon. Halimbawa sci_plus (3, 5) ay optimized na (3 + 5). Optimization na ito ay lubos na mahalaga, at may karaniwang walang dahilan upang huwag paganahin ito.
ย ท --no-optimize-consts hindi pinapagana ang mga pre-pare-pareho ang pagkalkula. Maliban na lamang kung may kapansanan (na may bandila na ito), tambalan constants ay precalculated at ang kanilang mga Bahagi pinalitan ng isang reference sa isang variable ng pagpindot sa tapat. Ito ay gumagawa ng mga paulit-ulit access sa mga constants mas mabilis, ngunit introduces bagong variable.
ย ท --no-optimize-boolify hindi pinapagana ang boolify optimization. Boolify Scheme ni JavaScript at ay hindi katumbas ng: Isinasaalang-alang ng JavaScript false, 0, pawalang-naipalilawanag na hindi totoo, samantalang Scheme lamang ay may #f. Ang unoptimized boolify kaya laging nagdadagdag ng pagsubok laban sa maling: kung (test == false!) ... Kung maaaring makita Scheme2Js, na ang mga pagsubok mismo ay isang boolean, ito ay maaaring tanggalin ang mga hindi kailangan == false test!. Flag na ito ay hindi pagaganahin optimization na ito.
ย ท --d STAGE kopya ng isang tuldok-file (tingnan graphviz) ng AST matapos stage STAGE. Posibleng yugto ay: palawakin, puno, simbolo, node-elim1, buntot, inline, nagbabagong-pagpapalaganap, rm-hindi nagamit na-vars, makunan, node-elim2, habang, (tt "pahayag"), node-elim3. Kadalasan ang isa ay hindi kailangan ang flag na ito, maliban na lamang para sa mga layuning debugging.
ย ท --print-locs kopya ng orihinal na mga lokasyon bilang komento sa JavaScript file. Ang mga lokasyon ay kasalukuyang ang character-offset mula sa simula ng file

Ano ang bago sa release na ito.

  • Minor pagbabago at bugfixes ay ported mula Hop sa Scheme2Js.

Ano ang bago sa bersyon 20100816.:

  • Kinikilala na ngayon runtime-reader Scheme2Js 'mga keyword
  • Maraming mga bug ay naayos na.

Ano ang bago sa bersyon 20081219.:

  • Ang tagatala ay na-optimize
  • Ito ngayon ay mas mabilis at consumes mas mababa memory.
  • Maraming mga bug ay naayos na.
  • Ang default na module sugnay ng Scheme2Js ay katulad ng isa sa Bigloo ngayon.
  • sumusuporta sa release na ito ay qualified na pangalan.

Katulad na software

Flexc++
Flexc++

14 Apr 15

Flapjax
Flapjax

3 Jun 15

Mga komento sa Scheme2Js

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!