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 עם הנקודה-הסימון. דגל זה משבית כניסות של XY הצורה כמו בdocument.getElementById. זה אולם עדיין ניתן לגשת הוא ביטוי חוקי באמצעות פונקצית JS-השדה.
ย ท --mutable-חוטים: כדי לשפר את הביצועים של מחרוזת פעולה וכדי להקל על הממשק בין התכנית וקוד JavaScript, מחרוזות תכנית מפות יישום ברירת מחדל למחרוזות JavaScript. בניגוד לתכנית מחרוזות, מחרוזות JavaScript הן בלתי ניתנות לשינוי עם זאת. מחרוזות זה מפות דגל לכיתת JavaScript, שמייצגת מחרוזות תכנית, כי הם משתנים. הקוד וכתוצאה מכך עלול להיות מעט איטי יותר, וקשה יותר לממשק עם קוד Javascript.
ย ท --encapsulate-חלקים מתמצת את התכנית לפונקציה אנונימית. רק משתנים הגלובליים הם מחוץ לפונקציה אנונימית זה. מצד אחד זה מציג קריאה לפונקציה אחת לפונקציה אנונימית. אבל מצד השני רוב יישומי Javascript צריכים לרוץ מהר יותר עם אופטימיזציה זה: בדרך כלל Hashtables, משמש לייצוג טווחים ב- JavaScript. על ידי שימוש בפונקציה אנונימית תוכניות משתנים מופרדים לhashtable הקטן יותר אשר (בתאוריה) מאיץ כניסות למשתנים אלו. חשוב מהמשתנים מאוחסנים בhashtable, ולא בhashtable העולמי, שהוא נגיש על ידי משתנה הגלובלי. זה מאוד קל לשנות באופן עקיף את התוכן של משתנים הגלובליים. הטבעה או אופטימיזציות נפוצות אחרות הן מכאן אי אפשר לעשות במשתנים גלובליים. על ידי אחסון המשתנים של התכנית בפונקציה אנונימית אופטימיזציות אלה הופכים שוב אפשריות.
ย ท --optimize-var-מספר מפחית את מספר המשתנים המשמשים בקוד JavaScript וכתוצאה מכך. הקוד יכול לרוץ מהר יותר, אך קשה יותר לאתר באגים, כמו השמות משתנים הם איבדו ואת אותו משתנה עשוי לשמש מספר פעמים.
ย ท --optimize-בזמן: עם Scheme2Js הדגל זה מייעל משותף תוך לולאות. Unoptimized תוך לולאות הן לעתים קרובות מהצורה:
 בעוד (אמיתי) {
   אם (מבחן)
     = מיל resVar;
   אחר {
     modify_loop_variable;
     להמשיך;
   }
   לשבור;
 }
 
אופטימיזציה זה נראית לדפוסים אלה ומעבירה את המבחן לבעוד הלולאה:
 בעוד (מבחן!) {
   modify_loop_variable;
 }
 = מיל resVar;
 
אופטימיזציה זו יושמה רק לאחרונה ולכן הוא עדיין לא מופעלת כברירת מחדל.
ย ท --verbose מדפיס קצת מידע.
ย ท --no-הטבעה משביתה את כל הטבעת הפונקציה (קבועים עשויים עדיין להיות inlined).
ย ท --inline-globals מאפשר Scheme2Js מוטבע פונקציות וקבועים גלובליות. זה יכול להיות שתי תופעות לוואי לא רצויות: לאחד, משתנה הגלובלי משמש לעתים קרובות להעברת נתונים בין מודולים שונים. כמה פונקציות inlined הולכות לאיבוד אם אין התייחסות אליהם יותר. אם פונקציות הגלובליות הן לשמש מחוץ מודול, אחד לא צריך להשתמש בדגל זה. (התנהגות זו עשויה להשתנות בגרסאות עתידיות של Scheme2Js.)
ย ท --unresolved-הוא-JS: אם משתנה הוא מאוגד, המהדר להניח משתנה מגיע ממודול אחר, או מJavaScript. ראה סעיף תכנית - Javascript לדיון מפורט יותר של ממשק JavaScript התכנית.
ย ท --js זה מספק את משתנה זה בתוך פונקציות תכנית. בדרך זו, ניתן להשתמש בנהלי תכנית כמו שיטות של אובייקטי JavaScript.
ย ท --no-tailrec משבית tailrec לבעוד הלולאה אופטימיזציה. אם אתה חושד באגים בדרך של המהדר של תרגום זנב-RECs, אתה יכול לנסות את הדגל הזה.
ย ท --no-אופטימיזציה-שיחות משבית הטבעת Scheme2Js פעילות בינארי או יונארית. לsci_plus למשל (3, 5) הוא מותאם ל( 3 + 5). אופטימיזציה זה די חשוב, ויש בדרך כלל אין סיבה לבטל את זה.
ย ท --no-אופטימיזציה-consts משבית את החישוב מראש קבוע. אלא אם כן נכים (עם הדגל הזה), קבועי מתחם הם precalculated והמופעים שלהם הוחלפו על ידי התייחסות למשתנה מחזיקה הקבועה. זה הופך חזר כניסות לקבועים אלה מהר יותר, אבל מציג משתנים חדשים.
ย ท --no-אופטימיזציה-boolify משבית אופטימיזציה boolify. של JavaScript וboolify של התכנית הם לא שווים: JavaScript רואה שווא, 0, בטל ומוגדר ככוזב, ואילו תכנית יש #f בלבד. Boolify unoptimized לכן תמיד מוסיף המבחן נגד שקר: אם (מבחן == שקר!) ... אם Scheme2Js יכול לראות, כי המבחן עצמו הוא בוליאני, הוא יכול להסיר את מיותר == מבחן שווא!. דגל זה משבית אופטימיזציה זו.
ย ท --d שלב מדפיס dot-קובץ (ראה Graphviz) של AST אחרי שלב שלב. שלבים אפשריים הם: להרחיב, עץ, סמל, צומת-elim1, זנב, מוטבע, קבועה-הפצה, RM-שימוש-VARs, לכידה, צומת-elim2, תוך, (TT "הצהרות"), צומת-elim3. בדרך כלל אף אחד לא צריך את הדגל הזה, אלא אם כן למטרת איתור באגים.
ย ท הדפסי --print-locs מיקומים המקוריים כתגובות לקובץ JavaScript. מקומות אלה הם כיום מתחילת הקובץ-לקזז האופי

מה חדש בהודעה זו:.

    • מינור שינויים ותיקוני באגים כבר מועברים מהופ לScheme2Js.

      מה חדש בגרסת 20100816

    :.

    • זמן הריצה-הקורא "Scheme2Js מזהה כעת מילות מפתח
    • >
    • כמה באגים תוקנו.

    מה חדש בגרסה 20081219:.

    • מהדר כבר מותאם
    • עכשיו זה הרבה יותר מהר וצורכת פחות זיכרון.
    • באגים רבים תוקנו.
    • סעיף מודול ברירת המחדל של Scheme2Js הוא כעת דומה לזו של Bigloo.
    • גרסה זו תומכת בשמות מוסמכים.

  • תוכנה דומה

    Ruby
    Ruby

    17 Aug 18

    Plessc
    Plessc

    19 Feb 15

    Pyastra
    Pyastra

    3 Jun 15

    Tcl/Tk
    Tcl/Tk

    20 Jan 18

    תגובות ל Scheme2Js

    תגובות לא נמצא
    להוסיף הערה
    הפעל את התמונות!