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

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

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

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

Íî òîãäà äëÿ ëþáîãî i > 0 àâòîìàò ìîæåò ïðîäåëàòü ïîñëåäîâàòåëüíîñòü òàêòîâ (q0 , xyz) `∗ (q1 , y i z) `+(q1 , y i−1 z) ...`+ (q1 , yz)`+ (q1 , z)`∗ (q2 , e)Òàêèì îáðàçîì, xy i z ∈ L äëÿ âñåõ i > 1. Ñëó÷àé i = 0òî åñòü xy ∈ L òàêæå î÷åâèäåí.Ñ ïîìîùüþ ëåììû î ðàçðàñòàíèè ìîæíî ïîêàçàòü, ÷òîíå ÿâëÿåòñÿ ðåãóëÿðíûì ìíîæåñòâîì ÿçûê L={0n 1n |n > 1}.Äîïóñòèì, ÷òî L ðåãóëÿðåí. Òîãäà äëÿ äîñòàòî÷íî áîëüøîãî n 0n 1n ìîæíî ïðåäñòàâèòü â âèäå xyz , ïðè÷¼ì y 6= eè xy i z ∈ L äëÿ âñåõ i > 0.

Åñëè y ∈ 0+ èëè y ∈ 1+ , òîxz = xy 0 z ∈/ L. Åñëè y ∈ 0+ 1+ , òî xyyz ∈/ L. Ïîëó÷èëè ïðîòèâîðå÷èå. Ñëåäîâàòåëüíî, L íå ìîæåò áûòü ðåãóëÿðíûììíîæåñòâîì.3.5. Ïðîãðàììèðîâàíèå ëåêñè÷åñêîãî àíàëèçàÊàê óæå îòìå÷àëîñü ðàíåå, ëåêñè÷åñêèé àíàëèçàòîð(ËÀ) ìîæåò áûòü îôîðìëåí êàê ïîäïðîãðàììà. Ïðè îáðàùåíèè ê ËÀ, âûðàáàòûâàþòñÿ êàê ìèíèìóì äâà ðåçóëüòàòà:òèï âûáðàííîé ëåêñåìû è å¼ çíà÷åíèå (åñëè îíî åñòü).Åñëè ËÀ ñàì ôîðìèðóåò òàáëèöû îáúåêòîâ, îí âûäà¼ò òèï ëåêñåìû è óêàçàòåëü íà ñîîòâåòñòâóþùèé âõîä âòàáëèöå îáúåêòîâ.

Åñëè æå ËÀ íå ðàáîòàåò ñ òàáëèöàìè3.5. Ïðîãðàììèðîâàíèå ëåêñè÷åñêîãî àíàëèçà71îáúåêòîâ, îí âûäà¼ò òèï ëåêñåìû, à å¼ çíà÷åíèå ïåðåäà¼òñÿ, íàïðèìåð, ÷åðåç íåêîòîðóþ ãëîáàëüíóþ ïåðåìåííóþ.Ïîìèìî çíà÷åíèÿ ëåêñåìû, ýòà ãëîáàëüíàÿ ïåðåìåííàÿ ìîæåò ñîäåðæàòü íåêîòîðóþ äîïîëíèòåëüíóþ èíôîðìàöèþ:íîìåð òåêóùåé ñòðîêè, íîìåð ñèìâîëà â ñòðîêå è ò.ä. Ýòàèíôîðìàöèÿ ìîæåò èñïîëüçîâàòüñÿ â ðàçëè÷íûõ öåëÿõ, íàïðèìåð, äëÿ äèàãíîñòèêè. îñíîâå ËÀ ëåæèò äèàãðàììà ïåðåõîäîâ ñîîòâåòñòâóþùåãî êîíå÷íîãî àâòîìàòà.

Îòäåëüíàÿ ïðîáëåìà çäåñü àíàëèç êëþ÷åâûõ ñëîâ. Êàê ïðàâèëî, êëþ÷åâûå ñëîâà ýòî âûäåëåííûå èäåíòèôèêàòîðû. Ïîýòîìó âîçìîæíû äâàîñíîâíûõ ñïîñîáà ðàñïîçíàâàíèÿ êëþ÷åâûõ ñëîâ: ëèáî î÷åðåäíàÿ ëåêñåìà ñíà÷àëà äèàãíîñòèðóåòñÿ íà ñîâïàäåíèå ñêàêèì-ëèáî êëþ÷åâûì ñëîâîì è â ñëó÷àå íåóñïåõà äåëàåòñÿ ïîïûòêà âûäåëèòü ëåêñåìó èç êàêîãî-ëèáî êëàññà, ëèáî,íàîáîðîò, ïîñëå âûáîðêè ëåêñåìû èäåíòèôèêàòîðà ïðîèñõîäèò îáðàùåíèå ê òàáëèöå êëþ÷åâûõ ñëîâ íà ïðåäìåò ñðàâíåíèÿ. Ïîäðîáíåå î ìåõàíèçìàõ ïîèñêà â òàáëèöàõ áóäåòñêàçàíî íèæå (ãë.

7), çäåñü îòìåòèì òîëüêî, ÷òî ïîèñê êëþ÷åâûõ ñëîâ ìîæåò âåñòèñü ëèáî â îñíîâíîé òàáëèöå èì¼íè â ýòîì ñëó÷àå â íå¼ äî íà÷àëà ðàáîòû ËÀ çàãðóæàþòñÿ êëþ÷åâûå ñëîâà, ëèáî â îòäåëüíîé òàáëèöå. Ïðè ïåðâîìñïîñîáå âñå êëþ÷åâûå ñëîâà íåïîñðåäñòâåííî âñòðàèâàþòñÿ â êîíå÷íûé àâòîìàò ËÀ, âî âòîðîì êîíå÷íûé àâòîìàòñîäåðæèò òîëüêî ðàçáîð èäåíòèôèêàòîðîâ. íåêîòîðûõ ÿçûêàõ (íàïðèìåð, ÏË/1 èëè Ôîðòðàí)êëþ÷åâûå ñëîâà ìîãóò èñïîëüçîâàòüñÿ â êà÷åñòâå îáû÷íûõèäåíòèôèêàòîðîâ.  ýòîì ñëó÷àå ðàáîòà ËÀ íå ìîæåò èäòè íåçàâèñèìî îò ðàáîòû ñèíòàêñè÷åñêîãî àíàëèçàòîðà. ÂÔîðòðàíå âîçìîæíû, íàïðèìåð, ñëåäóþùèå ñòðîêè:DO 10 I=1,25DO 10 I=1.25 ïåðâîì ñëó÷àå ñòðîêà ýòî çàãîëîâîê öèêëà DO, âîâòîðîì îïåðàòîð ïðèñâàèâàíèÿ.

Ïîýòîìó, ïðåæäå ÷åììîæíî áóäåò âûäåëèòü ëåêñåìó, ËÀ äîëæåí çàãëÿíóòü äîâîëüíî äàëåêî.72Ãëàâà 3. Ëåêñè÷åñêèé àíàëèçÅù¼ ñëîæíåå äåëî â ÏË/1. Çäåñü âîçìîæíû òàêèå îïåðàòîðû:IF ELSE THEN ELSE = THEN; ELSE THEN = ELSE;èëèDECLARE (A1, A2, ... , AN)è òîëüêî â çàâèñèìîñòè îò òîãî, ÷òî ñòîèò ïîñëå ¾)¿, ìîæíî îïðåäåëèòü, ÿâëÿåòñÿ ëè DECLARE êëþ÷åâûì ñëîâîì èëèèäåíòèôèêàòîðîì. Äëèíà òàêîé ñòðîêè ìîæåò áûòü ñêîëüóãîäíî áîëüøîé è óæå íåâîçìîæíî îòäåëèòü ôàçó ñèíòàêñè÷åñêîãî àíàëèçà îò ôàçû ëåêñè÷åñêîãî àíàëèçà.Ðàññìîòðèì íåñêîëüêî ïîäðîáíåå âîïðîñû ïðîãðàììèðîâàíèÿ ËÀ. Îñíîâíàÿ îïåðàöèÿ ËÀ, íà êîòîðóþ óõîäèòáîëüøàÿ ÷àñòü âðåìåíè åãî ðàáîòû ýòî âçÿòèå î÷åðåäíîãî ñèìâîëà è ïðîâåðêà íà ïðèíàäëåæíîñòü åãî íåêîòîðîìóäèàïàçîíó. Íàïðèìåð, îñíîâíîé öèêë ïðè âûáîðêå ÷èñëà âïðîñòåéøåì ñëó÷àå ìîæåò âûãëÿäåòü ñëåäóþùèì îáðàçîì:while (Insym<='9' && Insym>='0'){ ...

}Ïðîãðàììó ìîæíî çíà÷èòåëüíî óëó÷øèòü ñëåäóþùèìîáðàçîì [5]. Ïóñòü LETTER, DIGIT, BLANK ýëåìåíòû ïåðå÷èñëèìîãî òèïà. Ââåä¼ì ìàññèâ map, âõîäàìè êîòîðîãîáóäóò ñèìâîëû, çíà÷åíèÿìè òèïû ñèìâîëîâ. Èíèöèàëèçèðóåì ìàññèâ map ñëåäóþùèì îáðàçîì:map['a']=LETTER;........map['z']=LETTER;map['0']=DIGIT;........map['9']=DIGIT;map[' ']=BLANK;........3.5.

Ïðîãðàììèðîâàíèå ëåêñè÷åñêîãî àíàëèçà73Òîãäà ïðèâåä¼ííûé öèêë ïðèìåò ñëåäóþùóþ ôîðìó:while (map[Insym]==DIGIT){ ... }Âûäåëåíèå êëþ÷åâûõ ñëîâ ìîæåò îñóùåñòâëÿòüñÿ ïîñëåâûäåëåíèÿ èäåíòèôèêàòîðîâ. ËÀ ðàáîòàåò áûñòðåå, åñëèêëþ÷åâûå ñëîâà âûäåëÿþòñÿ íåïîñðåäñòâåííî.Äëÿ ýòîãî ñòðîèòñÿ êîíå÷íûé àâòîìàò, îïèñûâàþùèéìíîæåñòâî êëþ÷åâûõ ñëîâ. Íà ðèñ. 3.17 ïðèâåä¼í ôðàãìåíòòàêîãî àâòîìàòà.Ðàññìîòðèì ïðèìåð ïðîãðàììèðîâàíèÿ ýòîãî êîíå÷íîãîàâòîìàòà íà ÿçûêå Ñè, ïðèâåä¼ííûé â [17]: IL;md\ZbebpbnjZQDexq_\h_keh\hLIB^_glbnbdZlhjG_Ibg_QG_WWG_[md\Zbg_pbnjZ;md\ZbebpbnjZG_[md\Zbg_pbnjZDexq_\h_keh\hLQWÐèñ.

3.17.........case 'i':if (cp[0]=='f' &&!(map[cp[2]] & (DIGIT | LETTER))){cp++; return IF;}if (cp[0]=='n' && cp[1]=='t'&&!(map[cp] & (DIGIT | LETTER))){cp+=2; return INT;}{ îáðàáîòêà èäåíòèôèêàòîðà }........74Ãëàâà 3. Ëåêñè÷åñêèé àíàëèçÇäåñü cp óêàçàòåëü òåêóùåãî ñèìâîëà.  ìàññèâå mapêëàññû ñèìâîëîâ êîäèðóþòñÿ áèòàìè.Ïîñêîëüêó ËÀ àíàëèçèðóåò êàæäûé ñèìâîë âõîäíîãîïîòîêà, åãî ñêîðîñòü ñóùåñòâåííî çàâèñèò îò ñêîðîñòè âûáîðêè î÷åðåäíîãî ñèìâîëà âõîäíîãî ïîòîêà.  ñâîþ î÷åðåäü, ýòà ñêîðîñòü âî ìíîãîì îïðåäåëÿåòñÿ ñõåìîé áóôåðèçàöèè.

Ðàññìîòðèì âîçìîæíûå ýôôåêòèâíûå ñõåìû áóôåðèçàöèè.1111HRI HRIIjh^\b`_gb_Ijh^\b`_gb_GZqZehGZqZehZ[Ðèñ. 3.18.Áóäåì èñïîëüçîâàòü áóôåð, ñîñòîÿùèé èç äâóõ îäèíàêîâûõ ÷àñòåé äëèíû N (ðèñ. 3.18, à), ãäå N ðàçìåð áëîêà îáìåíà (íàïðèìåð, 1024, 2048 è ò.ä.). ×òîáû íå ÷èòàòüêàæäûé ñèìâîë îòäåëüíî, â êàæäóþ èç ïîëîâèí áóôåðà ïîî÷åðåäíî îäíîé êîìàíäîé ÷òåíèÿ ñ÷èòûâàåòñÿ N ñèìâîëîâ.Åñëè íà âõîäå îñòàëîñü ìåíüøå N ñèìâîëîâ, â áóôåð ïîìåùàåòñÿ ñïåöèàëüíûé ñèìâîë (eof).

Íà áóôåð óêàçûâàþòäâà óêàçàòåëÿ: ïðîäâèæåíèå è íà÷àëî. Ìåæäó óêàçàòåëÿìè ðàçìåùàåòñÿ òåêóùàÿ ëåêñåìà. Âíà÷àëå îíè îáà óêàçûâàþò íà ïåðâûé ñèìâîë âûäåëÿåìîé ëåêñåìû. Îäèí èçíèõ, ïðîäâèæåíèå, ïðîäâèãàåòñÿ âïåð¼ä, ïîêà íå áóäåò âûäåëåíà ëåêñåìà, è óñòàíàâëèâàåòñÿ íà å¼ êîíåö. Ïîñëå îáðàáîòêè ëåêñåìû îáà óêàçàòåëÿ óñòàíàâëèâàþòñÿ íà ñèìâîë, ñëåäóþùèé çà ëåêñåìîé.

Åñëè óêàçàòåëü ïðîäâèæåíèåïåðåõîäèò ñåðåäèíó áóôåðà, ïðàâàÿ ïîëîâèíà çàïîëíÿåòñÿíîâûìè N ñèìâîëàìè. Åñëè óêàçàòåëü ïðîäâèæåíèå ïåðåõîäèò ïðàâóþ ãðàíèöó áóôåðà, ëåâàÿ ïîëîâèíà çàïîëíÿåòñÿN ñèìâîëàìè è óêàçàòåëü ïðîäâèæåíèå óñòàíàâëèâàåòñÿ íà3.6. Êîíñòðóêòîð ëåêñè÷åñêèõ àíàëèçàòîðîâ LEX75íà÷àëî áóôåðà.Ïðè êàæäîì ïðîäâèæåíèè óêàçàòåëÿ íåîáõîäèìî ïðîâåðÿòü, íå äîñòèãëè ëè ìû ãðàíèöû îäíîé èç ïîëîâèí áóôåðà.

Äëÿ âñåõ ñèìâîëîâ, êðîìå ëåæàùèõ â êîíöå ïîëîâèíáóôåðà, òðåáóþòñÿ äâå ïðîâåðêè. ×èñëî ïðîâåðîê ìîæíîñâåñòè ê îäíîé, åñëè â êîíöå êàæäîé ïîëîâèíû ïîìåñòèòüäîïîëíèòåëüíûé ¾ñòîðîæåâîé¿ ñèìâîë, â êà÷åñòâå êîòîðîãîëîãè÷íî âçÿòü eof (ðèñ. 3.18, á). ýòîì ñëó÷àå ïî÷òè äëÿ âñåõ ñèìâîëîâ äåëàåòñÿ åäèíñòâåííàÿ ïðîâåðêà íà ñîâïàäåíèå ñ eof è òîëüêî â ñëó÷àåñîâïàäåíèÿ íóæíî äîïîëíèòåëüíî ïðîâåðèòü, äîñòèãëè ëèìû ñåðåäèíû èëè ïðàâîãî êîíöà.3.6. Êîíñòðóêòîð ëåêñè÷åñêèõ àíàëèçàòîðîâ LEXÄëÿ àâòîìàòèçàöèè ðàçðàáîòêè ËÀ áûëî ñîçäàíî äîâîëüíî ìíîãî ñðåäñòâ. Êàê ïðàâèëî, âõîäíûì ÿçûêîì äëÿíèõ ñëóæàò èëè ïðàâîëèíåéíûå ãðàììàòèêè, èëè ÿçûê ðåãóëÿðíûõ âûðàæåíèé.

Îäíîé èç íàèáîëåå ðàñïðîñòðàí¼ííûõ ñèñòåì ÿâëÿåòñÿ LEX, ðàáîòàþùèé ñ ðàñøèðåííûìè ðåãóëÿðíûìè âûðàæåíèÿìè. LEX-ïðîãðàììà ñîñòîèò èçòð¼õ ÷àñòåé:Îáúÿâëåíèÿ%%Ïðàâèëà òðàíñëÿöèè%%Âñïîìîãàòåëüíûå ïîäïðîãðàììûÑåêöèÿ îáúÿâëåíèé âêëþ÷àåò îáúÿâëåíèÿ ïåðåìåííûõ,êîíñòàíò è îïðåäåëåíèÿ ðåãóëÿðíûõ âûðàæåíèé. Ïðè îïðåäåëåíèè ðåãóëÿðíûõ âûðàæåíèé ìîãóò èñïîëüçîâàòüñÿ ñëåäóþùèå êîíñòðóêöèè:76Ãëàâà 3. Ëåêñè÷åñêèé àíàëèç[abc][a-z]R*R+R1/R2R1|R2R?R$^R[^R]R{n,m}{èìÿ}(R) ëèáî a, ëèáî b, ëèáî c; äèàïàçîí ñèìâîëîâ; 0 èëè áîëåå ïîâòîðåíèé ðåãóëÿðíîãîâûðàæåíèÿ R; 1 èëè áîëåå ïîâòîðåíèé ðåãóëÿðíîãîâûðàæåíèÿ R; R1 , åñëè çà íèì ñëåäóåò R2 ; ëèáî R1 , ëèáî R2 ; åñëè åñòü R, âûáðàòü åãî; âûáðàòü R, åñëè îíî ïîñëåäíåå â ñòðîêå; âûáðàòü R, åñëè îíî ïåðâîå â ñòðîêå; äîïîëíåíèå ê R; ïîâòîðåíèå R îò n äî m ðàç; èìåíîâàííîå ðåãóëÿðíîå âûðàæåíèå; ãðóïïèðîâêà.Ïðàâèëà òðàíñëÿöèè LEXïðîãðàìì èìåþò âèäp_1 { äåéñòâèå_1 }p_2 { äåéñòâèå_2 }................p_n { äåéñòâèå_n }ãäå p_i ðåãóëÿðíîå âûðàæåíèå, à äåéñòâèå_i ôðàãìåíòïðîãðàììû, îïèñûâàþùèé, êàêîå äåéñòâèå äîëæåí ñäåëàòüËÀ, êîãäà îáðàçåö p_i ñîïîñòàâëÿåòñÿ ëåêñåìå.

 LEX äåéñòâèÿ çàïèñûâàþòñÿ íà Ñè.Òðåòüÿ ñåêöèÿ ñîäåðæèò âñïîìîãàòåëüíûå ïðîöåäóðû,íåîáõîäèìûå äëÿ äåéñòâèé. Ýòè ïðîöåäóðû ìîãóò òðàíñëèðîâàòüñÿ ðàçäåëüíî è çàãðóæàòüñÿ ñ ËÀ.ËÀ, ñãåíåðèðîâàííûé LEX, âçàèìîäåéñòâóåò ñ ñèíòàêñè÷åñêèì àíàëèçàòîðîì ñëåäóþùèì îáðàçîì. Ïðè âûçîâååãî ñèíòàêñè÷åñêèì àíàëèçàòîðîì ËÀ ïîñèìâîëüíî ÷èòàåòîñòàòîê âõîäà, ïîêà íå íàõîäèò ñàìûé äëèííûé ïðåôèêñ,êîòîðûé ìîæåò áûòü ñîïîñòàâëåí îäíîìó èç ðåãóëÿðíûõâûðàæåíèé p_i.

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

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

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