Scheme2Js

Screenshot Software:
Scheme2Js
Szczegóły programowe:
Wersja: 20101114
Filmu: 11 May 15
Wywoływacz: Florian Loitsch
Licencja: Wolny
Popularność: 6

Rating: nan/5 (Total Votes: 0)

Program Scheme2Js jest do kompilatora Javascript. Podczas gdy niektóre wysiłku poświęcono na bycie jak najbliżej do R5rs, skupiliśmy się głównie na wydajności.
Zazwyczaj Scheme2Js tworzy kod JavaScript, który jest porównywalny z ręcznie napisany kod. W celu uzyskania takiego działania, Scheme2Js nie jest całkowicie R5rs zgodny. W szczególności brakuje wsparcia dla kontynuacje, dokładnych liczb i traktuje ogon rekurencji tylko częściowo.
Scheme2Js zapewnia kilka flag, które pozwalają modyfikować wynik:
ย ท --no-js-dot-zapis uniemożliwia dostęp do pól JavaScript z dot-notacji. Flaga ta dostępy z xy postaci jak w document.getElementById. Jest to jednak nadal możliwe, aby uzyskać dostęp jest poprawne wyrażenie za pomocą funkcji js-field.
ย ท --mutable-strings: w celu poprawy wydajności i operacjach smyczkowych aby ułatwić interfejs pomiędzy systemem i kodu JavaScript, Domyślna implementacja Systemu mapy do struny struny JavaScript. W przeciwieństwie do strun Programu, struny są jednak niezmienne JavaScript. Ta flaga mapy struny do klasy JavaScript, który reprezentuje ciągi programu, które są zmienne. Otrzymany kod może być nieco wolniejsze, a to jest trudniejsze do współpracy z kodu JavaScript.
ย ท --encapsulate-części oddaje program do anonimowej funkcji. Tylko zmienne globalne są poza tym anonimowej funkcji. Z jednej strony wprowadza jedno wywołanie funkcji do funkcji anonimowej. Ale z drugiej strony większość implementacji Javascript biegł szybciej z tym optymalizacja: zwykle hashtables są używane do reprezentowania zakresów w JavaScript. Przy użyciu funkcji anonimowej programów zmienne są podzielone na własnej mniejszej hashtable, które (w teorii) przyspiesza dostęp do tych zmiennych. Ważniejsze zmienne są zapisywane w swoim hashtable, a nie w globalnym hashtable, która jest dostępna przez zmienną globalnej. Jest niezwykle łatwy w pośrednio modyfikować zawartość zmiennych globalnych. Inline lub innych wspólnych optymalizacje są więc niemożliwe do zrobienia na zmiennych globalnych. Poprzez przechowywanie zmiennych programu w funkcji anonimowej te optymalizacje stać ponownie możliwe.
ย ท --optimize-var-liczba zmniejsza liczbę zmiennych wykorzystywanych w wynikowym kodzie JavaScript. Kod może działać szybciej, ale trudniej jest debugowania, jak nazwy zmiennych są utracone i same zmienne mogą być wykorzystywane wielokrotnie.
ย ท --optimize, gdy: Ta flaga Scheme2Js optymalizuje wspólne while. Unoptimized gdy pętle są często w postaci:
 while (true) {
   if (test)
     resVar = res;
   else {
     modify_loop_variable;
     nadal;
   }
   break;
 }
 
Optymalizacja szuka tych wzorców i porusza test do pętli while:
 natomiast (test!) {
   modify_loop_variable;
 }
 resVar = res;
 
Optymalizacja ta została wdrożona dopiero niedawno, a zatem nie jest jeszcze włączona domyślnie.
ย ท --verbose drukuje informacje.
ย ท --no-inline inline funkcji wyłącza wszystkie (stałe mogą być nadal inline).
ย ท --inline-globals pozwala Scheme2Js wbudowanych funkcji i stałych globalnych. Może to mieć dwa niepożądane skutki uboczne: na przykład, zmienne są często wykorzystywane do przesyłania danych między różnymi modułami. Niektóre funkcje inline są tracone, jeśli nie ma już odniesienia do nich. Jeśli funkcje globalne są do stosowania na zewnątrz modułu, nie należy korzystać z tej flagi. (Takie zachowanie może się zmienić w przyszłych wersjach Scheme2Js.)
ย ท --unresolved-to-js: jeśli zmienna jest niezwiązany, kompilator przyjmie zmienna pochodzi z innego modułu lub z JavaScript. Patrz Schemat Sekcji - Javascript bardziej szczegółowe omówienie interfejsu schemacie JavaScript.
ย ท --js-ta zapewnia tę zmienną wewnątrz funkcji systemu. W ten sposób, procedury programu można stosować jako metody obiektów JavaScript.
ย ท --no-tailrec wyłącza tailrec do optymalizacji pętli while. Jeśli podejrzewasz, że błąd w sposób kompilator za tłumaczenia ogon regionalnych wspólnot gospodarczych, możesz spróbować tej flagi.
ย ท --no-Optymalizacja-rozmowy wyłącza Scheme2Js inline operacji binarnych lub jednoargumentowych. Na przykład sci_plus (3, 5), jest zoptymalizowana pod kątem (3 + 5). Optymalizacja ta jest bardzo ważne, i to zwykle nie ma powodu, aby ją wyłączyć.
ย ท --no-optymalizacji-consts wyłącza wcześniej stały obliczenia. Chyba niepełnosprawnych (z tej flagi), złożone są obliczane wstępnie stałe i ich wystąpienia zastąpione odniesieniem do zmiennej trzyma stałą. To sprawia, że ​​dostęp do tych powtórzył stałych szybciej, ale wprowadza nowe zmienne.
ย ท --no-optymalizacji-boolify wyłącza boolify optymalizacji. JavaScript i boolify schemacie nie są równoważne: JavaScript jest zdania fałszywe, 0, wartości null i undefined się fałszywe, natomiast Program ma #f tylko. Dlatego unoptimized boolify zawsze dodaje test przed fałszywym: jeśli (test == false!) ... Jeśli Scheme2Js widać, że sam test jest logiczna, może usunąć niepotrzebne == test fałszywych!. Ta flaga wyłącza tę optymalizację.
ย ท --d ETAP drukuje dot-pliku (patrz Graphviz) z AST po etapie etapie. Możliwe etapy to: rozszerzenie, drzewo, symbol węzła-elim1, ogon, inline, stałą propagacji, RM-nieużywane-Vars, przechwytywanie, węzła-elim2, a, (tt "sprawozdanie"), węzeł-elim3. Zazwyczaj nie trzeba tę flagę, chyba do celów debugowania.
ย ท --print-locs drukuje oryginalne lokalizacje jako komentarze do pliku JavaScript. Miejsca te są obecnie charakter, przesunięcie od początku pliku

Co nowego w tym wydaniu:.

  • Minor zmiany i poprawki zostały przeniesione z Hop do Scheme2Js.

Co nowego w wersji 20100816:.

  • Czytnik Scheme2Js Runtime-teraz rozpoznaje słowa kluczowe "
  • Kilka błędów zostało poprawionych.

Co nowego w wersji 20081219:.

  • kompilator został zoptymalizowany
  • To jest teraz o wiele szybciej i zużywa mniej pamięci.
  • Wiele błędów zostało poprawionych.
  • klauzula domyślna Scheme2Js moduł jest obecnie podobna do jednej z Bigloo.
  • Ta wersja obsługuje kwalifikowanych nazw.

Podobne oprogramowanie

4tH compiler
4tH compiler

20 Feb 15

C
C

3 Jun 15

LLVM
LLVM

17 Aug 18

Komentarze do Scheme2Js

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!