Scheme2Js

Софтуер снимки:
Scheme2Js
Софтуер детайли:
Версия: 20101114
Дата на качване: 11 May 15
Розробник: Florian Loitsch
Разрешително: Безплатно
Популярност: 106

Rating: 3.5/5 (Total Votes: 2)

Scheme2Js е схема на Javascript компилатор. Докато някои усилия са били изразходвани за да бъде възможно най-близо до R5rs, ние се концентрира главно върху ефективността.
Обикновено Scheme2Js произвежда Javascript код, който е сравним с ръчно написан код. За да се постигне този спектакъл, Scheme2Js не е напълно R5rs съвместими. По-специално той не притежава поддръжка за удължавания, точните цифри и да го третира опашката рекурсия само частично.
Scheme2Js осигурява няколко знамена, които позволяват да се променят в резултат на:
ย ท --no-JS-дот-нотация забранява достъпа до полета джава с дот-нотация. Този флаг се забранява достъпи на форма XY подобни в document.getElementById. Все още обаче е все още е възможно да получите достъп до е валиден израз, използвайки функцията за JS-област.
ย ท --mutable-Strings: с цел да се подобри ефективността на String-операции и да се улесни взаимодействието между схемата и JavaScript код, за изпълнение подразбиране Схемата карти струните на JavaScript струни на. Противно на Схемата за низове, JavaScript струни обаче са неизменни. Този флаг карти струни до клас на JavaScript, който представлява схема за струнни, които са непостоянен. Полученият код може да е малко по-бавно, и е по-трудно да се намесвам с Javascript код.
ย ท --encapsulate-части капсулира програмата в анонимна функция. Само глобални променливи са извън тази анонимна функция. От една страна това се въвежда една функция обаждане до анонимната функция. Но от друга страна повечето реализации Javascript трябва да работят по-бързо с тази оптимизация: обикновено hashtables се използват за представяне сфери в JavaScript. С помощта на анонимен функция програмите променливи са разделени на техните собствени малък Hashtable което (на теория) ускорява достъп до тези променливи. По-важното е променливите се съхраняват в тяхната собствена Hashtable, а не в глобалната HashTable, която е достъпна чрез глобалната променлива. Той е изключително лесен за непряко променя съдържанието на глобални променливи. Вграждането или други общи оптимизации са следователно невъзможно да се направи на глобални променливи. Чрез съхраняване на променливи на програмата в анонимна функция тези оптимизации станат отново възможни.
ย ท --optimize-Var-брой намалява броя на променливите, използвани в JavaScript кода резултат. Кодът може да работи по-бързо, но е по-трудно за отстраняване на грешки, като имената на променливите са изгубени и съща променлива може да се използва няколко пъти.
ย ท --optimize-а: с тази Scheme2Js флаг оптимизира общи докато примки. The неоптимизирани докато линии често са на формата:
 докато (вярно) {
   ако (тест)
     resVar = ВЕИ;
   останало {
     modify_loop_variable;
     продължи;
   }
   прекъсване;
 }
 
Тази оптимизация изглежда за тези модели и се движи на теста в примката, докато:
 докато (тест!) {
   modify_loop_variable;
 }
 resVar = ВЕИ;
 
Тази оптимизация е изпълнена едва наскоро и затова все още не е активирана по подразбиране.
ย ท --verbose отпечатва някаква информация.
ย ท --no-операции успях забранява всички функции операции успях (константи може би все още се inlined).
ย ท --inline-глобални позволява Scheme2Js редово глобални функции и константи. Това може да има две нежелани странични ефекти: за една, глобални променливи често се използват за прехвърляне на данни между различни модули. Някои inlined функции са загубени, ако няма позоваване на тях вече. Ако глобалните функции трябва да бъдат използвани извън модул, човек не трябва да използвате този флаг. (Това поведение е вероятно да се промени в бъдещите версии на Scheme2Js.)
ย ท --unresolved-е-JS: ако дадена променлива е неконсолидиран, компилаторът ще поеме променливата идва от друг модул, или от JavaScript. Виж Схема раздел - Javascript, за по-подробно обсъждане на интерфейса на Схема JavaScript.
ย ท --js-това осигурява на тази променлива в рамките на схемата функции. По този начин, процедури схема може да се използват като методи за JavaScript обекти.
ย ท --no-tailrec деактивира tailrec да докато цикъл оптимизация. Ако подозирате, че бъг в начин на превода Стоп зап компилатора, можете да опитате този флаг.
ย ท --no-оптимизиране обаждания забранява Scheme2Js операции успях на двукомпонентни или унарен операции. Например sci_plus (3, 5) е оптимизирана за (3 + 5). Тази оптимизация е доста важно, и обикновено има никаква причина да го изключите.
ย ท --no-оптимизиране-consts деактивира предварително постоянна изчислението. Освен ако не е забранен (с този флаг), комбинирани константи са предварително изчислени и техните появявания заменят с позоваване на променлива държи постоянна. Това прави повтаряща се осъществява достъп до тези константи по-бързо, но въвежда нови променливи.
ย ท --no-оптимизиране-boolify деактивира boolify оптимизацията. JavaScript и boolify схема не са еквивалентни: JavaScript счита невярна, 0, нищожна и неопределено, че са фалшиви, като има предвид схема има #f само. Следователно неоптимизирани boolify винаги добавя теста срещу фалшив: ако (тест == фалшиво!) ... Ако Scheme2Js да видите, че самият тест е булева, тя може да се премахне ненужната == фалшива тест!. Този флаг се забранява тази оптимизация.
ย ท --d STAGE отпечатва дот-файл (вж graphviz) на AST, след етап етап. Възможни етапи са: разширяване, дърво, символ, възел-elim1, опашката, инлайн, постоянно размножаване, RM-неизползвана-Vars, улавяне, възел-elim2, а, (TT "декларации"), възел-elim3. Обикновено не е нужно този флаг, освен за целите на отстраняване на грешки.
ย ท --print-locs отпечатъци оригиналните места като коментар до файла JavaScript. Тези места в момента са на героя-отместване от началото на файла

Какво ново в тази версия:.

  • Мала промени и поправки са били пренесени от Hop да Scheme2Js.

Какво ново във версия 20100816:.

  • Runtime-четец Scheme2Js "вече разпознава ключовите думи
  • Няколко бяха отстранени.

Какво ново във версия 20081219:.

  • Компилаторът е оптимизиран
  • Тя сега е много по-бързо и консумира по-малко памет.
  • Много бъгове са фиксирани.
  • Клаузата за модул подразбиране Scheme2Js сега е подобен на този на Bigloo.
  • Тази версия поддържа квалифицирани имена.

Подобен софтуер

Коментари към Scheme2Js

Коментари не е намерена
добавите коментар
Включете на изображения!