Кіріспе

Бағдарламалау тіліндегі функция, ол жолдың мәнін есептейді. Кейбір бағдарламалау тілдерінде eval, «бағалау» сөзінің қысқартылған түрі, тілдегі өрнек ретінде жолдың мәнін есептейтін және нәтиже қайтаратын функция болып табылады; ал басқаларында ол eval функциясы бар жолдың орнына бірнеше код жолын орындайды. Eval функциясына берілетін деректер міндетті түрде жол болуы керек емес; ол кодтың құрылымдық ұсынылуы болуы мүмкін, мысалы, абстрактілі синтаксистік ағаш (Lisp нысандары сияқты) немесе код сияқты арнайы тип (Python-дағыдай). Операторға сәйкес келетін функция exec болып табылады, ол жолдың (немесе басқа форматтағы кодтың) оператор ретінде орындалуын қамтамасыз етеді; кейбір тілдерде, мысалы Python, екеуі де бар, ал басқа тілдерде тек eval немесе exec функциясының біреуі ғана болады. Eval және apply – метациклдық бағалаушылардың, яғни тілдің өзінде шақырылуы мүмкін тілдік интерпретаторлардың мысалдары.

Іске асыру

Интерпретацияланатын тілдерде, eval функциясы көбінесе қалыпты кодты орындайтын бірдей интерпретатормен іске асырылады. Компиляцияланатын тілдерде, бағдарламаларды компиляциялауға қолданылатын компилятор, eval функциясын пайдаланатын бағдарламалардың ішіне енгізілуі мүмкін; кейде жеке интерпретаторлар қолданылады, бірақ бұл кодтың дубликациялануына алып келеді.

ActionScript- тің атауы

ActionScript-те (Flash бағдарламалау тілі) eval кез келген өрнектерді бағалау үшін қолданылмайды. Flash 8 құжаттамасына сәйкес, оның қолданылуы "айнымалының, қасиеттің, нысанның немесе алу үшін кинофильмнің атын" көрсететін өрнектермен шектелген. Бұл параметр String немесе нысан мысалына тікелей сілтеме болуы мүмкін. ActionScript 3 eval-ді қолдамайды. ActionScript 3 Eval кітапханасы және D. eval API ActionScript 3-те eval-ге баламаларды жасау мақсатымен әзірленген жобалар еді. Екеуі де тоқтатылды, себебі Adobe Flash Player өмірлік циклын аяқтады.

REAL негізгі

REALbasic-те RBScript деп аталатын класс бар, ол орындалу кезінде REALbasic кодын орындай алады. RBScript өте қауіпсізделген (sandboxed) – тек ең негізгі тілдік мүмкіндіктер ғана бар, және сіз оған қажетті нәрселерге қол жеткізуге рұқсат беруіңіз керек. Контекст қасиетіне объектіні қоса аласыз. Бұл RBScript-тегі кодқа функцияларды шақыруға және контекст объектісінің қасиеттерін пайдалануға мүмкіндік береді. Дегенмен, ол әлі де тек ең қарапайым дерек түрлерін ғана түсіне алады, сондықтан егер сізде сөздік (Dictionary) немесе MySpiffyObject қайтаратын функция болса, RBScript оны пайдалана алмайды. Сіз сондай-ақ Print және Input оқиғалары арқылы RBScript-пен байланыса аласыз.

VBScript- тің атауы

Microsoft-тың интерпретацияланған VBScript тілінде екі құрылым бар. Eval – пайдаланушы анықтаған функцияларды шақыру мүмкіндігі бар функция бағалаушысы. (Бұл функциялар жағымсыз әсерлер тудыруы мүмкін, мысалы, жаһандық айнымалылардың мәнін өзгерту.) Execute бір немесе бірнеше қос нүктемен бөлінген операторларды орындайды, олар жаһандық күйді өзгерте алады. VBScript және JScript екісі де Eval-ды қолдамайтын тілдерде жазылған компиляцияланған Windows қолданбаларын жасаушыларға Microsoft Script Control деп аталатын ActiveX элементі арқылы қол жетімді, оның Eval әдісі қолданба кодымен шақырылуы мүмкін. Пайдаланушы анықтаған функцияларды шақыруды қолдау үшін, ең алдымен AddCode әдісімен элементті инициализациялау қажет, ол Eval шақыру алдында сіз таңдаған тілде анықталған пайдаланушы анықтаған функциялардың кітапханасын қамтитын жол немесе жол ресурсын жүктейді.

Қолданбалар үшін Visual Basic

Visual Basic for Applications (VBA) – Microsoft Office бағдарламалау тілі, виртуалды машина тілі болып табылады, онда орындалу ортасы p кодын компиляциялап, іске қосады. Оның Eval мүмкіндігі тек өрнектерді бағалауды қолдайды, мұнда өрнекте пайдаланушы анықтаған функциялар мен объектілер (бірақ пайдаланушы анықтаған айнымалы атаулары емес) болуы мүмкін. Маңыздысы, бұл бағалаушы VBS-тен өзгеше, және кейбір пайдаланушы анықтаған функцияларды шақыру VBA-да VBScript-тегі бірдей кодтан әртүрлі жұмыс істеуі мүмкін.

bs

bs бір жолды аргумент қабылдайтын eval функциясына ие. Бұл функция өрнектерді бағалаушы да, операторларды орындаушы да болып табылады. Соңғы қызметі ретінде, ол қателерді жою үшін де қолданылуы мүмкін. Келесі мысалдар мен мәтін UNIX System V Release 3.2 Programmer's Manual-дағы bs man бетінен алынған.

Unix қабықшалары

Эваль командасы барлық Unix қабықшаларында, соның ішінде бастапқы "sh" (Борн қабықшасы) қабықшасында бар. Ол барлық аргументтерді бір-біріне бос орындармен қосып, содан кейін осы қосылған тізімді жаңа команда ретінде талдап орындайды.

Микрокод

1966 жылы IBM Conversational Programming System (CPS) IBM System/360 Model 50 компьютерінде "өзгертілген поляк тізбектік нотациясымен жазылған өрнектерді интерпретациялық бағалау" үшін EVAL микропрограммалық функциясын енгізді. Бұл функцияны микрокодтау, тапсырма операторын интерпретациялайтын бағдарламамен салыстырғанда бес еседен де көп есе жылдам болды.