Главная » Просмотр файлов » В.А. Серебряков, М.П. Галочкин и др. - Теория и реализация языков программирования (2006)

В.А. Серебряков, М.П. Галочкин и др. - Теория и реализация языков программирования (2006) (1134633), страница 22

Файл №1134633 В.А. Серебряков, М.П. Галочкин и др. - Теория и реализация языков программирования (2006) (В.А. Серебряков, М.П. Галочкин и др. - Теория и реализация языков программирования (2006)) 22 страницаВ.А. Серебряков, М.П. Галочкин и др. - Теория и реализация языков программирования (2006) (1134633) страница 222019-05-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 22)

 êà÷åñòâå ïðèìåðà ðàññìîòðèì ðåàëèçàöèþ àòðèáóòíîé ãðàììàòèêè èçïðèìåðà 5.5 (íåòðóäíî âèäåòü, ÷òî ãðàììàòèêà ÿâëÿåòñÿ Làòðèáóòíîé).148Ãëàâà 5. Ýëåìåíòû òåîðèè ïåðåâîäàvoid int_part(float * V0, int * P0){if (Map[InSym]==Digit){ int I=InSym;float V2;int P2;InSym=getInSym();int_part(&V2,&P2);*V0=I*exp(P2*ln(10))+V2;*P0=P2+1;}else {*V0=0;*P0=0;}}void fract_part(float * V0, int P0){if (Map[InSym]==Digit){ int I=InSym;float V2;int P2=P0+1;InSym=getInSym();fract_part(&V2,P2);*V0=I*exp(-P0*ln(10))+V2;}else {*V0=0;}}void number(){ float V1,V3,V0;int P;int_part(&V1,&P);if (InSym!='.') error();fract_part(&V3,1);V0=V1+V3;}5.3.

Àòðèáóòíûå ãðàììàòèêè1495.3.3. ßçûê îïèñàíèÿ àòðèáóòíûõ ãðàììàòèêÔîðìàëèçì àòðèáóòíûõ ãðàììàòèê îêàçàëñÿ î÷åíüóäîáíûì ñðåäñòâîì äëÿ îïèñàíèÿ ñåìàíòèêè ÿçûêîâ ïðîãðàììèðîâàíèÿ. Âìåñòå ñ òåì âûÿñíèëîñü, ÷òî ðåàëèçàöèÿ âû÷èñëèòåëåé äëÿ àòðèáóòíûõ ãðàììàòèê îáùåãî âèäàñòàëêèâàåòñÿ ñ áîëüøèìè òðóäíîñòÿìè.  ñâÿçè ñ ýòèì áûëî ñäåëàíî ìíîæåñòâî ïîïûòîê ðàññìàòðèâàòü òå èëè èíûåêëàññû àòðèáóòíûõ ãðàììàòèê, îáëàäàþùèõ ¾õîðîøèìè¿ñâîéñòâàìè. Ê ÷èñëó òàêèõ ñâîéñòâ îòíîñÿòñÿ ïðåæäå âñåãîïðîñòîòà àëãîðèòìà ïðîâåðêè àòðèáóòíîé ãðàììàòèêè íàçàöèêëåííîñòü è ïðîñòîòà àëãîðèòìà âû÷èñëåíèÿ àòðèáóòîâ äëÿ àòðèáóòíûõ ãðàììàòèê äàííîãî êëàññà.Àòðèáóòíûå ãðàììàòèêè èñïîëüçîâàëèñü äëÿ îïèñàíèÿ ñåìàíòèêè ÿçûêîâ ïðîãðàììèðîâàíèÿ è áûëî ñîçäàíîíåñêîëüêî ñèñòåì àâòîìàòèçàöèè ðàçðàáîòêè òðàíñëÿòîðîâ,îñíîâàííûõ íà ôîðìàëèçìå àòðèáóòíûõ ãðàììàòèê.

Îïûòèõ èñïîëüçîâàíèÿ ïîêàçàë, ÷òî ¾÷èñòûé¿ àòðèáóòíûé ôîðìàëèçì ìîæåò áûòü óñïåøíî ïðèìåí¼í äëÿ îïèñàíèÿ ñåìàíòèêè ÿçûêà, íî åãî èñïîëüçîâàíèå âûçûâàåò òðóäíîñòèïðè ñîçäàíèè òðàíñëÿòîðà. Ýòè òðóäíîñòè ñâÿçàíû êàê ññàìèì ôîðìàëèçìîì, òàê è ñ íåêîòîðûìè òåõíîëîãè÷åñêèìè ïðîáëåìàìè. Ê òðóäíîñòÿì ïåðâîãî ðîäà ìîæíî îòíåñòèíåñîîòâåòñòâèå ÷èñòî ôóíêöèîíàëüíîé ïðèðîäû àòðèáóòíîãî âû÷èñëèòåëÿ è ñâÿçàííîé ñ íåé íåóïîðÿäî÷åííîñòüþïðîöåññà âû÷èñëåíèÿ àòðèáóòîâ (÷òî â çíà÷èòåëüíîé ñòåïåíè ÿâëÿåòñÿ ïðåèìóùåñòâîì ýòîãî ôîðìàëèçìà) è óïîðÿäî÷åííîñòüþ ýëåìåíòîâ ïðîãðàììû.

Ýòî íåñîîòâåòñòâèåâåä¼ò ê òîìó, ÷òî ïðèõîäèòñÿ èäòè íà èñêóññòâåííûå ïðè¼ìû äëÿ èõ ñî÷åòàíèÿ. Òåõíîëîãè÷åñêèå òðóäíîñòè ñâÿçàíûñ ýôôåêòèâíîñòüþ òðàíñëÿòîðîâ, ïîëó÷åííûõ ñ ïîìîùüþàòðèáóòíûõ ñèñòåì. Êàê ïðàâèëî, êà÷åñòâî òàêèõ òðàíñëÿòîðîâ äîâîëüíî íèçêî èç-çà áîëüøèõ ðàñõîäîâ ïàìÿòè,íåýôôåêòèâíîñòè èñêóññòâåííûõ ïðè¼ìîâ, î êîòîðûõ áûëîñêàçàíî âûøå.Ó÷èòûâàÿ ýòî, ìû áóäåì âåñòè äàëüíåéøåå èçëîæåíèåíà ÿçûêå, ñî÷åòàþùåì îñîáåííîñòè àòðèáóòíîãî ôîðìàëèç-150Ãëàâà 5.

Ýëåìåíòû òåîðèè ïåðåâîäàìà è îáû÷íîãî ÿçûêà ïðîãðàììèðîâàíèÿ, â êîòîðîì ïðåäïîëàãàåòñÿ íàëè÷èå îïåðàòîðîâ, à çíà÷èò, è âîçìîæíîñòüóïðàâëåíèÿ ïîðÿäêîì èñïîëíåíèÿ îïåðàòîðîâ. Ýòîò ïîðÿäîê ìîæåò áûòü ïðèâÿçàí ê îáõîäó àòðèáóòèðîâàííîãî äåðåâà ðàçáîðà ñâåðõó âíèç ñëåâà íàïðàâî. ×òî êàñàåòñÿ ãðàììàòèêè âõîäíîãî ÿçûêà, òî ìû íå áóäåì ïðåäïîëàãàòü ïðèíàäëåæíîñòü å¼ îïðåäåë¼ííîìó êëàññó (íàïðèìåð, LL(1)èëè LR(1)). Áóäåì ñ÷èòàòü, ÷òî äåðåâî ðàçáîðà âõîäíîéïðîãðàììû óæå ïîñòðîåíî êàê ðåçóëüòàò ñèíòàêñè÷åñêîãî àíàëèçà è àòðèáóòíûå âû÷èñëåíèÿ îñóùåñòâëÿþòñÿ âðåçóëüòàòå îáõîäà ýòîãî äåðåâà. Òàêèì îáðàçîì, âõîäíàÿãðàììàòèêà àòðèáóòíîãî âû÷èñëèòåëÿ ìîæåò áûòü äàæåíåîäíîçíà÷íîé, ÷òî íå âëèÿåò íà ïðîöåññ àòðèáóòíûõ âû÷èñëåíèé.Ïðè çàïèñè ñèíòàêñèñà ìû áóäåì èñïîëüçîâàòü ðàñøèðåííóþ ÁÍÔ.

Ýëåìåíò ïðàâîé ÷àñòè ñèíòàêñè÷åñêîãî ïðàâèëà, çàêëþ÷¼ííûé â ñêîáêè [ ], ìîæåò îòñóòñòâîâàòü.Ýëåìåíò ïðàâîé ÷àñòè ñèíòàêñè÷åñêîãî ïðàâèëà, çàêëþ÷¼ííûé â ñêîáêè ( ), îçíà÷àåò âîçìîæíîñòü ïîâòîðåíèÿ îäèíèëè áîëåå ðàç. Ýëåìåíò ïðàâîé ÷àñòè ñèíòàêñè÷åñêîãî ïðàâèëà, çàêëþ÷¼ííûé â ñêîáêè [()], îçíà÷àåò âîçìîæíîñòüïîâòîðåíèÿ íîëü èëè áîëåå ðàç.

 ñêîáêàõ [ ] èëè [()]ìîæåò óêàçûâàòüñÿ ðàçäåëèòåëü êîíñòðóêöèé.Íèæå äàí ñèíòàêñèñ ÿçûêà îïèñàíèÿ àòðèáóòíûõ ãðàììàòèê. Ïðèâåä¼í òîëüêî ñèíòàêñèñ êîíñòðóêöèé, ñîáñòâåííî îïèñûâàþùèõ àòðèáóòíûå âû÷èñëåíèÿ. Ñèíòàêñèñ îáû÷íûõ âûðàæåíèé è îïåðàòîðîâ íå ïðèâîäèòñÿ îí îñíîâûâàåòñÿ íà Ñè.Àòðèáóòíàÿ ãðàììàòèêà::='ALPHABET'( ÎïèñàíèåÍåòåðìèíàëà ) ( Ïðàâèëî )ÎïèñàíèåÍåòåðìèíàëà::=ÈìÿÍåòåðìèíàëà'::' [( ÎïèñàíèåÀòðèáóòîâ / ';')]'.'ÎïèñàíèåÀòðèáóòîâ::=Òèï ( ÈìÿÀòðèáóòà / ',')Ïðàâèëî::='RULE' Ñèíòàêñèñ 'SEMANTICS' Ñåìàíòèêà'.'Ñèíòàêñèñ::=ÈìÿÍåòåðìèíàëà '::=' Ïðàâàÿ×àñòüÏðàâàÿ×àñòü::=[( ÝëåìåíòÏðàâîé×àñòè )]ÝëåìåíòÏðàâîé×àñòè::=ÈìÿÍåòåðìèíàëà5.3.

Àòðèáóòíûå ãðàììàòèêè151| Òåðìèíàë| '(' Íåòåðìèíàë [ '/' Òåðìèíàë ] ')'| '[' Íåòåðìèíàë ']'| '[(' Íåòåðìèíàë [ '/' Òåðìèíàë ] ')]'Ñåìàíòèêà::=[(ËîêàëüíîåÎáúÿâëåíèå / ';')][( Ñåìàíòè÷åñêîåÄåéñòâèå / ';')]Ñåìàíòè÷åñêîåÄåéñòâèå::=Ïðèñâàèâàíèå| [ Ìåòêà ] ÎïåðàòîðÏðèñâàèâàíèå::=Ïåðåìåííàÿ ':=' ÂûðàæåíèåÏåðåìåííàÿ::=ËîêàëüíàÿÏåðåìåííàÿ| ÀòðèáóòÀòðèáóò::=ËîêàëüíûéÀòðèáóò| ÃëîáàëüíûéÀòðèáóòËîêàëüíûéÀòðèáóò::=ÈìÿÀòðèáóòà '<' Íîìåð '>'ÃëîáàëüíûéÀòðèáóò::=ÈìÿÀòðèáóòà '<' Íåòåðìèíàë '>'Ìåòêà::=Öåëîå ':'| Öåëîå 'Å' ':'| Öåëîå 'À' ':'Îïåðàòîð::=Óñëîâíûé|ÎïåðàòîðÏðîöåäóðû|ÖèêëÏîÌíîæåñòâó|ÏðîñòîéÖèêë|ÖèêëÑÓñëîâèåìÎêîí÷àíèÿÎïèñàíèå àòðèáóòíîé ãðàììàòèêè ñîñòîèò èç ðàçäåëàîïèñàíèÿ àòðèáóòîâ è ðàçäåëà ïðàâèë.

Ðàçäåë îïèñàíèÿàòðèáóòîâ îïðåäåëÿåò ñîñòàâ àòðèáóòîâ äëÿ êàæäîãî ñèìâîëà ãðàììàòèêè è òèï êàæäîãî àòðèáóòà. Ïðàâèëà ñîñòîÿò èç ñèíòàêñè÷åñêîé è ñåìàíòè÷åñêîé ÷àñòè.  ñèíòàêñè÷åñêîé ÷àñòè èñïîëüçóåòñÿ ðàñøèðåííàÿ ÁÍÔ. Ñåìàíòè÷åñêàÿ ÷àñòü ïðàâèëà ñîñòîèò èç ëîêàëüíûõ îáúÿâëåíèé è ñåìàíòè÷åñêèõ äåéñòâèé.  êà÷åñòâå ñåìàíòè÷åñêèõ äåéñòâèéäîïóñêàþòñÿ êàê àòðèáóòíûå ïðèñâàèâàíèÿ, òàê è ñîñòàâíûå îïåðàòîðû.Ìåòêà â ñåìàíòè÷åñêîé ÷àñòè ïðàâèëà ïðèâÿçûâàåò âûïîëíåíèå îïåðàòîðà ê îáõîäó äåðåâà ðàçáîðà ñâåðõó-âíèçñëåâà íàïðàâî.

Êîíñòðóêöèÿ i : îïåðàòîð îçíà÷àåò, ÷òîîïåðàòîð äîëæåí áûòü âûïîëíåí ñðàçó ïîñëå îáõîäà i-é152Ãëàâà 5. Ýëåìåíòû òåîðèè ïåðåâîäàêîìïîíåíòû ïðàâîé ÷àñòè. Êîíñòðóêöèÿ i E : îïåðàòîðîçíà÷àåò, ÷òî îïåðàòîð äîëæåí áûòü âûïîëíåí, òîëüêî åñëèïîðîæäåíèå i-é êîìïîíåíòû ïðàâîé ÷àñòè ïóñòî. Êîíñòðóêöèÿ i A : îïåðàòîð îçíà÷àåò, ÷òî îïåðàòîð äîëæåí áûòüâûïîëíåí ïîñëå ðàçáîðà êàæäîãî ïîâòîðåíèÿ i-é êîìïîíåíòû ïðàâîé ÷àñòè (èìååòñÿ â âèäó êîíñòðóêöèÿ ïîâòîðåíèÿ).Êàæäîå ïðàâèëî ìîæåò èìåòü ëîêàëüíûå îïðåäåëåíèÿ(òèïîâ è ïåðåìåííûõ).  ôîðìóëàõ èñïîëüçóþòñÿ êàê àòðèáóòû ñèìâîëîâ äàííîãî ïðàâèëà (ëîêàëüíûå àòðèáóòû) è âýòîì ñëó÷àå ñîîòâåòñòâóþùèå ñèìâîëû óêàçûâàþòñÿ íîìåðàìè â ïðàâèëå (0 äëÿ ñèìâîëà ëåâîé ÷àñòè, 1 äëÿïåðâîãî ñèìâîëà ïðàâîé ÷àñòè, 2 äëÿ âòîðîãî ñèìâîëàïðàâîé ÷àñòè è ò.ä.), òàê è àòðèáóòû ñèìâîëîâ ïðåäêîâ ëåâîé ÷àñòè ïðàâèëà (ãëîáàëüíûå àòðèáóòû).

 ýòîì ñëó÷àåñîîòâåòñòâóþùèé ñèìâîë óêàçûâàåòñÿ èìåíåì íåòåðìèíàëà. Òàêèì îáðàçîì, íà äåðåâå îáðàçóþòñÿ îáëàñòè âèäèìîñòè àòðèáóòîâ: àòðèáóò ñèìâîëà èìååò îáëàñòü âèäèìîñòè,ñîñòîÿùóþ èç ïðàâèëà, â êîòîðîå ñèìâîë âõîäèò â ïðàâóþ÷àñòü, ïëþñ âñ¼ ïîääåðåâî, êîðíåì êîòîðîãî ÿâëÿåòñÿ ñèìâîë, çà èñêëþ÷åíèåì ïîääåðåâüåâ ïîòîìêîâ òîãî æå ñèìâîëà â ýòîì ïîääåðåâå.Çíà÷åíèå òåðìèíàëüíîãî ñèìâîëà äîñòóïíî ÷åðåç àòðèáóò VAL ñîîòâåòñòâóþùåãî òèïà.Ïðèìåð 5.9.

Àòðèáóòíàÿ ãðàììàòèêà èç ïðèìåðà 5.5 çàïèñûâàåòñÿ ñëåäóþùèì îáðàçîì:ALPHABETNum:: float V.Int:: float V;int P.Frac :: float V;int P.digit :: int VAL.RULENum ::= Int '.' FracSEMANTICSV<0>=V<1>+V<3>; P<3>=1.5.3. Àòðèáóòíûå ãðàììàòèêèRULEInt ::= eSEMANTICSV<0>=0; P<0>=0.RULEInt ::= digit IntSEMANTICSV<0>=VAL<1>*10**P<2>+V<2>; P<0>=P<2>+1.RULEFrac ::= eSEMANTICSV<0>=0.RULEFrac ::= digit FracSEMANTICSV<0>=VAL<1>*10**(-P<0>)+V<2>; P<2>=P<0>+1.153Ãëàâà 6.Ïðîâåðêàêîíòåêñòíûõ óñëîâèé6.1. Îïèñàíèå îáëàñòåé âèäèìîñòè èáëî÷íîé ñòðóêòóðûÇàäà÷åé êîíòåêñòíîãî àíàëèçà ÿâëÿåòñÿ óñòàíîâëåíèåñâîéñòâ îáúåêòîâ è èõ èñïîëüçîâàíèÿ.

Íàèáîëåå ÷àñòî ðåøàåìîé çàäà÷åé ÿâëÿåòñÿ îïðåäåëåíèå ñóùåñòâîâàíèÿ îáúåêòà è ñîîòâåòñòâèÿ åãî èñïîëüçîâàíèÿ êîíòåêñòó, ÷òî îñóùåñòâëÿåòñÿ ñ ïîìîùüþ àíàëèçà òèïà îáúåêòà. Ïîä êîíòåêñòîì çäåñü ïîíèìàåòñÿ âñÿ ñîâîêóïíîñòü ñâîéñòâ òåêóùåéòî÷êè ïðîãðàììû, íàïðèìåð, ìíîæåñòâî äîñòóïíûõ îáúåêòîâ, òèï âûðàæåíèÿ è ò.ä.Òàêèì îáðàçîì, íåîáõîäèìî õðàíèòü îáúåêòû è èõ òèïû,óìåòü íàõîäèòü ýòè îáúåêòû è îïðåäåëÿòü èõ òèïû, îïðåäåëÿòü õàðàêòåðèñòèêè êîíòåêñòà. Ñîâîêóïíîñòü äîñòóïíûõ âäàííîé òî÷êå îáúåêòîâ áóäåì íàçûâàòü ñðåäîé. Îáû÷íî ñðåäà ïðîãðàììû ñîñòîèò èç ÷àñòè÷íî óïîðÿäî÷åííîãî íàáîðàêîìïîíåíòE = {DS1 , DS2 , .

. . , DSn }6.1. Îïèñàíèå îáëàñòåé âèäèìîñòè è áëî÷íîé ñòðóêòóðû155Dhjg_\Zydhfihg_glZijh]jZffZijhp_^mjZ[ehdijhp_^mjZ[ehdijhp_^mjZ[ehdÐèñ. 6.1.Êàæäàÿ êîìïîíåíòà ýòî ìíîæåñòâî îáúÿâëåíèé, ïðåäñòàâëÿþùèõ ñîáîé ïàðû (èìÿ, òèï):DSi = {(èìÿj , òèïj ) | 1 6 j 6 ki }ãäå ïîä òèïîì áóäåì ïîäðàçóìåâàòü ïîëíîå îïèñàíèåñâîéñòâ îáúåêòà (îáúåêòîì, â ÷àñòíîñòè, ìîæåò áûòü ñàìîîïèñàíèå òèïà).Êîìïîíåíòû îáðàçóþò äåðåâî, ñîîòâåòñòâóþùåå ýòîìó÷àñòè÷íîìó ïîðÿäêó. ×àñòè÷íûé ïîðÿäîê ìåæäó êîìïîíåíòàìè îáû÷íî îïðåäåëÿåòñÿ ñòàòè÷åñêîé âëîæåííîñòüþêîìïîíåíò â ïðîãðàììå.

Ýòà âëîæåííîñòü ìîæåò ñîîòâåòñòâîâàòü áëîêàì, ïðîöåäóðàì èëè êëàññàì ïðîãðàììû(ðèñ. 6.1). Êîìïîíåíòû ñðåäû ìîãóò áûòü èìåíîâàíû. Ïîèñê â ñðåäå îáû÷íî âåä¼òñÿ ñ ó÷¼òîì óïîðÿäî÷åííîñòè êîìïîíåíò. Ñðåäà ìîæåò âêëþ÷àòü â ñåáÿ êàê êîìïîíåíòû, ïîëó÷åííûå ïðè òðàíñëÿöèè ¾òåêóùåãî¿ òåêñòà ïðîãðàììû,òàê è ¾âíåøíèå¿ (íàïðèìåð, ðàçäåëüíî êîìïèëèðîâàííûå)êîìïîíåíòû.Äëÿ îáîçíà÷åíèÿ ó÷àñòêîâ ïðîãðàììû, â êîòîðûõ äîñòóïíû òå èëè èíûå îïèñàíèÿ, èñïîëüçóþòñÿ ïîíÿòèÿ îáëàñòè äåéñòâèÿ è îáëàñòè âèäèìîñòè.

Îáëàñòüþ äåéñòâèÿîïèñàíèÿ ÿâëÿåòñÿ ïðîöåäóðà (áëîê), ñîäåðæàùàÿ îïèñàíèå, ñî âñåìè âõîäÿùèìè â íå¼ (ïîä÷èí¼ííûìè ïî äåðåâó)ïðîöåäóðàìè (áëîêàìè). Îáëàñòüþ âèäèìîñòè îïèñàíèÿ íàçûâàåòñÿ ÷àñòü îáëàñòè äåéñòâèÿ, èç êîòîðîé èñêëþ÷åíû òå156Ãëàâà 6. Ïðîâåðêà êîíòåêñòíûõ óñëîâèéïîäîáëàñòè, â êîòîðûõ ïî òåì èëè èíûì ïðè÷èíàì îïèñàíèå íåäîñòóïíî, íàïðèìåð, îíî ïåðåêðûòî äðóãèì îïèñàíèåì.  ðàçíûõ ÿçûêàõ ïîíÿòèÿ îáëàñòè äåéñòâèÿ è îáëàñòèâèäèìîñòè óòî÷íÿþòñÿ ïî-ðàçíîìó.Îáû÷íûìè îïåðàöèÿìè ïðè ðàáîòå ñî ñðåäîé ÿâëÿþòñÿ: âêëþ÷èòü îáúåêò â êîìïîíåíòó ñðåäû; íàéòè îáúåêò â ñðåäå è ïîëó÷èòü äîñòóï ê åãî îïèñàíèþ; îáðàçîâàòü â ñðåäå íîâóþ êîìïîíåíòó, îïðåäåë¼ííûì îáðàçîì ñâÿçàííóþ ñ îñòàëüíûìè; óäàëèòü êîìïîíåíòó èç ñðåäû.Ñðåäà ñîñòîèò èç îòäåëüíûõ îáúåêòîâ, ðåàëèçóåìûõ êàêçàïèñè (â äàëüíåéøåì îïèñàíèè ìû áóäåì èñïîëüçîâàòüèìÿ TElement äëÿ èìåíè òèïà ýòîé çàïèñè).

Ñîñòàâ ïîëåéçàïèñè, âîîáùå ãîâîðÿ, çàâèñèò îò îïèñûâàåìîãî îáúåêòà(òèï, ïåðåìåííàÿ è ò.ä.), íî åñòü ïîëÿ, âõîäÿùèå â çàïèñüäëÿ ëþáîãî îáúåêòà:TObject Object êàòåãîðèÿ îáúåêòà (òèï, ïåðåìåííàÿ,ïðîöåäóðà è ò.ä.);TMode Mode âèä îáúåêòà: öåëûé, ìàññèâ, çàïèñü è ò.ä.;TName Name èìÿ îáúåêòà;TType Type óêàçàòåëü íà îïèñàíèå òèïà.6.2. Çàíåñåíèå â ñðåäó è ïîèñê îáúåêòîâÐàññìîòðèì ñõåìó ðåàëèçàöèè ïðîñòîé áëî÷íîé ñòðóêòóðû, àíàëîãè÷íîé ïðîöåäóðàì â Ïàñêàëå èëè áëîêàì â Ñè.Êàæäûé áëîê ìîæåò èìåòü ñâîé íàáîð îïèñàíèé. Ïðîãðàììà ñîñòîèò èç îñíîâíîãî èìåíîâàííîãî áëîêà, â êîòîðîìèìåþòñÿ îïèñàíèÿ è îïåðàòîðû.

Îïèñàíèÿ ñîñòîÿò èç îïèñàíèé òèïîâ è îáúÿâëåíèé ïåðåìåííûõ.  êà÷åñòâå òèïà ìîæåò èñïîëüçîâàòüñÿ öåëî÷èñëåííûé òèï è òèï ìàññèâà. Äâàòèïà T1 è T2 ñ÷èòàþòñÿ ýêâèâàëåíòíûìè, åñëè èìååòñÿ îïèñàíèå T1=T2 (èëè T2=T1). Îïåðàòîðàìè ñëóæàò îïåðàòîðûïðèñâàèâàíèÿ âèäà Ïåðåìåííàÿ1=Ïåðåìåííàÿ2 è áëîêè. Ïåðåìåííàÿ ýòî ëèáî ïðîñòî èäåíòèôèêàòîð, ëèáî âûáîðêà èç ìàññèâà. Îïåðàòîð ïðèñâàèâàíèÿ ñ÷èòàåòñÿ ïðàâèëü-6.2. Çàíåñåíèå â ñðåäó è ïîèñê îáúåêòîâ157íûì, åñëè òèïû ïåðåìåííûõ ëåâîé è ïðàâîé ÷àñòè ýêâèâàëåíòíû.

Ïðèìåðîì ïðàâèëüíîé ïðîãðàììû ìîæåò ñëóæèòüprogram Examplebegintype T1=array 100 of array 200 of integer;T2=T1;var V1:T1;V2:T2;beginV1=V2;V2[1]=V1[2];begintype T3=array 300 of T1;var V3:T3;V3[50]=V1;endendend.Ðàññìàòðèâàåìîå ïîäìíîæåñòâî ÿçûêà ìîæåò áûòü ïîðîæäåíî ñëåäóþùåé ãðàììàòèêîé (çàïèñü â ðàñøèðåííîéÁÍÔ):Prog::='program' Ident Block '.'Block::='begin' [(Declaration)] [(Statement)] 'end'Declaration::='type' (Type_Decl)Type_Decl::=Ident '=' Type_DefinType_Defin::='ARRAY' Index 'OF' Type_DefinType_Defin::=Type_UseType_Use::=IdentDeclaration::='var' (Var_Decl)Var_Decl::=Ident_List ':' Type_Use ';'Ident_List::=(Ident / ',')Statement::=Block ';'Statement::=Variable '=' Variable ';'Variable::=Ident AccessAccess::='[' Expression ']' AccessAccess::=158Ãëàâà 6.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее