सोर्स-टू-सोर्स कंपाइलर

एक स्रोत-से-स्रोत अनुवादक, स्रोत-से-स्रोत संकलक (S2S संकलक), ट्रांसकंपलर, या ट्रांसपिलर  एक प्रकार का अनुवादक (कंप्यूटिंग) है जो किसी प्रोग्रामिंग भाषा में लिखे प्रोग्राम के सोर्स कोड को अपने इनपुट के रूप में लेता है और समान या उच्च स्तरीय प्रोग्रामिंग भाषा में समकक्ष सोर्स कोड तैयार करता है। एक स्रोत से स्रोत अनुवादक प्रोग्रामिंग भाषाओं के बीच परिवर्तित होता है जो लगभग समान स्तर के अमूर्तता (कंप्यूटर विज्ञान) पर काम करता है, जबकि एक पारंपरिक संकलक उच्च-स्तरीय प्रोग्रामिंग भाषा से निम्न-स्तरीय प्रोग्रामिंग भाषा में अनुवाद करता है। उदाहरण के लिए, स्रोत-से-स्रोत अनुवादक पायथन (प्रोग्रामिंग भाषा) से जावास्क्रिप्ट (प्रोग्रामिंग भाषा) में एक कार्यक्रम का अनुवाद कर सकता है, जबकि एक पारंपरिक संकलक सी (प्रोग्रामिंग भाषा) जैसी भाषा से विधानसभा भाषा या जावा में अनुवाद करता है जावा (प्रोग्रामिंग भाषा)) जावा बाइटकोड के लिए। एक स्वत: समानांतर संकलक अक्सर एक उच्च स्तरीय भाषा कार्यक्रम को एक इनपुट के रूप में लेता है और फिर कोड को रूपांतरित करता है और इसे समानांतर कोड एनोटेशन (जैसे, ओपनएमपी) या भाषा निर्माण (जैसे फोरट्रान के) के साथ एनोटेट करता है।   कथन)।

स्रोत-से-स्रोत-संकलन का एक अन्य उद्देश्य अंतर्निहित प्रोग्रामिंग भाषा या एपीआई के अगले संस्करण का उपयोग करने के लिए विरासत कोड का अनुवाद करना है जो पिछड़े संगतता को तोड़ता है। यह स्वचालित कोड रीफैक्टरिंग करेगा जो तब उपयोगी होता है जब रिफ्लेक्टर के प्रोग्राम मूल कार्यान्वयनकर्ता के नियंत्रण से बाहर होते हैं (उदाहरण के लिए, प्रोग्राम को पायथन 2 से पायथन 3 में परिवर्तित करना, या प्रोग्राम को पुराने एपीआई से नए एपीआई में परिवर्तित करना) या जब कार्यक्रम का आकार इसे हाथ से रिफ्लेक्टर करने के लिए अव्यावहारिक या समय लेने वाला बनाता है।

मूल स्रोत कोड के विकास और डिबगिंग को आसान बनाने के लिए ट्रांसकंपलर या तो अनुवादित कोड संरचना को स्रोत कोड के करीब रख सकते हैं या मूल कोड की संरचना को इतना बदल सकते हैं कि अनुवादित कोड स्रोत कोड की तरह न दिखे। डिबगिंग उपयोगिताएँ भी हैं जो ट्रांसकंपील्ड स्रोत कोड को मूल कोड पर वापस मैप करती हैं; उदाहरण के लिए, जावास्क्रिप्ट स्रोत मानचित्र मानक वेब ब्राउज़र द्वारा निष्पादित जावास्क्रिप्ट कोड को मूल स्रोत पर वापस मैप करने की अनुमति देता है, उदाहरण के लिए, जब जावास्क्रिप्ट कोड एक ट्रांसकंपील्ड-टू-जावास्क्रिप्ट भाषा द्वारा छोटा या निर्मित किया गया था। उदाहरणों में Google क्लोजर टूल्स, कॉफीस्क्रिप्ट, डार्ट (प्रोग्रामिंग भाषा), मिला हुआ, ओपल (रूबी), टाइपप्रति और emcribe शामिल हैं।

विधानसभा भाषा अनुवादक
तथाकथित असेंबली लैंग्वेज ट्रांसलेटर सोर्स-टू-सोर्स ट्रांसलेटर्स का एक वर्ग है जो कोड को एक असेंबली लैंग्वेज से दूसरी में परिवर्तित करता है, जिसमें विभिन्न प्रोसेसर परिवार और प्रणाली मंच शामिल हैं (लेकिन यह सीमित नहीं है)।

इंटेल CONV86
Intel ने अपने 16-बिट प्रोसेसर Intel 8086 को Intel 8080, एक 8-बिट प्रोसेसर के स्रोत-कोड संगतता के रूप में विपणन किया। इसका समर्थन करने के लिए, Intel के पास Intel ISIS-II|ISIS-II-आधारित अनुवादक 8080 से 8086 स्रोत कोड CONV86 था  (जिसे CONV-86 भी कहा जाता है और कन्वर्ट 86  1978 से ओईएम ग्राहकों के लिए उपलब्ध है, संभवतः इस तरह का सबसे पहला कार्यक्रम। यह अनुवाद के कई स्तरों का समर्थन करता है और 8-इंच फ्लॉपी ड्राइव के साथ Intel माइक्रोप्रोसेसर डेवलपमेंट सिस्टम Intel MDS-800|MDS-800 पर 2 मेगाहर्ट्ज पर चलता है। उपयोगकर्ता रिपोर्टों के अनुसार, यह बहुत मज़बूती से काम नहीं करता था।

एससीपी TRANS86
सिएटल कंप्यूटर उत्पाद (एससीपी) ने TRANS86.COM की पेशकश की,  टिम पैटर्सन द्वारा लिखित 1980 86-DOS विकसित करते हुए।   यूटिलिटी Intel 8080 और Zilog Z80 असेंबली सोर्स कोड (Zilog/Mostek mnemonics के साथ) में अनुवाद कर सकती है .ASM Intel 8086 के लिए स्रोत कोड (CP/M-80 के लिए केवल SCP के क्रॉस-असेंबलर ASM86 के साथ संगत प्रारूप में), लेकिन केवल opcode, रजिस्टर और मोड के एक सबसेट का समर्थन करता है, और अक्सर अभी भी महत्वपूर्ण मैन्युअल सुधार और बाद में फिर से काम करने की आवश्यकता होती है।  इसके अलावा, केवल एक लिप्यंतरण करते हुए,    ब्रूट-फोर्स सिंगल-पास कंपाइलर | सिंगल-पास ट्रांसलेटर ने कोई रजिस्टर और जंप ऑप्टिमाइज़ेशन नहीं किया।  इसमें लगभग 24 केबी रैम लगी। TRANS86.COM का SCP संस्करण 1 Z80-आधारित सिस्टम पर चलता था।  एक बार जब 86-डॉस चल रहा था, पैटरसन ने एक स्वयं-होस्टिंग (संकलक)कंपाइलर) | सेल्फ-होस्टिंग-प्रेरित दृष्टिकोण में, 86-डॉस के तहत चलने वाले प्रोग्राम में खुद को बदलने के लिए TRANS86 का उपयोग किया।  क्रमांकित संस्करण 2, इसकी जगह इसका नाम TRANS.COM रखा गया।     बाद में 1982 में, अनुवादक स्पष्ट रूप से Microsoft से भी उपलब्ध था।

सोरसिम TRANS86
इसका नाम ट्रांस86 भी रखा गया है, सोरसिम ने दिसंबर 1980 से 8080 से 8086 अनुवादकों की पेशकश की। एससीपी के कार्यक्रम की तरह इसे एमएस-डॉस (एसीटी86 के साथ संगत प्रारूप में) में पोर्ट सीपी/एम-80 एप्लिकेशन कोड (एएसएम, मैक, आरएमएसी या एसीटी80 असेंबली प्रारूप में) के लिए डिजाइन किया गया था।    ACT80 प्रारूप में इसने कुछ Z80 mnemonics का भी समर्थन किया। अनुवाद निर्देश-दर-निर्देश के आधार पर हुआ, जिसमें कुछ अनुकूलन सशर्त कूद पर लागू किए गए थे। यह प्रोग्राम CP/M-80, MP/M-80 और Cromemco DOS के तहत कम से कम 24 KB RAM के साथ चलता था, और स्रोत फ़ाइल आकार पर कोई प्रतिबंध नहीं था।

डिजिटल रिसर्च XLT86
सितंबर 1981 में डिजिटल अनुसंधान का XLT86 1.0 बहुत अधिक परिष्कृत और स्रोत अनुवाद प्रक्रिया में अनुकूलतम कंपाइलर तकनीकों को पेश करने वाला पहला था। XLT86 1.1 अप्रैल 1982 तक उपलब्ध था. कार्यक्रम गैरी किल्डाल द्वारा लिखा गया था   और अनुवादित .ASM Intel 8080 प्रोसेसर के लिए स्रोत कोड (ASM, MAC या RMAC असेंबलरों के साथ संगत प्रारूप में) .A86 8086 के लिए स्रोत कोड (ASM86 के साथ संगत)। 8080 रजिस्टर उपयोग पर वैश्विक डेटा प्रवाह विश्लेषण का उपयोग करना,    पांच-फेज बहु-पास संकलक | मल्टी-पास ट्रांसलेटर कोड आकार के लिए आउटपुट को भी अनुकूलित करेगा और कॉलिंग सम्मेलनों का ध्यान रखेगा (CP/M-80 BDOS कॉल्स को CP/M-86 के लिए BDOS कॉल्स में मैप किया गया था), ताकि CP/M-80 और MP/M-80 प्रोग्राम स्वचालित रूप से CP/M-86 और MP/M-86 प्लेटफॉर्म पर पोर्ट किए जा सकते हैं। XLT86.COM स्वयं CP/M-80 प्लेटफॉर्म के लिए PL/I-80 में लिखा गया था।    प्रोग्राम ने अपने लिए 30 KB RAM और कार्यक्रम ग्राफ़ के लिए अतिरिक्त मेमोरी ली। 64 केबी मेमोरी सिस्टम पर, समर्थित अधिकतम स्रोत फ़ाइल आकार लगभग 6 केबी था,    ताकि अनुवाद से पहले बड़ी फ़ाइलों को तदनुसार तोड़ना पड़े।  वैकल्पिक रूप से, XLT86 डिजिटल उपकरण निगम VAX/VMS के लिए भी उपलब्ध था।  हालांकि XLT86 के इनपुट और आउटपुट स्रोत-कोड स्तर पर काम करते हैं, प्रोग्राम के अनुवादक की इन-मेमोरी प्रस्तुति और लागू कोड अनुकूलन तकनीकों ने बाइनरी पुनर्संकलन की नींव रखी।

अन्य
2500 AD सॉफ़्टवेयर ने Z80 के साथ CP/M-80 मशीनों के साथ-साथ Zilog ZEUS और Olivetti PCOS सिस्टम के लिए अपने XASM सूट के हिस्से के रूप में 8080 से 8086 स्रोत-कोड अनुवादक की पेशकश की।

1979 से, Zilog ने अपने PDS 8000 विकास प्रणाली के हिस्से के रूप में Z80 से Z8000 अनुवादक की पेशकश की।     उन्नत माइक्रो कंप्यूटर (एएमसी)  और 2500 AD सॉफ़्टवेयर ने Z80 से Z8000 अनुवादकों को भी ऑफ़र किया। बाद वाले को ट्रांस नाम दिया गया था  और Z80 CP/M, CP/M-86, MS-DOS और PCOS के लिए उपलब्ध था।

Z88DK विकास किट एक Z80 से i486 स्रोत कोड अनुवादक प्रदान करता है जो to86.awk नाम के नेटवाइड असेंबलर को लक्षित करता है, जिसे 2008 में स्टेफानो बोडराटो द्वारा लिखा गया था। यह बदले में डगलस बीट्टी, जूनियर द्वारा 2003 में लिखे गए 8080 से Z80 कन्वर्टर पर आधारित है, जिसका नाम toz80.awk है।

2021 में, ब्रायन कॉलहन ने MS-DOS सोर्स कोड ट्रांसलेटर के लिए 8080 CP/M 2.2 लिखा, जिसका लक्ष्य 8088ify नाम का नेटवाइड असेंबलर था।

प्रोग्रामिंग भाषा कार्यान्वयन
कुछ प्रोग्रामिंग भाषाओं का पहला कार्यान्वयन ट्रांसकंपलर के रूप में शुरू हुआ, और उनमें से कुछ भाषाओं के लिए डिफ़ॉल्ट कार्यान्वयन अभी भी ट्रांसकंपलर हैं। नीचे दी गई तालिका के अलावा, एक कॉफीस्क्रिप्ट अनुरक्षक जावास्क्रिप्ट को संकलित करने वाली भाषाओं की एक सूची प्रदान करता है।

एक कोडबेस पोर्ट करना
जब अधिकांश मौजूदा कोडबेस को बनाए रखते हुए डेवलपर्स एक अलग भाषा में स्विच करना चाहते हैं, तो पूरे सॉफ्टवेयर को हाथ से लिखने की तुलना में एक ट्रांसकंपलर का उपयोग करना बेहतर हो सकता है। ट्रांसकंपलर की गुणवत्ता के आधार पर, कोड को ठीक से काम करने के लिए मैन्युअल हस्तक्षेप की आवश्यकता हो भी सकती है और नहीं भी। यह ट्रांसकंपील्ड भाषाओं से अलग है जहां विनिर्देशों की मांग है कि आउटपुट स्रोत कोड हमेशा बिना संशोधन के काम करता है। एक कोडबेस को पोर्ट करने के लिए उपयोग किए जाने वाले सभी ट्रांसकंपलर आउटपुट स्रोत कोड के मैन्युअल समायोजन की अपेक्षा करेंगे यदि पठनीयता और प्लेटफ़ॉर्म कन्वेंशन के संदर्भ में अधिकतम कोड गुणवत्ता प्राप्त करने की आवश्यकता है।

ट्रांसकंपलर पाइपलाइन
एक ट्रांसकंपाइलर पाइपलाइन वह है जो पुनरावर्ती ट्रांसकंपलिंग का परिणाम है। तकनीक की कई परतों को एक साथ जोड़कर, प्रत्येक परत के बीच एक ट्रांसकंपाइल चरण के साथ, प्रौद्योगिकी को बार-बार रूपांतरित किया जा सकता है, प्रभावी रूप से एक वितरित भाषा-स्वतंत्र विनिर्देश बना सकता है।

XSLT एक सामान्य-उद्देश्य रूपांतरण उपकरण है जिसका उपयोग कई अलग-अलग तकनीकों के बीच किया जा सकता है, इस तरह के व्युत्पन्न कोड पाइपलाइन बनाने के लिए।

रिकर्सिव ट्रांसकंपाइलिंग
पुनरावर्ती transcompilation (या पुनरावर्ती transpiling) पुनरावर्ती रूप से transcompiling की धारणा को लागू करने की प्रक्रिया है, परिवर्तनों की एक पाइपलाइन बनाने के लिए (अक्सर सत्य के एक स्रोत से शुरू) जो बार-बार एक तकनीक को दूसरे में बदल देती है।

इस प्रक्रिया को दोहराकर, कोई A → B → C → D → E → F को घुमा सकता है और फिर वापस अंदर जा सकता है A(v2). इस पाइपलाइन के माध्यम से A → से कुछ जानकारी संरक्षित की जाएगी A(v2), और वह जानकारी (एक अमूर्त स्तर पर) प्रदर्शित करती है कि प्रत्येक घटक A–F किस पर सहमत है।

ट्रांसकंपलर पाइपलाइन द्वारा उत्पादित प्रत्येक भिन्न संस्करण में, वह जानकारी संरक्षित है। यह कई अलग-अलग आकार और आकार ले सकता है, लेकिन जब तक यह वापस आता है A (v2), उपरोक्त पाइपलाइन में छह बार ट्रांसकंपाइल होने के बाद, जानकारी अपनी मूल स्थिति में वापस आ जाती है।

यह जानकारी जो प्रत्येक प्रारूप के माध्यम से परिवर्तन से बचती है, से A–F–A(v2), (परिभाषा के अनुसार) व्युत्पन्न सामग्री या व्युत्पन्न कोड है।

पुनरावर्ती ट्रांसकंपिलेशन इस तथ्य का लाभ उठाता है कि मूल स्रोत कोड के विकास और डिबगिंग को आसान बनाने के लिए ट्रांसकंपलर या तो अनुवादित कोड को स्रोत कोड के करीब रख सकते हैं, या फिर वे मूल कोड की संरचना को इतना बदल सकते हैं, कि अनुवादित कोड स्रोत कोड की तरह नहीं दिखता है। डिबगिंग उपयोगिताएँ भी हैं जो ट्रांसकंपील्ड स्रोत कोड को मूल कोड पर वापस मैप करती हैं; उदाहरण के लिए, जावास्क्रिप्ट स्रोत मानचित्र एक वेब ब्राउज़र द्वारा निष्पादित जावास्क्रिप्ट कोड की मैपिंग को मूल स्रोत पर ट्रांसकंपील्ड-टू-जावास्क्रिप्ट भाषा में मैप करने की अनुमति देता है।

यह भी देखें

 * – स्पष्ट पैटर्न-निर्देशित पुनर्लेखन नियमों का उपयोग करते हुए एक स्रोत-से-स्रोत संकलक ढांचा
 * – फोरट्रान 77 से सी तक स्रोत-से-स्रोत संकलक
 * (हनीवेल H200 पर IBM 1401 प्रोग्राम चला रहा है)
 * – एक स्रोत से स्रोत संकलक ढांचा
 * – फोरट्रान 77 से सी तक स्रोत-से-स्रोत संकलक
 * (हनीवेल H200 पर IBM 1401 प्रोग्राम चला रहा है)
 * – एक स्रोत से स्रोत संकलक ढांचा
 * – एक स्रोत से स्रोत संकलक ढांचा
 * – एक स्रोत से स्रोत संकलक ढांचा
 * – एक स्रोत से स्रोत संकलक ढांचा
 * – एक स्रोत से स्रोत संकलक ढांचा
 * – एक स्रोत से स्रोत संकलक ढांचा
 * – एक स्रोत से स्रोत संकलक ढांचा
 * – एक स्रोत से स्रोत संकलक ढांचा

अग्रिम पठन

 * 1984-11-11 version 1.05 (NB. The DOS executable XLT86.COM [12 KB] translates Intel 8080 assembly language source code to Intel 8086 assembly language source code. Despite its name this implementation in 8086 assembly is not related to Digital Research's earlier and much more sophisticated XLT86.)
 * 
 * and, also available as
 * (9 pages) (NB. This software translator was developed by ST and translates Motorola 6805/HC05 assembly source code in 2500AD Software format into ST7 source code. The MIGR2ST7.EXE executable for Windows is available from "MCU ON CD".)
 * and, also available as
 * (9 pages) (NB. This software translator was developed by ST and translates Motorola 6805/HC05 assembly source code in 2500AD Software format into ST7 source code. The MIGR2ST7.EXE executable for Windows is available from "MCU ON CD".)