Scheme2Js

Скріншот програми:
Scheme2Js
Дані програми:
Версія: 20101114
Дата завантаження: 11 May 15
Розробник: Florian Loitsch
Ліцензія: Безкоштовно
Популярність: 6

Rating: nan/5 (Total Votes: 0)

Scheme2Js є схема з компілятором Javascript. У той час як деякі зусилля були витрачені на те, як можна ближче до R5rs, ми зосереджені в основному на ефективності.
Зазвичай Scheme2Js виробляє Javascript код, що можна порівняти з ручною написана код. Для досягнення цієї продуктивності, Scheme2Js не вповні відповідає R5rs. Зокрема, не вистачає підтримки для продовження, точних цифр і лікує хвостову рекурсію тільки частково.
Scheme2Js забезпечує кілька прапорів, які дозволяють змінити результат:
ย ท --no-JS-точка-позначення забороняє доступ до полів JavaScript з точковою нотації. Цей прапор відключає доступи виду ху, як і в document.getElementById. Це, однак, як і раніше можна отримати доступ до це допустиме вираз за допомогою функції JS-поле.
ย ท --mutable-струни: для того, щоб поліпшити продуктивність строкових операцій і полегшити взаємодію між схемою і код JavaScript, реалізації схему за замовчуванням карти рядків у рядків JavaScript в. Всупереч схемою рядків, рядки JavaScript, однак незмінними. Цей прапор карти струни до класу JavaScript, який представляє Схема рядків, які змінювані. Отриманий код може бути трохи повільніше, і це більш важким для взаємодії з Javascript коду.
ย ท --encapsulate-частини инкапсулирует програму в анонімній функції. Тільки глобальні змінні знаходяться за межами цієї анонімної функції. З одного боку, це вводить один виклик функції анонімної функції. Але, з іншого боку, більшість реалізацій Javascript повинен працювати швидше з цієї оптимізації: як правило, хеш-таблиці використовуються для представлення областей в JavaScript. При використанні анонімної функції програми змінні розділяються в їх власній меншою хеш-таблицю, яка (в теорії) прискорює доступ до цих змінним. Що ще більш важливо змінні зберігаються у власній хеш-таблиці, а не в глобальній хеш-таблиці, яка доступна в глобальній змінній. Це дуже легко побічно змінювати вміст глобальних змінних. Вбудовування або інші загальні оптимізацій, отже, неможливо зробити на глобальних змінних. За зберігання змінних програми в анонімній функції ці оптимізації знову стати можливим.
ย ท --optimize-VAR-номер зменшує кількість змінних, використовуваних в результаті JavaScript коду. Код може працювати швидше, але складніше для налагодження, а імена змінних губляться і та ж змінна може бути використана кілька разів.
ย ท --optimize час: з цим прапором Scheme2Js оптимізує загальне в той час як петлі. Неоптимізованих а петлі часто у вигляді:
 в той час як (правда) {
   якщо (тест)
     resVar = ВДЕ;
   ще {
     modify_loop_variable;
     продовжувати;
   }
   перерва;
 }
 
Ця оптимізація шукає ці візерунки і переміщує тест в той час як цикл:
 в той час як (тест!) {
   modify_loop_variable;
 }
 resVar = ВДЕ;
 
Ця оптимізація реалізована лише недавно, і тому ще не активована за замовчуванням.
ย ท --verbose виводить деяку інформацію.
ย ท --no-вбудовування відключає всі функції вбудовування (постійні, можливо, досі бути вбудований).
ย ท --inline-глобальні дозволяє Scheme2Js вбудовані глобальні функції і константи. Це може мати два небажаних побічних ефектів: для одного, глобальні змінні часто використовуються для передачі даних між різними модулями. Деякі вбудовані функції губляться, якщо немає посилання на них більше. Якщо глобальні функції, які будуть використовуватися за межами модуля, не слід використовувати цей прапор. (Це поведінка може змінитися в майбутніх версіях Scheme2Js.)
ย ท --unresolved-це-JS: якщо змінна непов'язаних, компілятор припустить, змінна приходить з іншого модуля, або з JavaScript. Див схему розділ - Javascript для більш детального обговорення схеми інтерфейсу JavaScript.
ย ท --js-це забезпечує цю змінну всередині функції Scheme. Таким чином, процедура схема може бути використана в якості методів об'єктів JavaScript.
ย ท --no-tailrec відключає tailrec до той час як петлі-оптимізації. Якщо ви підозрюєте, що помилка в дорозі компілятора перекладу хвіст РЕЗ, ви можете спробувати цей прапор.
ย ท --no-Оптимізація-дзвінки відключає Scheme2Js вбудовування подвійних або одинарних операцій. Наприклад sci_plus (3, 5) оптимізована для (3 + 5). Ця оптимізація є дуже важливим, і немає, як правило, немає причин, щоб відключити його.
ย ท --no-оптимізації, consts відключає попередньо постійний розрахунок. Якщо відключений (з цим прапором), складові константи обчислюються попередньо і їх входження замінюються посиланням на змінної, що містить константу. Це робить повторне доступ на ці константи швидше, але вводить нові змінні.
ย ท --no-оптимізації, boolify відключає boolify оптимізації. JavaScript і boolify Scheme не є еквівалентними: JavaScript вважає помилковими, 0, NULL і визначено бути хибним, тоді як схема має тільки #F. Неоптимізованих boolify тому завжди додає тест проти помилковою: якщо (== тест брехня!) ... Якщо Scheme2Js бачите, що саме по собі випробування логічне, вона може видалити непотрібні == помилкове випробування !. Цей прапор відключає цю оптимізацію.
ย ท --d ЕТАП друкує точка-файл (див GraphViz) в AST після стадії ЕТАПІ. Можливі етапи: розширити, дерево, символ, вузол-elim1, хвіст, Inline, постійне поширення, -RM-невикористаний-Вар, захоплення, вузол-elim2, в той час як (ТТ "заяви"), вузол-elim3. Зазвичай один не потрібен цей прапор, якщо для налагодження.
ย ท --print-LOCs друкує оригінальні місцях, як коментарях до файлу JavaScript. Ці місця є в даний час характер зміщення від початку файлу

Що нового У цьому випуску :.

  • Мала зміни та виправлення були перенесені з-хоп в Scheme2Js.

Що нового у версії 20100816 :.

  • виконання рідер Scheme2Js "в даний час визнає ключові слова
  • Кілька помилок було виправлено.

Що нового у версії 20081219 :.

  • компілятор був оптимізований
  • Це набагато швидше і споживає менше пам'яті.
  • Багато помилки були виправлені.
  • п модуль за замовчуванням Scheme2Js тепер схожий на одного з Bigloo.
  • Цей реліз підтримує певні імена.

Схожі програми

X11-Basic
X11-Basic

20 Feb 15

bc
bc

3 Jun 15

HGL Suite
HGL Suite

17 Feb 15

Scheme2Js

Коментар не знайдено
додати коментар
Включіть картинки!
Пошук за категоріями