Синтаксический анализ языка НОРМА. Разбор описания

  • Вид работы:
    Тип работы
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    71,39 kb
  • Опубликовано:
    2008-12-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Синтаксический анализ языка НОРМА. Разбор описания

ÌÎÑÊÎÂÑÊÈÉ ÃÎÑÓÄÀÐÑÒÂÅÍÍÛÉ ÈÍÆÅÍÅÐÍÎ-ÔÈÇÈ×ÅÑÊÈÉ ÈÍÑÒÈÒÓÒ

(ÒÅÕÍÈ×ÅÑÊÈÉ ÓÍÈÂÅÐÑÈÒÅÒ)

--------------------------------------------------------

Êàôåäðà 22

 

 

 

 

Ïîÿñíèòåëüíàÿ çàïèñêà ê

 

ÊÓÐÑÎÂÎÉ ÐÀÁÎÒÅ

 

íà òåìó

“Ðàçðàáîòêà ëåêñè÷åñêîãî àíàëèçàòîðà

äëÿ ÿçûêà ïðîãðàììèðîâàíèÿ Íîðìà”

 

 

ñòóäåíòêè ãðóïïû Ê7-01

 

Ïå÷¸íêèíîé Îëüãè Àëåêñàíäðîâíû

 

 

 

 

Íàó÷íûé ðóêîâîäèòåëü:

 

 

Êîìèññèÿ:

 

 

 

Îöåíêà:

 

 

Ìîñêâà 1995ã.

 

 

 1. ÂÂÅÄÅÍÈÅ

                Â ñîîòâåòñòâèè ñ çàäàíèåì íà ÓÈÐ è ÊÏ â äàííîì ñåìåñòðå ïåðåäî ìíîé áûëè ïîñòàâëåíû ñëåäóþùèå öåëè:

                - îçíàêîìèòüñÿ ñ ÿçûêîì ïðîãðàììèðîâàíèÿ Íîðìà è èçó÷èòü åãî;

                - èçó÷èòü ñòðóêòóðó òðàíñëÿòîðà ñ ÿçûêà ïðîãðàììèðîâàíèÿ Íîðìà;

                - îçíàêîìèòüñÿ ñ ìåòîäàìè ëåêñè÷åñêîãî àíàëèçà;

                - èçó÷èòü ñòðóêòóðó ëåêñè÷åñêîãî àíàëèçàòîðà;

                - ðàçðàáîòàòü ñòðóêòóðó äàííûõ äëÿ ðåàëèçàöèè ëåêñè÷åñêîãî àíàëèçàòîðà;

                - íàïèñàòü ôóíêöèþ, íà âõîä êîòîðîé ïîñòóïàåò ñïèñîê ëåêñåì, à íà âûõîäå - ñïèñîê ñïèñêîâ. Ýëåìåíòîì ýòîãî ñïèñêà ñïèñêîâ ÿâëÿåòñÿ ñïèñîê ëåêñåì, êîòîðûé ïðåäñòàâëÿåò ñîáîé îäíî ïðåäëîæåíèå ïðîãðàììû, íàïèñàííîé íà Íîðìå, îêàí÷èâàþùååñÿ òî÷êîé. Ò.å. ýòà ôóíêöèÿ “ðåæåò” ïîñòóïàþùèé íà âõîä ñïèñîê ëåêñåì ïî òî÷êàì.

 

 

2. Îáùàÿ õàðàêòåðèñòèêà ÿçûêà Íîðìà

                2.1 ßçûê ïðîãðàììèðîâàíèÿ Íîðìà.

                ßçûê ïðîãðàììèðîâàíèÿ Íîðìà ÿâëÿåòñÿ äåêëàðàòèâíûì (íåïðîöåäóðíûì) ÿçûêîì è ïðåäíàçíà÷åí äëÿ ñïåöèôèêàöèè çàäà÷ âû÷èñëèòåëüíîãî õàðàêòåðà.  ïðîöåññå òðàíñëÿöèè, ïîìèìî òðàäèöèîííûõ çàäà÷, íàïðèìåð, ñèíòàêñè÷åñêîãî, ñåìàíòè÷åñêîãî àíàëèçà, ðåøàåòñÿ çàäà÷à ñèíòåçà âûõîäíîé ïðîãðàììû, òî åñòü îïðåäåëåíèÿ ïîðÿäêà âû÷èñëåíèé è ñïîñîáà âû÷èñëåíèé ñ ó÷åòîì âîçìîæíîñòåé âûõîäíîãî ÿçûêà è àðõèòåêòóðû êîìïüþòåðà.

                ßçûê Íîðìà ÿâëÿåòñÿ ñïåöèëèçèðîâàííûì ÿçûêîì è ïðåäíàçíà÷åí äëÿ ñïåöèôèêàöèè ÷èñëåííûõ ìåòîäîâ ðåøåíèÿ çàäà÷ ìàòåìàòè÷åñêîé ôèçèêè. Èçíà÷àëüíî îí áûë îðèåíòèðîâàí íà ðåøåíèå çàäà÷ ìàòåìàòè÷åñêîé ôèçèêè ðàçíîñòíûìè ìåòîäàìè, îäíàêî ìîæåò áûòü èñïîëüçîâàí äëÿ ðåøåíèÿ áîëåå øèðîêîãî êëàññà âû÷èñëèòåëüíûõ çàäà÷.

                Òèïè÷íûé ïðîöåññ ðåøåíèÿ çàäà÷è èç îáëàñòè ìàòåìàòè÷åñêîé ôèçèêè ñîñòîèò èç ñëåäóþùèõ ýòàïîâ.

                1. Ïîñòàíîâêà çàäà÷è. Âûõîäîì ýòîãî ýòàïà ÿâëÿåòñÿ îáû÷íî ñèñòåìà äèôôåðåíöèàëüíûõ óðàâíåíèé, îïèñûâàþùèõ çàäà÷ó.

                2. Âûáîð ïðîñòðàíñòâåííî-âðåìåííîé ñåòêè è äèñêðåòèçàöèÿ óðàâíåíèé ñ ïîìîùüþ îäíîãî èç ðàçíîñòíûõ ìåòîäîâ.

                3. Âûáîð ìåòîäà ðåøåíèÿ äèñêðåòíûõ óðàâíåíèé.  ðåçóëüòàòå ïîëó÷àþòñÿ ôîðìóëû (ñîîòíîøåíèÿ), îïèñûâàþùèéå íåîáõîäèìûå âû÷èñëåíèÿ â óçëàõ ñåòêè.

                4. Ïðîãðàììèðîâàíèå ïîëó÷åííûõ ôîðìóë íà íåêîòîðîì ÿçûêå, êîòîðûé îáåñïå÷èâàåò ðåøåíèå çàäà÷è íà âû÷èñëèòåëüíîé ìàøèíå.

                Ãëàâíàÿ èäåÿ, ïîëîæåííàÿ â îñíîâó ÿçûêà Íîðìà, çàêëþ÷àåòñÿ â òîì, ÷òî ïîëó÷åííûå ïðèêëàäíûì ñïåöèàëèñòîì â ïðîöåññå ðåøåíèÿ ïðèêëàäíîé çàäà÷è ðàñ÷åòíûå ôîðìóëû ïî÷òè íåïîñðåäñòâåííî èñïîëüçóþòñÿ äëÿ ââîäà â âû÷èñëèòåëüíóþ ñèñòåìó è ïðîâåäåíèÿ ñ÷åòà.

                Òàêèì îáðàçîì, ÿçûê Íîðìà äàåò ïðèêëàäíîìó ìàòåìàòèêó âîçìîæíîñòü ñôîðìóëèðîâàòü ñâîþ çàäà÷ó â ïðèâû÷íûõ äëÿ íåãî òåðìèíàõ. Îðãàíèçàöèÿ ïðîöåññà âû÷èñëåíèé ñ ó÷åòîì àðõèòåêòóðû ÝÂÌ (âîçìîæíîñòåé ïàðàëëåëüíîé, âåêòîðíîé îáðàáîòêè è ò. ï.) - çòî çàäà÷à òðàíñëÿòîðà ñ ÿçûêà Íîðìà.

                Ñóùåñòâåííûì ôàêòîì ÿâëÿåòñÿ âîçìîæíîñòü ðåàëèçàöèè îäíîé ïðîãðàììû íà ÿçûêå Íîðìà ðàçëè÷íûìè âû÷èñëèòåëüíûìè ïðîöåññàìè. Èìåííî ðàçðàáîòêà àëãîðèòìà ñ õàðàêòåðèñòèêàìè, áëèçêèìè ê îïòèìàëüíûì è ýôôåêòèâíî ó÷èòûâàþùèìè îñîáåííîñòè êîíêðåòíûõ ÝÂÌ, ÿâëÿåòñÿ íàèáîëåå óçêèì ìåñòîì ñîçäàíèÿ âûñîêîêà÷åñòâåííîãî ïðîãðàììíîãî îáåñïå÷åíèÿ.

                Çàïèñü íà ÿçûêå Íîðìà - ýòî, ïî ñóùåñòâó, ñòðîãàÿ çàïèñü ÷èñëåííûõ ìåòîäîâ ðåøåíèÿ ìàòåìàòè÷åñêîé çàäà÷è, çàïèñü åùå íå àëãîðèòìîâ, à ïðîñòî ðàñ÷åòíûõ ôîðìóë è îñòàëüíîé íåîáõîäèìîé èíôîðìàöèè, êîòîðóþ íåîáõîäèìî çíàòü, ÷òîáû íàïèñàòü ïðîãðàììó äëÿ ÝÂÌ.

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

                Âûáîð óðîâíÿ ÿçûêà Íîðìà îïðåäåëÿåò õàðàêòåðíóþ åãî ÷åðòó - â ýòîì ÿçûêå íåò íåîáõîäèìîñòè ââîäèòü òàêèå ïîíÿòèÿ, êàê îïåðàòîð ïðèñâàèâàíèÿ è âîçìîæíîñòü ïåðåïðèñâàèâàíèÿ çíà÷åíèé (òèïà õ:=õ+1) è îïåðàòîðû ïåðåõîäà. Íàëè÷èå òàêèõ ïîíÿòèé â òðàäèöèîííûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ îáúÿñíÿåòñÿ íåîáõîäèìîñòüþ ôîðìóëèðîâêè êîíêðåòíîãî àëãîðèòìà ñ ó÷åòîì âîïðîñîâ ýêîíîìèè è ðàñïðåäåëåíèÿ ïàìÿòè, ïîðÿäêà âûïîëíåíèÿ îïåðàòîðîâ è ò. ï. Ïîáî÷íûé ýôôåêò â ÿçûêå Íîðìà îòñóòñòâóåò ïî îïðåäåëåíèþ.

                Ïîíÿòíî, ÷òî ìíîãèå èç ýòèõ âîïðîñîâ ïîÿâëÿþòñÿ ñíîâà íà ýòàïå ñèíòåçà ðàáî÷åé ïðîãðàììû. Îäíàêî, çäåñü îíè ðåøàþòñÿ àâòîìàòè÷åñêè ïî ñòðîãèì ïðâèëàì, ãîàðàíòèðóþùèì ïðàâèëüíîñòü ñèíòåçèðóåìîé ïðîãðàììû.

                Íåïðîöåäóðíîñòü ÿçûêà Íîðìà ïîçâîëÿåò ïðåîäîëåòü åùå îäíó òðóäíîñòü, ñâÿçàííóþ ñ ðàñïàðàëëåëèâàíèåì àëãîðèòìà ïðè ñ÷åòå íà ÝÂÌ, äîïóñêàþùèõ ñîâìåùåíèå îïåðàöèé. Èçâåñòíûå ìåòîäû ðàñïàðàëëåëèâàíèÿ ïîñëåäîâàòåëüíûõ àëãîðèòìîâ îñíîâàíû íà âûÿâëåíèè, ïðè íåêîòîðûõ îãðàíè÷åíèÿõ, ÷àñòåé àëãîðèòìà, êîòîðûå ìîæíî âûïîëíÿòü íåçàâèñèìî, â ñîîòâåòñòâèè ñ çàäàííûì êðèòåðèåì ïàðàëëåëèçìà - àñèíõðîííûå âû÷èñëåíèÿ, ñèíõðîííûå è ò. ï. Îäíàêî, âûÿâëåíèå âçàèìîñâÿçåé â óæå ñôîðìèðîâàííîì ïîñëåäîâàòåëüíîì àëãîðèòìå ÿâëÿåòñÿ íååñòåñòâåííîé è òðóäíîé çàäà÷åé, òàê êàê àíàëèçèðóåìàÿ ôîðìóëèðîâêà, êàê ïðàâèëî, íàñûùåíà èçáûòî÷íûìè âçàèìîñâÿçÿìè (òèïà ââåäåíèÿ ðàáî÷èõ ïåðåìåííûõ äëÿ ýêîíîìèè ïàìÿòè, êîíêðåòíûõ ñïîñîáàõ îðãàíèçàöèè öèêëîâ è ò. ï.). Âîîáùå ãîâîðÿ, íè îòêóäà íå ñëåäóåò, ÷òî ïîñëåäîâàòåëüíûé àëãîðèòì íàäî òðàíñëèðîâàòü â ïàðàëëåëüíûé, à íå îïðåäåëÿòü ïàðàëëåëüíûé ñðàçó ïî íåïðîöåäóðíîé çàïèñè.

                Ýòè ñâîéñòâà, è íåêîòîðûå äðóãèå îãðàíè÷åíèÿ, ïîçâîëÿþò ñòðîãî îáîñíîâàòü ðàçðåøèìîñòü ñèíòåçà âûõîäíîé ïðîãðàììû, òàê êàê â äîñòàòî÷íî îáùåé ïîñòàíîâêå ðåøåíèå ýòîé çàäà÷è ïðèâîäèò ê çíà÷èòåëüíûì ìàòåìàòè÷åñêèì òðóäíîñòÿì - îíà ìîæåò îêàçàòüñÿ NP-ïîëíîé ëèáî âîîáùå íåðàçðåøèìîé. Ñ äðóãîé ñòîðîíû, èññëåäîâàíèÿ, ñâÿçàííûå ñ ðàçðàáîòêîé è ïðèìåíåíèåì ÿçûêà Íîðìà ïîêàçûâàþò, ÷òî èìåþùèåñÿ îãðàíè÷åíèÿ ïðèåìëèìû ñ ïðàêòè÷åñêîé òî÷êè çðåíèÿ.

                Èñõîäíàÿ ïðîãðàììà, íàïèñàííàÿ íà ÿçûêå ïðîãðàììèðîâàíèÿ Íîðìà, ïðåäñòàâëÿåòñÿ â èñõîäíîì ôàéëå ïî ñëåäóþùèì ïðàâèëàì:

                - òåêñò êàæäîãî èç ðàçäåëîâ Íîðìà-ïðîãðàììû çàïèñûâàåòñÿ â áåñôîðìåííîì ïðåäñòàâëåíèè. Ïðè ïåðåíîñå îïèñàíèÿ èëè îïåðàòîðà íà ñëåäóþùóþ ñòðîêó çàïðåùàåòñÿ ðàçðûâàòü êëþ÷åâûå ñëîâà, èäåíòèôèêàòîðû, êîíñòàíòû, â îñòàëüíîì ïðàâèëà ïåðåíîñà ïðîèçâîëüíûå.

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

                - ñòðîêà, íà÷èíàþùàÿñÿ ñî çíàêà “!”, ÿâëÿåòñÿ êîììåíòàðèåì. Êîììåíòàðèè âíóòðè îïèñàíèé è âíå ðàçäåëîâ çàïðåùåíû.

                - êîììåíòàðèè ìîãóò èñïîëüçîâàòüñÿ âíóòðè îïåðàòîðà ASSUME â ñëåäóþùèõ ñèòóàöèÿõ: ìåæäó çàãîëîâêîì îïåðàòîðà ASSUME è òåëîì îïåðàòîðà; ìåæäó ñîîòíîøåíèÿìè â òåëå îïåðàòîðà.

âíóòðè áëîêà INITIAL...END INITIAL;

âíóòðè òåëà èòåðàöèè.

                - òåêñò ïðîãðàììû ïðåäíàçíà÷åííûé äëÿ òðàíñëÿöèè, çàêàí÷èâàåòñÿ ñòðîêîé ÅÎÐ: èíôîðìàöèÿ, ñëåäóþùàÿ äàëåå òðàíñëÿòîðîì íå îáðàáàòûâàåòñÿ.

                - èíôîðìàöèÿ, ðàñïîëîæåííàÿ â èíòåðâàëå îò “?”, ñòîÿùåãî â ïåðâîé ïîçèöèè, äî çíàêà “?”, ñòîÿùåãî òàêæå â ïåðâîé ïîçèöèè, òðàíñëÿòîðîì íå îáðàáàòûâàåòñÿ. ýòà âîçìîæíîñòü ïîçâîëÿåò âûáèðàòü èç èñõîäíîãî ôàéëà òå ðàçäåëû, êîòîðûå íåîþõîäèìî òðàíñëèðîâàòü.            .
                2.2 Ñòðóêòóðà òðàíñëÿòîðà ñ ÿçûêà Íîðìà.

                Òðàíñëÿòîð ñ ÿçûêà ïðîãðàììèðîâàíèÿ Íîðìà óæå íàïèñàí íà ÿçûêå Ðåôàë. Òåïåðü áûëî ðåøåíî ïåðåâåñòè òðàíñëÿòîð ñ ÿçûêà ïðîãðàììèðîâàíèÿ Íîðìà íà ÿçûê ïðîãðàììèðîâàíèÿ Ñè. ßçûê ïðîãðàììèðîâàíèÿ Ñè áûë âûáðàí ïî ñëåäóþùèì ïðè÷èíàì:

                - ñðåäè ñîâðåìåííûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ ÿçûê Ñè ÿâëÿåòñÿ îäíèì èç íàèáîëåå ðàñïðîñòðàíåííûõ;

                - ÿçûê Ñè óíèâåðñàëåí è íàèáîëåå ýôôåêòèâíî åãî ïðèìåíåíèå â çàäà÷àõ ñèñòåìíîãî ïðîãðàììèðîâàíèÿ - ðàçðàáîòêå òðàíñëÿòîðîâ, îïåðàöèîííûõ ñèñòåì, ýêðàííûõ èíòåðôåéñîâ, èíñòðóìåíòàëüíûõ ñðåäñòâ;

                - ðàçðàáîò÷èêàìè ÿçûêà Íîðìà óæå íàïèñàí èíòåðôåéñ íà ÿçûêå Ñè, ïîçâîëÿþùèé çàêîí÷åííûå ÷àñòè òðàíñëÿòîðà, íàïèñàííûå íà Ðåôàëå, çàìåíÿòü íà çàêîí÷åííûå ÷àñòè òðàíñëÿòîðà, íàïèñàííûå íà Ñè, äëÿ îòëàäêè òðàíñëÿòîðà.

                Òðàíñëÿòîð ñ ÿçûêà ïðîãðàììèðîâàíèÿ èìååò ñëåäóþùóþ ñòðóêòóðó:

Ðèñ.1

 

òåêñò ëåêñè÷åñêèé      ñèíòàêñè÷åñêèé       îïð. ïîðÿäêà          êîäîãåíåðàöèÿ  FORTRAN

           àíàëèç                    àíàëèç         âû÷èñë. è ðàñïàð.

 

 

 

 

                     ìåíåäæåð ïàìÿòè                   òàáëèöû

 

 

               

                Íà âõîä ëåêñè÷åñêîãî àíàëèçàòîðà ïîñòóïàåò òåêñò èñõîäíîé ïðîãðàììû, íàïèñàííîé íà ÿçûêå ïðîãðàììèðîâàíèÿ Íîðìà. Íà âûõîäå - îòñîðòèðîâàííûé ïî îïèñàíèÿì, îïåðàòîðàì è èòåðàöèÿì ñïèñîê ñïèñêîâ. Ýëåìåíòîì ýòîãî ñïèñêà ñïèñêîâ ÿâëÿåòñÿ ñïèñîê ëåêñåì, êîòîðûé ïðåäñòàâëÿåò ñîáîé îäíî ïðåäëîæåíèå ïðîãðàììû, íàïèñàííîé íà Íîðìå, îêàí÷èâàþùååñÿ òî÷êîé.

                Äàëåå ýòîò ñïèñîê ñïèñêîâ ïîñòóïàåò íà âõîä ñèíòàêñè÷åñêîãî àíàëèçàòîðà. Íà âûõîäå ñèíòàêñè÷åñêèé àíàëèçàòîð âûäàåò òàáëèöû îïèñàíèé, òàáëèöû îïåðàòîðîâ.

                Ýòè òàáëèöû ïîñòóïàþò íà âõîä ñëåäóþùåãî ýòàïà, ãäå ïðîèñõîäèò îïðåäåëåíèå ïîðÿäêà âû÷èñëåíèé è ðàçäåëåíèå íà ïàðàëëåëüíûå âåòâè âû÷èñëåíèé, íåçàâèñÿùèå äðóã îò äðóãà. Íà âûõîäå ïîëó÷àåì âíóòðåííèå êîäû.

                Âíóòðåííèå êîäû ïîñòóïàþò íà âõîä êîäîãåíåðàöèè. Âûõîäîì êîäîãåíåðàöèè ÿâëÿåòñÿ ïðîãðàììà íà ÿçûêå Ôîðòðàí.

                Òàêæå èìååòñÿ Ìåíåäæåð ïàìÿòè, ïîçâîëÿþùèé ðàáîòàòü ñ ïàìÿòüþ.  Âçàèìîäåéñòâèå ñ Ìåíåäæåðîì ïàìÿòè ïðîèñõîäèò íà âñåõ ÷åòûðåõ ýòàïàõ. Âçàèìîäåéñòâèå ñ òàáëèöàìè òàêæå ïðîèñõîäèò íà âñåõ ÷åòûðåõ ýòàïàõ.

 

                2.3 Çíàêîìñòâî ñ ìåòîäàìè ëåêñè÷åñêîãî àíàëèçà.

                 ðåçóëüòàòå âûïîëíåíèÿ ýòîãî çàäàíèÿ ÿ óçíàëà, ÷òî â ëåêñè÷åñêîì àíàëèçå ïðèìåíÿþòñÿ è èñïîëüçóþòñÿ ñëåäóþùèå ìåòîäû:

                - êîíå÷íûå àâòîìàòû è À-ãðàììàòèêè, îïèñûâàþùèå êîíå÷íûå àâòîìàòû;

                2.4 Ñòðóêòóðà ëåêñè÷åñêîãî àíàëèçàòîðà.

                Íà âõîä ëåêñè÷åñêîãî àíàëèçàòîðà ïîñòóïàåò òåêñò èñõîäíîé ïðîãðàììû, íàïèñàííîé íà ÿçûêå Íîðìà. Ïðîãðàììà, íàïèñàííàÿ íà ÿçûêå Íîðìà, òðàíñëèðóåòñÿ ïî ðàçäåëàì. Ñíà÷àëà òðàíñëèðóåòñÿ îäèí ðàçäåë, ïîñëå òîãî, êàê îí áóäåò îòòðàíñëèðîâàí, íà÷íåòñÿ òðàíñëÿöèÿ ñëåäóþùåãî ðàçäåëà.

                Íà ïåðâîì øàãå ïðîèñõîäèò ÷òåíèå èñõîäíîãî òåêñòà ïðîãðàììû íà Íîðìå è ðàçáèåíèå åãî íà ëåêñåìû. Ðåçóëüòàòîì ýòîãî øàãà ÿâëÿåòñÿ ñïèñîê ëåêñåì.

                Ëþáîé ýëåìåíò-ðàçäåëà (îïèñàíèå, îïåðàòîð, èòåðàöèÿ) çàêàí÷èâàåòñÿ òî÷êîé. Ïîýòîìó íà ñëåäóþùåì øàãå ïðîèñõîäèò “ðåçàíèå” ñïèñêà ëåêñåì ïî òî÷êàì.  ðåçóëüòàòå ýòîé ïðîöåäóðû ïîëó÷àåì ñïèñîê ñïèñêîâ. Ýëåìåíòîì ýòîãî ñïèñêà ñïèñêîâ ÿâëÿåòñÿ ñïèñîê ëåêñåì, êîòîðûé ïðåäñòàâëÿåò ñîáîé îäíî ïðåäëîæåíèå ïðîãðàììû, íàïèñàííîé íà Íîðìå, îêàí÷èâàþùååñÿ òî÷êîé.

                Íà ñëåäóþùåì øàãå ïðîèñõîäèò ñîðòèðîâêà ñïèñêà ñïèñêîâ ïî îïèñàíèÿì, îïåðàòîðàì è èòåðàöèÿì.  ðåçóëüòàòå ïîëó÷àåì ñïèñîê ñïèñêîâ, â êîòîðîì ñíà÷àëà èäóò âñå îïèñàíèÿ ðàçäåëà, çàòåì âñå îïåðàòîðû ðàçäåëà, è â çàêëþ÷åíèè, âñå èòåðàöèè ðàçäåëà.

                Ïîñëå ýòîãî îòñîðòèðîâàííûé ñïèñîê ñïèñêîâ ïîäàåòñÿ íà âõîä ñèíòàêñè÷åñêîãî àíàëèçàòîðà.

                2.5 Ðàçðàáîòêà ñòðóêòóð äàííûõ äëÿ ðåàëèçàöèè ëåêñè÷åñêîãî àíàëèçàòîðà

                Äëÿ ðåàëèçàöèè ëåêñè÷åñêîãî àíàëèçàòîðà â ìîåé ÷àñòè ðàáîòû áûëè ðàçðàáîòàíû ñëåäóþùèå ñòðóêòóðû äàííûõ:

                1) ñïèñîê ëåêñåì ïðåäñòàâëåí ñëåäóþùåé ñòðóêòóðîé:

                struct spis 

                                { int p1,p2;

                                struct spis *next;} rec1;

                ãäå ð1 è ð2 - ïîëÿ òèïà öåëîå, êîòîðûå îçíà÷àþò íîìåð òàáëèöû è íîìåð â òàáëèöå ñîîòâåòñòâåííî;  ýòèì íîìåðàì ÷åðåç òàáëèöû óñòàíàâëèâàåòñÿ â ñîîòâåòñòâèå êîíêðåòíàÿ ëåêñåìà, áóäü òî èäåíòèôèêàòîð, êëþ÷åâîå ñëîâî, êîíñòàíòà, çíàê îïåðàöèè èëè ðàçäåëèòåëü;

                next - ÿâëÿåòñÿ óêàçàòåëåì íà ñëåäóþùèé ýëåìåíò ñïèñêà ëåêñåì;

                Äàííàÿ ñòðóêòóðà ïðåäñòàâëåíà ããðàôè÷åñêè íà ðèñ.2

Ðèñ.2

               

 

 

                2) ñïèñîê ñïèñêîâ ïðåäñòàâëåí ñëåäóþùåé ñòðóêòóðîé:

                struct spspis

                                {int p1,p2; 

                                struct spis *next;

                                struct spspis *link;} rec2;

                ãäå ð1 è ð2 - ïîëÿ òèïà öåëîå, êîòîðûå îçíà÷àþò íîìåð òàáëèöû è íîìåð â òàáëèöå ñîîòâåòñòâåííî; ýòèì íîìåðàì ÷åðåç òàáëèöû óñòàíàâëèâàåòñÿ â ñîîòâåòñòâèå êîíêðåòíàÿ ëåêñåìà, áóäü òî èäåíòèôèêàòîð, êëþ÷åâîå ñëîâî, êîíñòàíòà, çíàê îïåðàöèè èëè ðàçäåëèòåëü;

                next - ÿâëÿåòñÿ óêàçàòåëåì íà ñòóêòóðó ñïèñîê ëåêñåì;

                link - ÿâëÿåòñÿ óêàçàòåëåì íà ñëåäóþùèé ýëåìåíò ñïèñêà ñïèñêîâ.

                Ýëåìåíòîì ýòîãî ñïèñêà ñïèñêîâ ÿâëÿåòñÿ ñïèñîê ëåêñåì, êîòîðûé ïðåäñòàâëÿåò ñîáîé îäíî ïðåäëîæåíèå ïðîãðàììû, íàïèñàííîé íà Íîðìå, îêàí÷èâàþùååñÿ òî÷êîé, à ñïèñîê ñïèñêîâ ïðåäñòàâëÿåò ñîáîé ñîîòâåòñòâåííî ñïèñîê ïðåäëîæåíèé. Äàííàÿ ñòðóêòóðà ïðåäñòàâëåíà ãðàôè÷åñêè íà ðèñ.3

Ðèñ.3

                               

 

 

                               

 

 

                            

 

 

                            

               


                2.6  Ôóíêöèÿ “ðåçàíèÿ” ñïèñêà ëåêñåì ïî òî÷êàì.

                 äàííîì çàäàíèè òðåáîâàëîñü íàïèñàòü ôóíêöèþ, íà âõîä êîòîðîé ïîñòóïàåò ñïèñîê ëåêñåì, à íà âûõîäå ïîëó÷àåòñÿ ñïèñîê ñïèñêîâ. Ýëåìåíòîì ýòîãî ñïèñêà ñïèñêîâ ÿâëÿåòñÿ ñïèñîê ëåêñåì, êîòîðûé ïðåäñòàâëÿåò ñîáîé îäíî ïðåäëîæåíèå ïðîãðàììû, íàïèñàííîé íà Íîðìå, îêàí÷èâàþùååñÿ òî÷êîé. Ò.å. ýòà ôóíêöèÿ “ðåæåò” ïîñòóïàþùèé íà âõîä ñïèñîê ëåêñåì ïî òî÷êàì, à íà âûõîäå âûäàåò ñïèñîê ïðåäëîæåíèé, êàæäîå èç êîòîðûõ çàêàí÷èâàåòñÿ òî÷êîé è ïðåäñòàâëÿåòñÿ ñïèñêîì ëåêñåì.

                Íèæå ïðèâåäåíû àëãîðèòì â âèäå áëîê ñõåìû è ñàìà ôóíêöèÿ.

 

#include<stdio.h>      /*ïîäêëþ÷åíèå ôàéëà stdio.h*/

#include<alloc.h>      /* ïîäêëþ÷åíèå ôàéëà alloc.h */

#include<process.h>   /* ïîäêëþ÷åíèå ôàéëà sprocess.h */

 

struct spis                           /*îáúÿâëåíèå ñòðóêòóðû ñïèñêà, êàæäûé ýëåìåíò */

                { int p1,p2;               /*êîòîðîãî èìååò äâà ïîëÿ òèïà öåëîå, (ð1-íîìåð*/

                struct spis *next;} rec1;/*òàáëèöû, ð2-íîìåð â òàáëèöå) è ïîëå-óêàçàòåëü*/

                                       /*íà ñëåäóþùèé ýëåìåíò ñïèñêà*/

struct spspis                        /* îáúÿâëåíèå ñòðóêòóðû ñïèñêà ñïèñêîâ, êàæäûé */

                {int p1,p2;               /*ýëåìåíò êîòîðîãî èìååò äâà ïîëÿ òèïà öåëîå,*/

                                      ð1-íîìåð òàáëèöû,ð2- íîìåð â òàáëèöå*/

                struct spspis *link;    /* óêàçàòåëü íà ñëåäóþùèé ýëåìåíò ñïèñêà ñïèñêîâ*/

                struct spis *next;} rec2;/*óêàçàòåëü íà ñòðóêòóðó ñïèñîê*/

struct spis *f,*q,*r;              /* óêàçàòåëü íà ñòðóêòóðó ñïèñîê */

struct spspis *t1,*t;             /* óêàçàòåëü íà ñòðóêòóðó ñïèñîê ñïèñêîâ*/

 

struct spspis *tochka(p)   /*îáúÿâëåíèå ôóíêöèè, âîçðàùàþùåé óêàçàòåëü íà                                                                    ñïèñîê ñïèñêîâ*/

struct spis *p;          /*àðãóìåíòîì ôóíêöèè ÿâëÿåòñÿ óêàçàòåëü íà ñïèñîê*/

{

f=p;    /*ïðñâàèâàíèå ðàáð÷åé ïåðåìåííîé çíà÷åíèÿ àðãóìåíòà ôóíêöèè*/

t=malloc(sizeof( rec2));/*ñîçäàíèå 1-îãî ýëåìåíòà ñïèñêà ñïèñêîâ*/

t1=t;  /* ïðñâàèâàíèå ðàáî÷åé ïåðåìåííîé óêàçàòåëÿ íà ñïèñîê ñïèñêîâ*/

while(f!=NULL) /*òåëî äàííîãî îïåðàòîðà áóäåò âûïîëíÿòüñÿ äî òåõ ïîð, ïîêà íå                               äîñòîãíåì êîíöà ñïèñêà ëåêñåì*/

{              t1->p1=f->p1;/*ïðèñâàèâàíèå çíà÷åíèé ïîëÿì ýëåìåíòà ñïèñêà ñïèñêîâ*/

                t1->p2=f->p2;

                f=f->next;

                if (f!=NULL)

                {  t1->next=malloc(sizeof(rec1));/*ñîçäàíèå 1-îãî ýëåìåíòà ñïèñêà â ñïèñêå                                                                                                ñïèñêîâ*/

                      q=t1->next;/* ïðèñâàèâàíèå ðàáî÷åé            ïåðåìåííîé óêàçàòåëÿ íà                                                       ýëåìåíò ñïèñêà*/

                      do  /*ñîçäàíèå ñàìîãî ñïèñêà ëåêñåì â ñïèñêå ñïèñêîâ*/

                      {

                                q->p1=f->p1;/*ïðèñâàèâàíèå çíà÷åíèé ïîëÿì ýëåìåíòà ñïèñêà*/

                                q->p2=f->p2;

                                if ((q->p1!=1) && (q->p2!=1))/*åñëè äàííàÿ ëåêñåìà íå ÿâëÿåòñÿ                                                                                           òî÷êîé*/

                                { q->next=malloc(sizeof(rec1));//*òî ñîçäàåì íîâûé ýëåìåíò ñïèñêà */

                                q=q->next;

                                }

                                else { t1->link=malloc(sizeof(rec2));/*èíà÷å, ñîçäàåì íîâûé ýëåìåíò                                                                                                          ñïèñêà ñïèñêîâ*/

                                    t1=t1->link;

                                };

                f=f->next;

                }

                while(((q->p1!=1) && (q->p2!=1)) || (f!=NULL)) ;/*òåëî äàííîãî îïåðàòîðà âûïîëäíÿåòñÿ äî òåõ ïîð,ïîêà ëèáî íå áóäåò ïðî÷èòàíà òî÷êà, ëèáî íå áóäåò äîñòèãíóò êîíåö ñïèñêà ëåêñåì,íà êîòîðûé óêàçûâàåò àðãóìåíò ôóíêöèè*/

                }

}

return(t);/*ôóíêöèÿ âîçâðàùàåò óêàçàòåëü íà ñïèñîê ñïèñêîâ*/

}

 

 

íà÷àëî

 

 

f:=p

t:=new rec2

t:=t1

 

                                                      f<>NULL          íåò

 

          äà

t1.p1:=f.p1

t1.p2:=f.p2

f:=f.next

 

                                                                                  

                                                     f<>NULL             íåò

 

t1.next:=new rec1

q:=t1.next

 

 

q.p1:=f.p1

q.p2:=f.p2

 

 

(q.p1<>1)&(q.p2<>1)

 

         q.next:=new rec1                                                    t1.link:=new rec2

         q:=q.next                                                                  t1:=t1.link

 

f:=f.next

 

((q.p1<>1)&(q.p2<>1))or(f<>NULL)

         äà                       

                                                    íåò

 

 

 

 

return(t)

 

 

êîíåö

 

 

                3. ÇÀÊËÞ×ÅÍÈÅ

                Â ðåçóëüòàòå ïðîäåëàííîé ðàáîòû ìíîþ áûëè äîñòèãíóòû ñëåäóþþùèå öåëè:

                - îçíàêîìèëàñü è èçó÷èëà íåïðîöåäóðíûé ÿçûê ïðîãðàììèðîâàíèÿ Íîðìà, ïðåäíàçíà÷åííûé äëÿ çàïèñè ÷èñëåííûõ ìåòîäîâ ðåøåíèÿ çàäà÷ ìàòåìàòè÷åñêîé ôèçèêè ðàçíîñòíûìè ìåòîäàìè;

                - èçó÷èëà ñòðóêòóðó òðàíñëÿòîðà ñ ÿçûêà ïðîãðàììèðîâàíèÿ Íîðìà;

                - îçíàêîìèëàñü ñ ìåòîäàìè ëåêñè÷åñêîãî àíàëèçà;

                - èçó÷èëà ñòðóêòóðó ëåêñè÷åñêîãî àíàëèçàòîðà;

                - ðàçðàáîòàëà ñòðóêòóðó äàííûõ ñâîåé ÷àñòè çàäàíèÿ äëÿ ðåàëèçàöèè       ëåêñè÷åñêîãî àíàëèçàòîðà;

                -íàïèñàëà ôóíêöèþ, íà âõîä êîòîðîé ïîñòóïàåò ñïèñîê ëåêñåì, à íà âûõîäå ïîëó÷àåì ñïèñîê ñïèñêîâ. Ýëåìåíòîì ýòîãî ñïèñêà ñïèñêîâ ÿâëÿåòñÿ ñïèñîê ëåêñåì, êîòîðûé ïðåäñòàâëÿåò ñîáîé îäíî ïðåäëîæåíèå ïðîãðàììû, íàïèñàííîé íà Íîðìå, îêàí÷èâàþùååñÿ òî÷êîé. Ò.å. ýòà ôóíêöèÿ “ðåæåò” ïîñòóïàþùèé íà âõîä ñïèñîê ëåêñåì ïî òî÷êàì, à íà âûõîäå ïîëó÷àåì ñïèñîê ïðåäëîæåíèé, êàæäîå èç êîòîðûõ çàêàí÷èâàåòñÿ òî÷êîé è ïðåäñòàâëÿåòñÿ ñïèñêîì ëåêñåì.

                Ïðîãðàììà íàõîäèòñÿ  íà ñòàäèè ðàçðàáîòêè.  Çàâåðøåíèå ðàáîòû ïëàíèðóåòñÿ â ñëåäóþùåì ñåìåñòðå. Çàäàíèå íà ÓÈР è ÊÏ âûïîëíèëà ïîëíîñòüþ.

Ñïèñîê ëèòåðàòóðû:

                À.Í. Àíäðèàíîâ, Ê.Í. Åôèìêèí, È.Á. Çàäûõàéëî, Í.Â. Ïîääåðþãèíà “ßçûê Íîðìà”

                À.Í. Àíäðèàíîâ, Ê.Í. Åôèìêèí, È.Á. Çàäûõàéëî “Íåïðîöåäóðíûé ÿçûê Íîðìà è ìåòîäû åãî ðåàëèçàöèè”

                À.Á. Áóãåðÿ “Ðåàëèçàöèÿ ìàòåìàòè÷åñêèõ ôóíêöèé ÿçûêà Íîðìà äëÿ ðàñïðåäåëåííûõ âûñèñëèòåëüíûõ ñèñòåì”

Ïðèëîæåíèå 1.

#include<stdio.h>

#include<alloc.h>

#include<process.h>

 

struct spis

      { int p1,p2;

                struct spis *next;} rec1;

struct spspis

      {int p1,p2;

       struct spspis *link;

       struct spis *next;} rec2;

struct spis *f,*q,*r;

struct spspis *t1,*t;

 

extern struct spspis *(tochka(struct spis*));

 

struct spspis *tochka(p)

struct spis *p;

{

f=p;

t=malloc(sizeof( rec2));

t1=t;

while(f!=NULL)

{  t1->p1=f->p1;

   t1->p2=f->p2;

   f=f->next;

   if (f!=NULL)

   {  t1->next=malloc(sizeof(rec1));

      do

      {q->p1=f->p1;

                q->p2=f->p2;

                if ((q->p1!=1) && (q->p2!=1))

                   { q->next=malloc(sizeof(rec1));

                     q=q->next;   }

                else { t1->link=malloc(sizeof(rec2));

                       t1=t1->link;};

                f=f->next;}

                while(((q->p1!=1) && (q->p2!=1)) || (f!=NULL)) ;

    }

}

  return(t);}

main() {

tochka(r);return(0);

}

 

Похожие работы на - Синтаксический анализ языка НОРМА. Разбор описания

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!