इवल

कुछ प्रोग्रामिंग भाषाओं में,, अंग्रेजी विक्षनरी के लिए संक्षिप्त: मूल्यांकन, एक सबरूटीन है जो एक स्ट्रिंग का मूल्यांकन करता है जैसे कि यह भाषा में एक अभिव्यक्ति (प्रोग्रामिंग) थी, और एक वापसी मूल्य देता है; दूसरों में, यह कोड की कई पंक्तियों को निष्पादित करता है जैसे कि उन्हें लाइन सहित शामिल करने के बजाय शामिल किया गया हो. को इनपुट  आवश्यक रूप से एक स्ट्रिंग नहीं है; यह कोड का संरचित प्रतिनिधित्व हो सकता है, जैसे कि सार वाक्य रचना का पेड़ (जैसे लिस्प (प्रोग्रामिंग भाषा) फॉर्म), या विशेष प्रकार जैसे कि   (पायथन के रूप में)। बयान (कंप्यूटर विज्ञान) के लिए एनालॉग Exec (सिस्टम कॉल) है, जो एक स्ट्रिंग (या अन्य प्रारूप में कोड) को निष्पादित करता है जैसे कि यह एक स्टेटमेंट था; कुछ भाषाओं में, जैसे कि पायथन, दोनों मौजूद हैं, जबकि अन्य भाषाओं में दोनों में से केवल एक   या   है।

इवल और आवेदन करना मेटा-सर्कुलर मूल्यांकनकर्ताओं के उदाहरण हैं, एक भाषा के दुभाषिए जिन्हें भाषा के भीतर ही लागू किया जा सकता है।

सुरक्षा जोखिम
का उपयोग करते हुए  एक अविश्वसनीय स्रोत से डेटा के साथ सुरक्षा कमजोरियों का परिचय हो सकता है। उदाहरण के लिए, यह मानते हुए कि   फ़ंक्शन इंटरनेट से डेटा प्राप्त करता है, यह पायथन (प्रोग्रामिंग भाषा) कोड असुरक्षित है: <वाक्यविन्यास लैंग = अजगर> सत्र ['प्रमाणीकृत'] = झूठा डेटा = get_data फू = eval (डेटा) 

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

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

जावास्क्रिप्ट
जावास्क्रिप्ट में,  एक अभिव्यक्ति मूल्यांकनकर्ता और एक बयान निष्पादक के बीच एक संकर है। यह मूल्यांकन की गई अंतिम अभिव्यक्ति का परिणाम देता है।

अभिव्यक्ति मूल्यांकनकर्ता के रूप में उदाहरण: <वाक्यविन्यास लैंग = जावास्क्रिप्ट> फू = 2; चेतावनी (eval ('फू + 2')); 

एक बयान निष्पादक के रूप में उदाहरण: <वाक्यविन्यास लैंग = जावास्क्रिप्ट> फू = 2; eval ('फू = फू + 2; अलर्ट (फू);'); 

जावास्क्रिप्ट का एक प्रयोग  JSON टेक्स्ट को पार्स करना है, शायद अजाक्स (प्रोग्रामिंग) फ्रेमवर्क के हिस्से के रूप में। हालाँकि, आधुनिक ब्राउज़र प्रदान करते हैं   इस कार्य के लिए अधिक सुरक्षित विकल्प के रूप में।

ActionScript
एक्शनस्क्रिप्ट (फ्लैश की प्रोग्रामिंग भाषा) में,  मनमानी अभिव्यक्तियों का मूल्यांकन करने के लिए उपयोग नहीं किया जा सकता है। फ्लैश 8 प्रलेखन के अनुसार, इसका उपयोग उन भावों तक सीमित है जो पुनर्प्राप्त करने के लिए एक चर, संपत्ति, वस्तु या मूवी क्लिप के नाम का प्रतिनिधित्व करते हैं। यह पैरामीटर या तो स्ट्रिंग या ऑब्जेक्ट इंस्टेंस का सीधा संदर्भ हो सकता है। एक्शनस्क्रिप्ट 3 eval का समर्थन नहीं करता है।

एक्शनस्क्रिप्ट 3 इवल लाइब्रेरी और डी.एवल एपीआई समकक्ष बनाने के लिए विकास परियोजनाएं थीं  ActionScript 3 में। दोनों समाप्त हो गए हैं, क्योंकि Adobe Flash Player अपने End-of-life_product|end-of-life पर पहुंच गया है।

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

लिस्प के बाद के संस्करण  फ़ंक्शन को कंपाइलर्स के रूप में भी कार्यान्वित किया गया है।   लिस्प में e> फ़ंक्शन एक फॉर्म के मूल्यांकन और तर्क के रूप में निष्पादित होने की अपेक्षा करता है। दिए गए फॉर्म का रिटर्न वैल्यू कॉल का रिटर्न वैल्यू होगा.

यह एक उदाहरण लिस्प कोड है:

<वाक्यविन्यास प्रकाश लैंग = लिस्प> (+ 1 2 3) (सेट फॉर्म1 '(+ 1 2 3)) (ईवल फॉर्म 1) 
 * एक फॉर्म जो + फ़ंक्शन को 1,2 और 3 के साथ तर्क के रूप में कॉल करता है।
 * यह 6 लौटाता है।
 * लिस्प में किसी भी रूप का मूल्यांकन किया जाना है, इसलिए
 * + को कॉल किया गया था।
 * हम लिस्प को मूल्यांकन करने से रोक सकते हैं
 * उदाहरण के लिए ' के साथ उपसर्ग करके एक फॉर्म का:
 * अब फॉर्म 1 में एक फॉर्म होता है जिसका उपयोग eval द्वारा किया जा सकता है
 * उदाहरण:
 * eval मूल्यांकन (+ 1 2 3) और 6 लौटा।

लिस्प बहुत लचीला होने के लिए जाना जाता है और ऐसा ही है  समारोह। उदाहरण के लिए, एक स्ट्रिंग की सामग्री का मूल्यांकन करने के लिए, स्ट्रिंग को पहले लिस्प फॉर्म में बदलना होगा   फ़ंक्शन और फिर परिणामी फॉर्म को पास करना होगा  :

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

<वाक्यविन्यास लैंग = योजना> (फॉर्म2 परिभाषित करें '(+ 5 2)) मूल्य: फॉर्म 2
 * उपरोक्त उदाहरण की तरह कुछ सरल रूप को परिभाषित करें।

(eval form2 उपयोगकर्ता-प्रारंभिक-पर्यावरण) मूल्य: 7
 * प्रारंभिक संदर्भ में प्रपत्र का मूल्यांकन करें।
 * मूल्यांकन के लिए एक संदर्भ को स्कीम स्लैंग में पर्यावरण कहा जाता है।

(पर्यावरण-परिभाषित उपयोगकर्ता-प्रारंभिक-पर्यावरण '+ -) मूल्य: +
 * प्रारंभिक वातावरण को भ्रमित करें, जिससे + होगा
 * घटाव समारोह के लिए एक नाम।

(eval form2 उपयोगकर्ता-प्रारंभिक-पर्यावरण) मूल्य: 3 
 * फॉर्म का फिर से मूल्यांकन करें।
 * ध्यान दें कि लौटाया गया मान बदल गया है।

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

अभिव्यक्ति मूल्यांकनकर्ता के रूप में उदाहरण: <वाक्यविन्यास प्रकाश लैंग = पर्ल> $ फू = 2; प्रिंट इवल ('$ फू + 2'), \ n; 

एक बयान निष्पादक के रूप में उदाहरण: <वाक्यविन्यास प्रकाश लैंग = पर्ल> $ फू = 2; eval ('$ फू + = 2; प्रिंट $ फू \ n;'); 

पर्ल के पास भी है  ब्लॉक, जो इसके अपवाद हैंडलिंग तंत्र के रूप में कार्य करता है (देखें अपवाद हैंडलिंग सिंटैक्स # पर्ल)। यह उपरोक्त उपयोग से भिन्न है   अंदर उस कोड में तार के साथ   ब्लॉक की व्याख्या रन-टाइम के बजाय संकलन-समय पर की जाती है, इसलिए इसका अर्थ नहीं है   इस लेख में प्रयुक्त।

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

कुछ भाषाओं के विपरीत, तर्क  एक या अधिक पूर्ण कथनों की एक स्ट्रिंग होनी चाहिए, केवल भाव नहीं; हालाँकि, कोई अभिव्यक्ति का रूप प्राप्त कर सकता है   अभिव्यक्ति को रिटर्न स्टेटमेंट में डालकर, जो कारण बनता है   उस अभिव्यक्ति का परिणाम वापस करने के लिए।

कुछ भाषाओं के विपरीत, PHP's  एक कार्य के बजाय एक भाषा निर्माण है, और इसलिए कुछ संदर्भों में उपयोग नहीं किया जा सकता है जहां कार्य हो सकते हैं, जैसे उच्च-क्रम के कार्य।

प्रतिध्वनि का उपयोग करने का उदाहरण: <वाक्यविन्यास लैंग = php>  

मान लौटाने का उदाहरण: <वाक्यविन्यास लैंग = php>  

लुआ
लुआ (प्रोग्रामिंग भाषा) 5.1 में,  लुआ कोड को एक अज्ञात फ़ंक्शन में संकलित करता है।

अभिव्यक्ति मूल्यांकनकर्ता के रूप में उदाहरण: <वाक्यविन्यास लैंग = लुआ> लोडस्ट्रिंग (प्रिंट ('हैलो वर्ल्ड!')) 

दो चरणों में मूल्यांकन करने का उदाहरण: <वाक्यविन्यास लैंग = लुआ> ए = 1 f = लोडस्ट्रिंग (एक + 1 लौटाएं) - अभिव्यक्ति को एक अज्ञात फ़ंक्शन में संकलित करें प्रिंट (एफ ) - निष्पादित करें (और परिणाम '2' प्रिंट करें) 

लुआ 5.2 बहिष्कृत करता है  मौजूदा के पक्ष में   समारोह, जो तार स्वीकार करने के लिए संवर्धित किया गया है। इसके अलावा, यह फ़ंक्शन के वातावरण को सीधे प्रदान करने की अनुमति देता है, क्योंकि वातावरण अब बंद हो गया है (कंप्यूटर विज्ञान)। <वाक्यविन्यास लैंग = लुआ> प्रिंट (लोड (प्रिंट ('हैलो' .. ए), टी, {ए = वर्ल्ड!, प्रिंट = प्रिंट}) ) 

परिशिष्ट भाग
पोस्टस्क्रिप्ट  ऑपरेटर एक ऑपरेंड लेता है - यदि यह एक साधारण शाब्दिक है तो यह इसे स्टैक पर वापस धकेलता है। यदि कोई पोस्टस्क्रिप्ट अभिव्यक्ति वाली स्ट्रिंग लेता है, तो कोई स्ट्रिंग को निष्पादन योग्य में परिवर्तित कर सकता है जिसे दुभाषिया द्वारा निष्पादित किया जा सकता है, उदाहरण के लिए:

<वाक्यविन्यास लैंग = पोस्टस्क्रिप्ट> ((हैलो वर्ल्ड) =) सीवीएक्स निष्पादन  पोस्टस्क्रिप्ट अभिव्यक्ति को परिवर्तित करता है

<वाक्यविन्यास लैंग = पोस्टस्क्रिप्ट> (हैलो वर्ल्ड) =  जो स्टैक से हैलो वर्ल्ड स्ट्रिंग को पॉप करता है और इसे निष्पादन योग्य प्रकार के लिए स्क्रीन पर प्रदर्शित करता है, फिर निष्पादित किया जाता है।

पोस्टस्क्रिप्ट  ऑपरेटर कार्यक्षमता में समान है, लेकिन इसके बजाय दुभाषिया फ़ाइल में ही पोस्टस्क्रिप्ट एक्सप्रेशन की व्याख्या करता है।

<वाक्यविन्यास लैंग = पोस्टस्क्रिप्ट> (file.ps) चलाएँ </वाक्यविन्यास हाइलाइट>

पायथन
पायथन (भाषा) में,  अपने सरलतम रूप में कार्य एकल अभिव्यक्ति का मूल्यांकन करता है।

उदाहरण (इंटरैक्टिव खोल): <वाक्यविन्यास लैंग = पिकॉन> >>> एक्स = 1 >>> eval('x + 1') 2 >>> eval ('एक्स') 1 </वाक्यविन्यास हाइलाइट>  e> फ़ंक्शन दो वैकल्पिक तर्क लेता है,   और , जो प्रोग्रामर को अभिव्यक्ति के मूल्यांकन के लिए एक प्रतिबंधित वातावरण स्थापित करने की अनुमति देता है।   ई> बयान (या   फ़ंक्शन पायथन 3.x में) बयानों को निष्पादित करता है:

उदाहरण (इंटरैक्टिव खोल): <वाक्यविन्यास लैंग = पिकॉन> >>> एक्स = 1 >>> वाई = 1 >>> निष्पादन एक्स + = 1; वाई - = 1 >>> एक्स 2 >>> वाई 0 </वाक्यविन्यास हाइलाइट>

कथनों/अभिव्यक्तियों के मूल्यांकन के लिए सबसे सामान्य रूप कोड ऑब्जेक्ट्स का उपयोग कर रहा है। इन्हें आह्वान करके बनाया जा सकता है  फ़ंक्शन और यह बताकर कि इसे किस प्रकार के इनपुट को संकलित करना है: a बयान, ए बयान या ए कथन:

उदाहरण (इंटरैक्टिव खोल): <वाक्यविन्यास लैंग = पिकॉन> >>> एक्स = 1 >>> वाई = 2 >>> eval (संकलन (प्रिंट 'x + y =', x + y, compile-sample.py, एकल)) एक्स + वाई = 3 </वाक्यविन्यास हाइलाइट>

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

<वाक्यविन्यास प्रकाश लैंग = डी> आयात std.stdio;

शून्य मुख्य { इंट संख्या = 0; मिक्सिन (संख्या ++;); राइटलन (संख्या); // प्रिंट 1। } </वाक्यविन्यास हाइलाइट>

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

ठंडा गलन
कोल्डफ्यूजन का  फ़ंक्शन आपको रनटाइम पर स्ट्रिंग अभिव्यक्ति का मूल्यांकन करने देता है। <वाक्यविन्यास लैंग = सीएफएम> <cfset x = int(1+1) > <cfset y = मूल्यांकन (x)> </वाक्यविन्यास हाइलाइट>

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

किसी फ़ंक्शन के बंधन को निर्दिष्ट करने के अलावा,  एक विशिष्ट वर्ग परिभाषा बंधन या ऑब्जेक्ट इंस्टेंस बाइंडिंग के भीतर एक अभिव्यक्ति का मूल्यांकन करने के लिए भी इस्तेमाल किया जा सकता है, जिससे कक्षाओं को स्ट्रिंग्स में निर्दिष्ट नई विधियों के साथ विस्तारित किया जा सकता है।

<वाक्यविन्यास लैंग = रूबी> ए = 1 eval('a + 1') # (2 का मूल्यांकन करता है)

def get_binding (ए) बंधन अंत eval('a+1',get_binding(3)) # (4 का मूल्यांकन करता है, क्योंकि get_binding के संदर्भ में 'a' 3 है) </वाक्यविन्यास हाइलाइट>
 * 1) एक संदर्भ के भीतर मूल्यांकन

<वाक्यविन्यास लैंग = रूबी> क्लास टेस्ट; अंत Test.class_eval( def hello; return 'hello';end ) # इस क्लास में 'हैलो' मेथड जोड़ें Test.new.hello # हैलो का मूल्यांकन करता है </वाक्यविन्यास हाइलाइट>

फोर्थ
फोर्थ (प्रोग्रामिंग भाषा) के अधिकांश मानक कार्यान्वयन के दो संस्करण हैं :   और.

Win32FORTH कोड उदाहरण: <वाक्यविन्यास लैंग = आगे> एस 2 2 +। मूल्यांकन \ आउटपुट 4 </वाक्यविन्यास हाइलाइट>

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

सुरक्षा कारणों से @value संदर्भ का दायरा वैश्विक सापेक्ष है इसलिए @local के साथ बनाए गए स्थानीय चर @value के लिए अदृश्य हैं। उन्हें केवल उसी सूत्र क्षेत्र में कोड द्वारा देखा जा सकता है। (नीचे उदाहरण देखें), उसी टोकन द्वारा @value स्कोप में बनाए गए स्थानीय संस्करण केवल @value द्वारा देखे जा सकते हैं और उसी सूत्र या किसी अन्य कोड में कोड के लिए अदृश्य हैं। (नीचे टिप्पणी (1*) देखें)

FRED कोड उदाहरण:

<वाक्यविन्यास लैंग = पाठ> @मान (5 + 4 + 1) # सांख्यिक मान 10 लौटाएं @ मान (2 और 3) # सांख्यिक मान 23 लौटाएं @ मान (2 और + 3) # सांख्यिक मान 5 लौटाएं @ मान (2 और + और 3) # सांख्यिक मान 5 लौटाएं @ मान (2 + 3) # सांख्यिक मान 5 लौटाएं

my_var := 3, @ मान (2 + my_var) # सांख्यिक मान 5 लौटाएं

my_var := -3, @value( 2 + @abs(my_var) ) # सांख्यिक मान 5 लौटाएं

सुरक्षा कारणों से यह एक त्रुटि लौटाएगा क्योंकि @value का दायरा वैश्विक है और @local वैश्विक संदर्भों के लिए अदृश्य है और केवल अपने स्वयं के सूत्र में कोड द्वारा देखा जा सकता है। @ स्थानीय (ए, बी), ए := 1, ख := 2, @ मान (ए + बी) # एक त्रुटि मान लौटाएं (1 *)

लेकिन अगर ए और बी फ्रेम @value हैं जो वैश्विक और साथ ही सापेक्ष चर फ्रेम को संदर्भित कर सकते हैं, @value उन्हें देख सकते हैं ए := 1, ख := 2, @ मान (ए + बी) # संख्यात्मक मान लौटाएं 3

कोड की यह पंक्ति 3 वापस आ जाएगी क्योंकि स्थानीय संस्करण @value दायरे में बनाए और देखे जाते हैं @value( @local(a,b),a:=1,b:=2,a+b ) # सांख्यिक मान लौटाएं 3

लेकिन कोड की अगली दो पंक्तियाँ एक अपरिभाषित संदर्भ त्रुटि लौटाएंगी क्योंकि a और b स्थानीय @value स्कोप में बनाए गए हैं और सूत्र के बाकी कोड के लिए अदृश्य हैं, वास्तव में किसी भी कोड के लिए कहीं भी लेकिन इस @value स्कोप में। @ मान (@ स्थानीय (ए, बी), ए: = 1, बी: = 2), a+b # एक अपरिभाषित संदर्भ त्रुटि लौटाता है

@ मान ( {12/12/2012}, 16) # 12 दिसंबर, 2012 को स्ट्रिंग लौटाएं

@value( @fileload(@inputline( Enter Drive letter, & @item1 & ) & & :\myfile.txt ) ) # जहां @item1 को पैरामीटर c प्राप्त हुआ है, </वाक्यविन्यास हाइलाइट> स्ट्रिंग भागों को निष्पादित करेगा, नीचे स्ट्रिंग का निर्माण करेगा, और इसे @inputline से शुरू होने वाले प्रोग्राम के रूप में निष्पादित करेगा जो उपयोगकर्ता इनपुट का अनुरोध करता है, C का सुझाव देता है, यदि उपयोगकर्ता सी दर्ज करता है @fileload इसके पैरामीटर के रूप में स्ट्रिंग c:\myfile.txt के साथ चलता है: <वाक्यविन्यास लैंग = पाठ> @fileload(@inputline( ड्राइव लेटर दर्ज करें, c ) & :\myfile.txt ) # डेस्कटॉप पर myfile.txt लोड करता है </वाक्यविन्यास हाइलाइट>

असली बुनियादी
वास्तविक बुनियादी प्रोग्रामिंग भाषा में, RBScript नामक एक क्लास होती है जो रनटाइम पर REALबेसिक कोड को निष्पादित कर सकती है। RBScript बहुत सैंडबॉक्स है—केवल सबसे मुख्य भाषा विशेषताएँ हैं, और आपको इसे उन चीज़ों तक पहुँच की अनुमति देनी होगी जो आप इसे रखना चाहते हैं। आप वैकल्पिक रूप से संदर्भ संपत्ति के लिए एक वस्तु आवंटित कर सकते हैं। यह आरबीस्क्रिप्ट में कोड को फ़ंक्शन कॉल करने और संदर्भ वस्तु के गुणों का उपयोग करने की अनुमति देता है। हालाँकि, यह अभी भी केवल सबसे बुनियादी प्रकारों को समझने तक ही सीमित है, इसलिए यदि आपके पास कोई ऐसा फ़ंक्शन है जो एक शब्दकोश या MySpiffyObject देता है, तो RBScript इसका उपयोग करने में असमर्थ होगा। आप प्रिंट और इनपुट इवेंट्स के माध्यम से अपने आरबीस्क्रिप्ट के साथ भी संवाद कर सकते हैं।

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

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

अनुप्रयोगों के लिए विजुअल बेसिक
Microsoft Office की प्रोग्रामिंग भाषा, Visual Basic for Applications (VBA), एक वर्चुअल मशीन भाषा है जहाँ रनटाइम वातावरण बाइट कोड | पी-कोड को संकलित और चलाता है। इवल का इसका स्वाद केवल अभिव्यक्ति मूल्यांकन का समर्थन करता है, जहां अभिव्यक्ति में उपयोगकर्ता-परिभाषित फ़ंक्शन और ऑब्जेक्ट शामिल हो सकते हैं (लेकिन उपयोगकर्ता-परिभाषित चर नाम नहीं)। ध्यान दें, मूल्यांकनकर्ता VBS से अलग है, और कुछ उपयोगकर्ता परिभाषित कार्यों का आह्वान VBA में VBScript में समान कोड की तुलना में अलग तरह से काम कर सकता है।

स्मॉलटॉक
चूंकि स्मॉलटाक के कंपाइलर वर्ग मानक क्लास लाइब्रेरी का हिस्सा हैं और आमतौर पर रन टाइम पर मौजूद होते हैं, इन्हें कोड स्ट्रिंग का मूल्यांकन करने के लिए इस्तेमाल किया जा सकता है। <वाक्यविन्यास लैंग = स्मॉलटॉक> संकलक मूल्यांकन:'1 + 2' </वाक्यविन्यास हाइलाइट> क्योंकि क्लास और मेथड की परिभाषाएँ मैसेज-सेंड्स (क्लास ऑब्जेक्ट्स) द्वारा भी लागू की जाती हैं, यहाँ तक कि कोड परिवर्तन भी संभव हैं: <वाक्यविन्यास लैंग = स्मॉलटॉक> कंपाइलर मूल्यांकन: 'ऑब्जेक्ट सबक्लास: # फू' </वाक्यविन्यास हाइलाइट>

टीसीएल
टीसीएल प्रोग्रामिंग भाषा में एक कमांड कहा जाता है, जो एक तर्क के रूप में प्रदान किए गए स्रोत कोड को निष्पादित करता है। Tcl स्ट्रिंग्स के रूप में सभी स्रोत कोड का प्रतिनिधित्व करता है, जिसमें घुंघराले ब्रेसिज़ उद्धरण चिह्नों के रूप में कार्य करते हैं, ताकि तर्क को   किसी अन्य स्रोत कोड के समान स्वरूपण हो सकता है।

<वाक्यविन्यास प्रकाश लैंग = टीसीएल> सेट फू { जबकि {[incr i]<10} { पुट $i का वर्ग है [expr $i*$i] } } eval $foo </वाक्यविन्यास हाइलाइट>

बीएस
bs (प्रोग्रामिंग लैंग्वेज) में एक है  फ़ंक्शन जो एक स्ट्रिंग तर्क लेता है। फ़ंक्शन अभिव्यक्ति मूल्यांकनकर्ता और कथन निष्पादक दोनों है। बाद की भूमिका में, इसका उपयोग त्रुटि से निपटने के लिए भी किया जा सकता है। निम्नलिखित उदाहरण और पाठ से हैं   मैन पेज जैसा कि UNIX सिस्टम V रिलीज़ 3.2 प्रोग्रामर मैनुअल में दिखाई देता है।

"The string argument is evaluated as a expression. The function is handy for converting numeric strings to numeric internal form. The   can also be used as a crude form of indirection, as in the following (Note that, in,   (underscore) is the concatenation operator.): which increments the variable.

In addition,  preceded by the interrogation operator, , permits the user to control   error conditions. For example: returns the value zero if there is no file named "XXX" (instead of halting the user's program).

The following executes a  to the label   (if it exists):"

यूनिक्स गोले
मूल श (बॉर्न शेल) सहित सभी यूनिक्स खोल में eval कमांड मौजूद है। यह रिक्त स्थान के साथ सभी तर्कों को जोड़ता है, फिर परिणाम को फिर से पार्स करता है और परिणाम को कमांड के रूप में निष्पादित करता है।

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

अभिव्यक्ति मूल्यांकनकर्ता के रूप में उदाहरण: <वाक्यविन्यास प्रकाश लैंग = ps1con> पीएस> $ फू = 2 पीएस> इनवोक-एक्सप्रेशन '$ फू + 2' </वाक्यविन्यास हाइलाइट> एक बयान निष्पादक के रूप में उदाहरण: <वाक्यविन्यास प्रकाश लैंग = ps1con> पीएस> $ फू = 2 पीएस> इनवोक-एक्सप्रेशन '$ फू + = 2; $फू' </वाक्यविन्यास हाइलाइट>

माइक्रोकोड
1966 में आईबीएम संवादी प्रोग्रामिंग प्रणाली (सीपीएस) ने एक माइक्रोकोड फ़ंक्शन पेश किया  एक संशोधित पोलिश संकेतन में लिखी गई अभिव्यक्तियों का व्याख्यात्मक मूल्यांकन करने के लिए | IBM सिस्टम/360 मॉडल 50 पर पोलिश-स्ट्रिंग संकेतन। असाइनमेंट (कंप्यूटर विज्ञान) स्टेटमेंट की व्याख्या करने वाले प्रोग्राम की तुलना में इस फ़ंक्शन को माइक्रोकोडिंग पांच गुना तेजी से किया गया था।

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

जहां फॉर्म (एफ एक्स) का मूल्यांकन किया जाना है, और

जहां फ़ंक्शन f को तर्क x के साथ कॉल किया जाना है।

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

बाहरी संबंध

 * ANSI and GNU Common Lisp Document: eval function
 * Python Library Reference: eval built-in function
 * Jonathan Johnson on exposing classes to RBScript
 * Examples of runtime evaluation in several languages on Rosetta Code