Scheme2Js هو مخطط لمترجم جافا سكريبت. في حين تم إنفاق بعض الجهد على أن تكون أقرب ما يمكن إلى R5RS، ركزنا بشكل أساسي على الكفاءة.
عادة Scheme2Js تنتج كود جافا سكريبت، وهذا هو مماثل إلى رمز اليد مكتوب. من أجل تحقيق هذا الأداء، Scheme2Js ليس تماما متوافقة R5RS. ولا سيما أنها تفتقر إلى دعم استمرارا، أرقام دقيقة وأنه يعامل الذيل العودية جزئيا فقط.
يوفر Scheme2Js عدة الأعلام، والتي تسمح لتعديل النتيجة:
ย تدوين -ما لا-شبيبة الدوت ท يرفض الوصول إلى حقول جافا سكريبت لدى تدوين نقطة. هذا العلم تعطيل المداخل للس ص النموذج كما هو الحال في document.getElementById. غير أنه لا يزال من الممكن للوصول إلى هو التعبير الصحيح باستخدام وظيفة شبيبة الميدان.
ย ท سلاسل --mutable: من أجل تحسين أداء العمليات، وسلسلة للتخفيف من واجهة بين نظام وشفرة جافا سكريبت، وتنفيذ الافتراضية سلاسل نظام الخرائط إلى سلاسل جافا سكريبت. وخلافا لسلاسل مخطط، سلاسل جافا سكريبت هي إلا ثابتة. هذه السلاسل خرائط العلم إلى فئة جافا سكريبت، التي تمثل سلاسل نظام، التي هي قابلة للتغيير. رمز الناتج قد يكون أبطأ قليلا، وأنه من الصعب على التفاعل مع شفرة جافا سكريبت.
ย ท --encapsulate قطع غيار بتغليف البرنامج إلى وظيفة غير معروفة. المتغيرات العالمية فقط هي خارج هذه الوظيفة مجهولة. من جهة هذا يدخل واحد استدعاء دالة إلى وظيفة غير معروفة. ولكن من ناحية أخرى يجب تشغيل معظم تطبيقات جافا سكريبت أسرع مع هذا التحسين: عادة ما يتم استخدام hashtables لتمثيل نطاقات في جافا سكريبت. باستخدام وظيفة مجهول برامج يتم فصل المتغيرات داخل هم hashtable أصغر الخاصة بها والتي (نظريا) تسارع يصل إلى هذه المتغيرات. الأهم من ذلك يتم تخزين المتغيرات في hashtable الخاصة بهم، وليس في hashtable العالمي، الذي يمكن الوصول إليه بواسطة متغير العالمي. فمن السهل للغاية لتعديل غير مباشر محتويات المتغيرات العالمية. رمز مصدر أو تحسينات المشتركة الأخرى هي بالتالي من المستحيل القيام به على المتغيرات العالمية. عن طريق تخزين متغيرات البرنامج في وظيفة غير معروفة تصبح هذه التحسينات الممكنة مرة أخرى.
ย ท --optimize-فار-رقم يقلل من عدد من المتغيرات المستخدمة في شفرة جافا سكريبت الناتجة عن ذلك. رمز قد تشغيل أسرع، ولكن من الصعب التصحيح، ويتم فقدان أسماء المتغيرات ويمكن استخدام نفس المتغير عدة مرات.
ย ท --optimize في حين: مع هذا العلم Scheme2Js يحسن مشتركة مع الحلقات. وغير محسن بينما الحلقات غالبا ما تكون على شكل:
بينما (صحيح) {
إذا (اختبار)
resVar = الدقة.
آخر {
modify_loop_variable.
تواصل.
}
كسر.
}
هذا التحسين بالبحث عن هذه الأنماط وينتقل الاختبار في حلقة حين:
بينما (اختبار!) {
modify_loop_variable.
}
resVar = الدقة.
وقد تم تنفيذ هذا التحسين إلا في الآونة الأخيرة، وبالتالي لم ينشط حتى الآن بشكل افتراضي.
ย ท --verbose يطبع بعض المعلومات.
ย ท -ما لا-رمز مصدر تعطيل كل وظيفة رمز مصدر (ربما لا تزال inlined الثوابت).
ย ท --inline-جلوبل يتيح Scheme2Js مضمنة وظائف والثوابت العالمية. قد يكون هذا هما آثار جانبية غير مرغوبة: لواحد، وغالبا ما تستخدم المتغيرات العالمية لنقل البيانات بين وحدات مختلفة. يتم فقدان بعض الوظائف inlined إذا كان هناك أي إشارة لهم بعد الآن. إذا وظائف العالمية هي لاستخدامها خارج وحدة نمطية، ينبغي للمرء أن لا تستخدم هذه العلامة. (من المرجح أن تتغير في الإصدارات المستقبلية من Scheme2Js هذا السلوك.)
ย ท --unresolved هو بين شبيبة: إذا كان المتغير هو غير منضم، فإن المترجم تحمل متغير يأتي من وحدة أخرى، أو من جافا سكريبت. انظر القسم نظام - جافا سكريبت لمناقشة أكثر تفصيلا واجهة برنامج جافا سكريبت.
ย ท --js-وهذا يوفر هذا المتغير في وظائف نظام. بهذه الطريقة، يمكن استخدام الإجراءات نظام وسائل للكائنات جافا سكريبت.
ย ท -ما لا-tailrec تعطيل tailrec إلى حين حلقة التحسين. إذا كنت تشك في وجود خلل في الطريقة التي مترجم لترجمة الذيل المجموعات الاقتصادية الإقليمية، قد تتمكن من محاولة هذا العلم.
ย ท -ما لا-الأمثل مكالمات تعطيل Scheme2Js رمز مصدر العمليات الثنائية أو الأحادية. على سبيل المثال sci_plus (3، 5) هو الأمثل ل(3 + 5). هذا التحسين هو مهم جدا، وهناك عادة أي سبب لتعطيله.
ย ท -ما لا-الأمثل-consts تعطيل الحساب قبل المستمر. إلا المعوقين (مع هذا العلم)، وprecalculated الثوابت المجمع والأحداث التي حلت محلها إشارة إلى متغير عقد ثابت. هذا يجعل من تكرار بالوصول إلى هذه الثوابت أسرع، ولكن يدخل متغيرات جديدة.
ย ท -ما لا-الأمثل-boolify تعطيل الأمثل boolify. جافا سكريبت وboolify مخطط ليسوا يعادل: تعتبر جافا سكريبت كاذبة، 0، لاغية وغير معروف أنها كاذبة، في حين أن لديها خطة #F فقط. وبالتالي فإن boolify غير محسن يضيف دائما اختبار ضد كاذبة: إذا (اختبار == كاذبة!) ... إذا Scheme2Js يمكن أن نرى، أن الاختبار نفسه هو منطقي، فإنه يمكن إزالة لا لزوم لها == اختبار كاذبة!. هذا العلم تعطيل هذا التحسين.
ย ท --d STAGE بطباعة ملف نقطة (انظر graphviz) من AST بعد مرحلة مرحلة. المراحل الممكنة هي: التوسع، شجرة، رمز، عقدة elim1، والذيل، مضمنة، الإكثار المستمر،-RM-فار غير المستخدمة، والتقاط، عقدة elim2، بينما (تي تي "البيانات")، عقدة elim3. عادة لا يحتاج المرء هذا العلم، إلا لأغراض التصحيح.
ย ท طباعة --print-locs المواقع الأصلية عن التعليقات إلى ملف جافا سكريبت. هذه المواقع هي حاليا من بداية الملف الإزاحة حرف
ما هو الجديد في هذا الإصدار:.
وقد استدار تغييرات طفيفة وبوجفيكسيس من الهيب إلى Scheme2Js.
ما هو الجديد في النسخة 20100816:
Scheme2Js "وقت التشغيل القارئ يدرك الآن الكلمات الرئيسية.
وقد تم إصلاح العديد من الأخطاء.
ما هو الجديد في النسخة 20081219:
وقد تم تحسين مترجم.
هو الآن أسرع بكثير ويستهلك ذاكرة أقل.
وقد تم إصلاح العديد من الأخطاء.
شرط وحدة الافتراضي Scheme2Js هو الآن مشابهة لتلك التي من Bigloo.
هذا الإصدار يدعم أسماء المؤهلين.
لم يتم العثور على التعليقات