Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Атрибут грамматикасы – формалды грамматиканы семантикалық ақпаратты өңдеумен толықтырудың формалды әдісі. Семантикалық ақпарат грамматиканың терминалдық және терминалдық емес символдарымен байланысты атрибуттарда сақталады. Атрибуттардың мәндері грамматиканың өндірісімен байланысты атрибуттарды бағалау ережелерінің нәтижесі болып табылады. Атрибуттар ақпаратты абстрактілі синтаксис ағашының кез келген жерінен басқа кез келген жерге, бақыланатын және формалды түрде беруге мүмкіндік береді. Әрбір семантикалық функция тек бір өндіріс ережесінде кездесетін символдардың атрибуттарымен жұмыс істейді: семантикалық функция параметрлері де, оның нәтижесі де бір нақты ережеден символдардың атрибуттары болып табылады. Егер семантикалық функция ереженің сол жағындағы символдың атрибутының мәнін анықтаса, онда атрибут синтезделген деп аталады; әйтпесе ол мұраланған деп аталады. Осылайша, синтезделген атрибуттар семантикалық ақпаратты талдау ағашы бойымен жоғары қарай жеткізуге қызмет етеді, ал мұраланған атрибуттар мәндерді ата-аналық түйіндерден төменге және синтаксистік ағаштың бойына беруге мүмкіндік береді. Қарапайым қолдануларда, мысалы, арифметикалық өрнектерді бағалауда, атрибут грамматикасы тікелей талдаудан басқа орындалатын барлық міндетті сипаттау үшін пайдаланылуы мүмкін; күрделі жүйелерде, мысалы, компилятор сияқты тілдік аударма құралын құрастыру кезінде, ол грамматикамен байланысты семантикалық тексерулерді растауға пайдаланылуы мүмкін, бұл синтаксис анықтамасымен тікелей берілмеген тілдің ережелерін білдіреді. Ол сондай-ақ пасерлер немесе компиляторлар синтаксистік ағашты тікелей белгілі бір машинаның кодына немесе аралық тілге аудару үшін пайдалана алады.
An attribute grammar is a formal way to supplement a formal grammar with semantic information processing. Semantic information is stored in attributes associated with terminal and nonterminal symbols of the grammar. The values of attributes are the result of attribute evaluation rules associated with productions of the grammar. Attributes allow the transfer of information from anywhere in the abstract syntax tree to anywhere else, in a controlled and formal way. Each semantic function deals with attributes of symbols occurring only in one production rule: both semantic function parameters and its result are attributes of symbols from one particular rule. When a semantic function defines the value of an attribute of the symbol on the left hand side of the rule, the attribute is called synthesized; otherwise it is called inherited. Thus, synthesized attributes serve to pass semantic information up the parse tree, while inherited attributes allow values to be passed from the parent nodes down and across the syntax tree. In simple applications, such as evaluation of arithmetic expressions, attribute grammar may be used to describe the entire task to be performed besides parsing in straightforward way; in complicated systems, for instance, when constructing a language translation tool, such as a compiler, it may be used to validate semantic checks associated with a grammar, representing the rules of a language not explicitly imparted by the syntax definition. It may be also used by parsers or compilers to translate the syntax tree directly into code for some specific machine, or into some intermediate language.
Тарих
Атрибут грамматикасын Дональд Кнут пен Питер Вегнер ойлап тапты. Дональд Кнут жалпы тұжырымдаманың авторы болса, Питер Вегнер Кнутпен әңгімелескен кезде мұрагерлік атрибуттарды ойлап тапты. Алғашқы идеялардың кейбіреулері IMP авторына қатысты.
Attribute grammars were invented by Donald Knuth and Peter Wegner. While Donald Knuth is credited for the overall concept, Peter Wegner invented inherited attributes during a conversation with Knuth. Some embryonic ideas trace back the author of IMP.