Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Доки / T_ALG / 2 / RUKOPER

.TXT
Скачиваний:
6
Добавлен:
17.04.2013
Размер:
18.1 Кб
Скачать













ѓ…Ќ…ђЂ’Ћђ џ‡›ЉЋ‚›• ЏђЋ–…‘‘ЋђЋ‚

(GLP)


ђгЄ®ў®¤бвў® ®ЇҐа в®а 


‹Ёбв®ў 17









Њ®бЄў  1994
.
- 2 -

Љ®¬ЁвҐв Ї® ўлб襩 иЄ®«Ґ ¬Ё­ЁбвҐабвў  ­ гЄЁ ђ”
ЊЋ‘ЉЋ‚‘Љ€‰ ѓЋ‘“„Ђђ‘’‚…ЌЌ›‰ €Ќ‘’€’“’ ќ‹…Љ’ђЋЌЌЋ‰ ’…•Ќ€Љ€
’…•Ќ€—…‘Љ€‰ “Ќ€‚…ђ‘€’…’


" “⢥ত о "
Џа®аҐЄв®а Њ€ќ’
____________ — Ї«лЈЁ­ ћ.Ђ.

"___"________ 1994Ј.



ѓ…Ќ…ђЂ’Ћђ џ‡›ЉЋ‚›• ЏђЋ–…‘‘ЋђЋ‚
(GLP)

ђгЄ®ў®¤бвў® ®ЇҐа в®а 
‹Ёбв®ў 17


Ђўв®ал:

1. __________  ­мЈЁ­ ‚.”.

"___"________1994 Ј.

2. __________ ’Ё¬®дҐҐў Џ.Ђ.

"___"________1994 Ј.

Њ®бЄў  1994
.
- 3 -


ЂЌЌЋ’Ђ–€џ

ѓҐ­Ґа в®а п§лЄ®ўле Їа®жҐбб®а®ў ЇаҐ¤­ §­ зҐ­ ¤«п  ўв®¬ вЁ§ жЁЁ
Їа®жҐбб  а §а Ў®вЄЁ ва ­б«пв®а®ў а §«Ёз­ле п§лЄ®ў.
Ћб­®ў­л¬ ҐЈ® ЇаҐЁ¬гйҐбвў®¬ пў«пҐвбп в®, зв® д®а¬ «м­ п Ја ¬¬ вЁ-
Є , § ЇЁб ­­ п ­  ¬Ґв п§лЄҐ, пў«пҐвбп з бвмо ва ­б«пв®а . ѓҐ­Ґа в®а
а Ў®в Ґв Ї® ЇаЁ­жЁЇг ЇаҐЇа®жҐбб®а . ”®а¬ «м­ п Ја ¬¬ вЁЄ , б Їа®бв ў-
«Ґ­­®© ў ­Ґ© ᥬ ­вЁЄ®© ­  п§лЄҐ ‘€++,  ўв®¬ вЁзҐбЄЁ ЇаҐ®Ўа §гҐвбп ЈҐ-
­Ґа в®а®¬ ў Їа®Ја ¬¬г ­  п§лЄҐ ‘€++. ‘ЈҐ­ҐаЁа®ў ­­ п Їа®Ја ¬¬  ўлЇ®«-
­пҐв Ї®«­л© бЁ­в ЄбЁзҐбЄЁ©  ­ «Ё§,   в Є¦Ґ ᥬ ­вЁзҐбЄЁҐ ¤Ґ©бвўЁп ў
ᮮ⢥бвўЁЁ б гЄ § ­­л¬Ё дг­ЄжЁп¬Ё. ‚ § ўЁбЁ¬®бвЁ ®в ўЁ¤  Ја ¬¬ вЁЄЁ Ё
дг­ЄжЁ© ва ­б«пв®а ¬®¦Ґв Ўлвм  бᥬЎ«Ґа®¬, Є®¬ЇЁ«пв®а®¬, ¬ Єа®Їа®жҐб-
б®а®¬, ᥬ ­вЁзҐбЄЁ¬  ­ «Ё§ в®а®¬ Ё в.¤.
.
- 4 -


‘Ћ„…ђ†ЂЌ€…

1. ЌЂ‡ЌЂ—…Ќ€… ЏђЋѓђЂЊЊ› 5
2. “‘‹Ћ‚€џ ‚›ЏЋ‹Ќ…Ќ€џ ЏђЋѓђЂЊЊ› 8
3. ‚›ЏЋ‹Ќ…Ќ€… ЏђЋѓђЂЊЊ› 9
3.1. ‡ ЇгбЄ ЈҐ­Ґа в®а  ўҐабЁЁ 2.0 9
3.2. ЏаЁ¬Ґа п§лЄ®ў®Ј® Їа®жҐбб®а  11
4. ‘ЋЋЃ™…Ќ€џ ЋЏ…ђЂ’Ћђ“ 17
4.1. ЋиЁЎЄЁ ў Їа®Ја ¬¬Ґ. 17
4.2. ”®а¬ в б®®ЎйҐ­Ёп ® бЁ­в ЄбЁзҐбЄ®© ®иЁЎЄҐ. 17

.
- 5 -


1. ЌЂ‡ЌЂ—…Ќ€… ЏђЋѓђЂЊЊ›

ѓҐ­Ґа в®а ЇаҐ¤­ §­ зҐ­ ¤«п  ўв®¬ вЁ§ жЁЁ Їа®жҐбб  а §а Ў®вЄЁ Ё
®в« ¤ЄЁ Їа®Ја ¬¬ а §Ў®а  д®а¬ «м­ле п§лЄ®ў. Љ в ЄЁ¬ Їа®Ја ¬¬ ¬ а §Ў®а 
®в­®бпвбп ўбҐ Їа®Ја ¬¬л, ®Ўа Ў влў ойЁҐ Є Є®© «ЁЎ® ⥪бв.
Ќ  ўе®¤ ЈҐ­Ґа в®а  Ї®¤ Ґвбп ®ЇЁб ­ЁҐ ва ­б«пв®а  ­  ¬Ґв п§лЄҐ. Ќ 
ўл室Ґ ЈҐ­Ґа в®а  ва ­б«пв®а ­  п§лЄҐ Їа®Ја ¬¬Ёа®ў ­Ёп ‘€ Ё«Ё ‘€++ Ё
­ Ў®а бЁ­в ЄбЁзҐбЄЁе вҐбв®ў ¤«п Їа®ўҐаЄЁ нв®Ј® ва ­б«пв®а .
ѓҐ­Ґа в®а ва ­б«пв®а®ў ЇаҐ¤бв ў«пҐв б®Ў®© ®¤­г Їа®Ја ¬¬г Ё ­ Ў®а
дг­ЄжЁ©. Џ®б«Ґ ЈҐ­Ґа жЁЁ Ї®«гз Ґ¬ § Ј®«®ў®з­л© д ©« ­  п§лЄҐ ‘€ б Ја -
䮬 б®бв®п­Ё© Ё д ©« б дг­ЄжЁҐ©, ᮤҐа¦ йЁ© ўл§®ўл дг­ЄжЁ© Ї®«м§®ў вҐ-
«п. ’ ЄЁ¬ ®Ўа §®¬, ва ­б«пв®а ЇаҐ¤бв ў«пҐв б®Ў®© ­ Ў®а дг­ЄжЁ© ­  п§л-
ЄҐ ‘€ Ё ®¤Ё­ § Ј®«®ў®з­л© д ©«.
ЏаҐ¤« Ј Ґ¬л© ¬Ґв п§лЄ ®ЇЁб ­Ёп ва ­б«пв®а®ў - нв® ®Ў®ЎйҐ­ЁҐ Ё ¤®-
Ї®«­Ґ­ЁҐ § ЇЁбЁ Ја ¬¬ вЁЄЁ п§лЄ  ў ўЁ¤Ґ ¬®¤ЁдЁЄ жЁ© а §«Ёз­ле д®а¬ Ѓн-
Єгб -Ќ га . „®Ї®«­Ґ­ЁҐ § Є«оз Ґвбп ў ў®§¬®¦­®бвЁ § ЇЁбЁ ᥬ ­вЁЄЁ п§л-
Є  ў ўЁ¤Ґ ЇаҐ¤«®¦Ґ­Ё© п§лЄ  Їа®Ја ¬¬Ёа®ў ­Ёп ‘€ Ё ўўҐ¤Ґ­ЁЁ ­®ўле д®а¬
®ЇЁб ­Ёп вҐа¬ЁЁ­ «м­ле Ё ­ҐвҐа¬Ё­ «м­ле бЁ¬ў®«®ў.
ЏаЁ ЁбЇ®«м§®ў ­ЁЁ ЈҐ­Ґа в®а 
- я1㢥«ЁзЁў Ґвбп Їа®Ё§ў®¤ЁвҐ«м­®бвм ваг¤  ЇаЁ а §а Ў®вЄҐ бЁ­в ЄбЁ-
я1зҐбЄ®Ј®  ­ «Ё§ в®а  Ў®«ҐҐ, 祬 ў 16 а §, ЇаЁ а §а Ў®вЄҐ Ї®«­®Ј® ва ­б-
я1«пв®а  Ў®«ҐҐ 祬 ў 2 а § ;я0
я1-я0 я1­Ґв ¤®Ї®«­ЁвҐ«м­ле ®Ја ­ЁзҐ­Ё© ­  вЁЇ Є®­вҐЄбв­®-бў®Ў®¤­®©
я1Ја ¬¬ вЁЄЁ Єа®¬Ґ ®¤­®§­ з­®бвЁ;
я1- бЈҐ­ҐаЁа®ў ­­л© ва ­б«пв®а Ё¬ҐҐв ўлб®Є®Ґ ЎлбвதҐ©бвўЁҐя0;
я1-я0 я1Ї®«м§®ў вҐ«м нЄ®­®¬Ёв ўаҐ¬п ­  а §а Ў®вЄҐ бЁ­в ЄбЁзҐбЄЁе вҐбв®ў;
я1-я0 я1®ЎҐбЇҐзЁў Ґвбп «®Є «Ё§ жЁп ®иЁЎ®Є б в®з­®бвмо ¤® ®иЁЎ®з­®Ј®
я1бЁ¬ў®« , ўлпў«Ґ­ЁҐ ­ ЁЎ®«м襣® зЁб«  ®иЁЎ®Є ЇаЁ Ї®«­®¬ Їа®б¬®вॠЁб-
я1室­®Ј® д ©« .
ЋЎ« бвм ЇаЁ¬Ґ­Ґ­Ёп ЈҐ­Ґа в®а :

- 6 -

- а §а Ў®вЄ  бЁ­в ЄбЁзҐбЄЁе, ᥬ ­вЁзҐбЄЁе  ­ «Ё§ в®а®ў Ё ва ­б«п-
в®а®ў Є®­вҐЄбв­®-бў®Ў®¤­ле п§лЄ®ў;
- а §а Ў®вЄ  бЁб⥬­®Ј® Їа®Ја ¬¬­®Ј® ®ЎҐбЇҐзҐ­Ёп, бЁб⥬  ўв®¬ вЁ-
§ жЁЁ Їа®Ја ¬¬Ёа®ў ­Ёп ( п§лЄ®ў Їа®Ја ¬¬Ёа®ў ­Ёп, । Єв®а®ў
⥪бв®ў,  бᥬЎ«Ґа®ў, Ё­вҐаЇаҐв в®а®ў, Є®¬ЇЁ«пв®а®ў, Є®­ўҐавҐа®ў,
¬ Єа®Їа®жҐбб®а®ў, Є®¬Ї®­®ўйЁЄ®ў, । Єв®а®ў бўп§Ґ©, ®в« ¤зЁЄ®ў,
Ё­вҐЈаЁа®ў ­­ле б।, ®ЎкҐ¤Ё­пойЁе ўбҐ ўлиҐ ЇҐаҐзЁб«Ґ­­лҐ Є®¬Ї®-
­Ґ­вл );
- а §а Ў®вЄ  Єа®бб®ў®Ј® Їа®Ја ¬¬­®Ј® ®ЎҐбЇҐзҐ­Ёп (ЏЋ);
-  ўв®¬ вЁ§ жЁп а §а Ў®вЄЁ ва ­б«пв®а®ў ¤«п ‘ЂЏђ;
- ЈҐ­Ґа жЁп бЁ­в ЄбЁзҐбЄЁ Їа ўЁ«м­ле вҐбв®ў.
ѓҐ­Ґа в®а ЇаҐ¤­ §­ зҐ­ ¤«п:
- ўлбиЁе Ё б।­Ґ-вҐе­ЁзҐбЄЁе г祡­ле § ўҐ¤Ґ­Ё©, Ј¤Ґ ЇаҐЇ®¤ Ґвбп
Єгаб "‘Ёб⥬­®Ґ Їа®Ја ¬¬Ёа®ў ­ЁҐ" Ё«Ё Ґ¬г Ї®¤®Ў­л©;
- дЁа¬, § ­Ё¬ ойЁебп а §а Ў®вЄ®© Їа®Ја ¬¬­®Ј® ®ЎҐбЇҐзҐ­Ёп;
- ®в¤Ґ«м­ле Їа®Ја ¬¬Ёбв®ў Ё ЈагЇЇ Їа®Ја ¬¬Ёбв®ў, а Ў®в ойЁе Ї® § -
Є § ¬ ®вҐзҐб⢥­­ле Ё § агЎҐ¦­ле дЁа¬.
ЋЎлз­® бЁ­в ЄбЁзҐбЄЁҐ  ­ «Ё§ в®ал а §а Ў влў овбп ­  п§лЄҐ ўлб®-
Є®Ј® га®ў­п б ЇаЁ¬Ґ­Ґ­ЁҐ¬ в®Ј® Ё«Ё Ё­®Ј® ¬Ґв®¤  а §Ў®а . Ћ¤­ Є® ў а §-
­®Ґ ўаҐ¬п Ўл« а §а Ў®в ­ ап¤ бЁб⥬ Ї®бв஥­Ёп ва ­б«пв®а®ў (‘Џ’).
Ѓ®«миЁ­бвў® Ё§ ­Ёе в Є Ё ­Ґ Ї®«гзЁ«Ё иЁа®Є®Ј® а бЇа®бва ­Ґ­Ёп.
Ќ ЁЎ®«ҐҐ Ў«Ё§ЄЁ¬  ­ «®Ј®¬ ЈҐ­Ґа в®а  ¬®¦Ґв б«г¦Ёвм Є®¬ЇЁ«пв®а
Є®¬ЇЁ«пв®а®ў YACC. ќв® ЈҐ­Ґа в®а Їа®Ја ¬¬ Ја ¬¬ вЁзҐбЄ®Ј® а §Ў®а , Є®-
в®ал© ЁбЇ®«м§гҐвбп ў а ¬Є е ®ЇҐа жЁ®­­®© бЁб⥬л UNIX. Џ®а®¦¤Ґ­­лҐ
бЁб⥬®© YACC Їа®жҐбб®ал Ја ¬¬ вЁзҐбЄ®Ј® а §Ў®а  ЁбЇ®«м§гов ¬Ґв®¤ а §-
Ў®а  б­Ё§г ўўҐае, ®б­®ў ­­л© ­  Ја ¬¬ вЁЄ е LALR(1). Џ®а®¦¤Ґ­­лҐ Їа®-
жҐбб®ал Ё¬Ґов е®а®иго бЁб⥬㠮Ў­ а㦥­Ёп ®иЁЎ®Є.
ЏаҐ¤« Ј Ґ¬л© ЈҐ­Ґа в®а бЁ­в ЄбЁзҐбЄЁе  ­ «Ё§ в®а®ў Ё ва ­б«пв®а®ў
®б­®ў ­ ­  ¬Ґв®¤Ґ а §Ў®а  ᢥаег ў­Ё§, Є®в®ал© Ї®§ў®«пҐв б®еа ­Ёвм ўбо
ЇаҐ¤лбв®аЁо а §Ў®а . Џ®б«Ґ¤­ҐҐ ®ЎҐбЇҐзЁў Ґв ­Ґ в®«мЄ® Ї®ЁбЄ ¬ ЄбЁ¬ «м-
­®Ј® зЁб«  ®иЁЎ®Є, ­® Ё ў®§¬®¦­®бвЁ  ўв®¬ вЁзҐбЄ®Ј® гбва ­Ґ­Ёп бЁ­в Є-

- 7 -

бЁзҐбЄЁе ®иЁЎ®Є. Ља®¬Ґ в®Ј® Ё¬ҐҐвбп ЇаЁ­жЁЇЁ «м­ п ў®§¬®¦­®бвм Їа®ўҐа-
ЄЁ бЁ­в ЄбЁзҐбЄ®© Їа ўЁ«м­®бвЁ ®в¤Ґ«м­®© з бвЁ Ёб室­®Ј® ⥪бв  ­  б®-
®вўҐвбвўЁҐ бЁ­в ЄбЁб㠢뤥«Ґ­­®© Є®­бвагЄжЁЁ Ја ¬¬ вЁЄЁ. ќв® Ї®§ў®«пҐв
Їа®ў®¤Ёвм бЁ­в ЄбЁзҐбЄЁ©  ­ «Ё§ Ё§¬Ґ­Ґ­­®© з б⨠⥪бв  ў бЁ­в ЄбЁзҐб-
ЄЁ ®аЁҐ­вЁа®ў ­­ле । Єв®а е.
€б室­®© Ё­д®а¬ жЁҐ© ¤«п ЈҐ­Ґа в®а  пў«пҐвбп Ја ¬¬ вЁЄ  п§лЄ ,
Є®в®а п ®Ўлз­® б«г¦Ёв ­Ґ®вꥬ«Ґ¬®© з бвмо ®ЇЁб ­Ёп п§лЄ . ќв  Ја ¬¬ -
вЁЄ  ЇаЁў®¤Ёвбп Є ®¤­®§­ з­®¬г ўЁ¤г, ¤®ЇгбЄ о饬㠯ап¬го «Ґўго ४га-
бЁо, ®Ўлз­л¬Ё ¬Ґв®¤ ¬Ё ЇаҐ®Ўа §®ў ­Ёп Ја ¬¬ вЁЄ. „ «ҐҐ ў Їа ўЁ«  Ја ¬-
¬ вЁЄЁ ­ҐЇ®б।б⢥­­® ўбв «повбп ўл§®ўл дг­ЄжЁ©. ЏаЁ ЁбЇ®«м§®ў ­ЁЁ
YACC Єа®¬Ґ ЇаҐ®Ўа §®ў ­Ёп Ја ¬¬ вЁЄЁ ­Ґ®Ўе®¤Ё¬® §­ вм п§лЄ ®ЇЁб ­Ёп
бЄ ­Ґа  Ё б ¬®Ј® Ја ¬¬ вЁзҐбЄ®Ј® а §Ў®а . ‚ ЇаҐ¤« Ј Ґ¬®¬ ў аЁ ­вҐ,
Єа®¬Ґ д®а¬ «м­®© Ја ¬¬ вЁЄЁ Ё §­ ­Ё© п§лЄ  Їа®Ја ¬¬Ёа®ў ­Ёп ¤«п Є®в®-
а®Ј® Ї®бв ў«пҐвбп ЈҐ­Ґа в®а, §­ вм ­ЁзҐЈ® ­Ґ ­ ¤®.
я1Џ® бў®Ё¬ вҐе­ЁзҐбЄЁ¬ е а ЄвҐаЁбвЁЄ ¬, ЇҐаҐзЁб«Ґ­­л¬ ў а §¤Ґ«Ґ ЈҐ-
я1­Ґа в®а ­Ґ гбвгЇ Ґв,   Ї® ­ҐЄ®в®ал¬ ЇаҐў®б室Ёв  ­ «®ЈЁз­лҐ Їа®Ја ¬¬-
я1­лҐ Їа®¤гЄвл. Ћ­ Ў®«ҐҐ Їа®бв ў ®Ўа йҐ­ЁЁ, ­® ЇаЁЈ®¤Ґ­ ¤«п ўбҐЈ® ¬­®-
я1¦Ґбвў  Є®­вҐЄбв­®-бў®Ў®¤­ле п§лЄ®ў.я0
„ ­­л© ЈҐ­Ґа в®а пў«пҐвбп а биЁапҐ¬л¬ Їа®¤гЄв®¬. …Ј® ¤ «м­Ґ©иҐҐ
а §ўЁвЁҐ Ўг¤Ґв Їа®ў®¤Ёвбп ў б«Ґ¤гойЁе ­ Їа ў«Ґ­Ёпе.
- ЋЎҐбЇҐзҐ­ЁҐ  ўв®¬ вЁзҐбЄ®Ј® ЇаЁўҐ¤Ґ­Ёп Ја ¬¬ вЁЄЁ Є ®¤­®§­ з­®-
¬г ўЁ¤г.
- ђ §а Ў®вЄ  бЁ­в ЄбЁзҐбЄЁ ®аЁҐ­вЁа®ў ­­®Ј® । Єв®а  ¤«п ўў®¤ 
Їа®Ја ¬¬ ­  ¬Ґв п§лЄҐ.
- ЋЎҐбЇҐзҐ­ЁҐ  ўв®¬ вЁзҐбЄ®© ЈҐ­Ґа жЁЁ бЁ­в ЄбЁзҐбЄЁ-®аЁҐ­вЁа®-
ў ­­ле । Єв®а®ў ¤«п а §а Ў влў Ґ¬ле п§лЄ®ў.
- ѓҐ­Ґа жЁп ᥬ ­вЁзҐбЄЁе  ­ «Ё§ в®а®ў Ё вҐбв®ў Їа®ўҐаЄЁ ­Ґ в®«м-
Є® бЁ­в ЄбЁб , ­® Ё ᥬ ­вЁЄЁ.
- ЋЎҐбЇҐзҐ­ЁҐ д®а¬ «м­®Ј® ®ЇЁб ­Ёп ᥬ ­вЁЄЁ п§лЄ®ў Ё ЇаҐ¤¬Ґв­®©
®Ў« бвЁ ¤«п ЈҐ­Ґа жЁЁ ЇаЁЄ« ¤­ле Їа®Ја ¬¬.

.
- 8 -


2. “‘‹Ћ‚€џ ‚›ЏЋ‹Ќ…Ќ€џ ЏђЋѓђЂЊЊ›

Џа®Ја ¬¬­®Ґ ®ЎҐбЇҐзҐ­ЁҐ а §а Ў®в ­® ­  п§лЄҐ ‘€ ў ®ЇҐа жЁ®­­®©
б।Ґ „Ћ‘ ЏЉ IBM PC/AT 286/386. Ћ¤­ Є® ­Ґв ЇаҐЇпвбвўЁ© ¤«п ЇҐаҐ­®б 
ҐЈ® ў ¤агЈЁҐ ®ЇҐа жЁ®­­лҐ бЁбвҐ¬л Ё ЏЉ, Ё¬ҐойЁҐ бв ­¤ ав­л© Є®¬ЇЁ«пв®а
п§лЄ  ‘€. ‘«Ґ¤гҐв ®в¬ҐвЁвм, зв® ЈҐ­Ґа жЁп Їа®Ја ¬¬ бЁ­в ЄбЁзҐбЄ®Ј®
 ­ «Ё§  ¬®¦Ґв Ўлвм ўлЇ®«­Ґ­  ­  ЏЉ б ®ЎкҐ¬®¬ ®ЇҐа вЁў­®© Ї ¬пвЁ 1ЊЎ.
ђҐ§г«мвЁагойЁ© Є®¤ Ї®б«Ґ ва ­б«пжЁЁ Ё¬ҐҐв ­ҐЎ®«ми®© ®ЎкҐ¬ Ё ­Ґ вॡгҐв
Ї ¬пвЁ бўлиҐ 1ЊЎ.
.
- 9 -


3. ‚›ЏЋ‹Ќ…Ќ€… ЏђЋѓђЂЊЊ›

3.1. ‡ ЇгбЄ ЈҐ­Ґа в®а  ўҐабЁЁ 2.0

‡ ЇгбЄ Їа®Ё§ў®¤Ёвбп Ё§ Є®¬ ­¤­®© бва®ЄЁ б«Ґ¤гойЁ¬ ®Ўа §®¬

gener2 <list_of_options> <name of source file>

€¬п Їа®Ја ¬¬л gener2,
‘ЇЁб®Є ­Ґ®Ўп§ вҐ«м­ле ®ЇжЁ© ᮤҐа¦Ёв ®ЇжЁЁ:

[-d <directory>] - Їгвм ¤® ¤ЁаҐЄв®аЁп б Ёб室­л¬Ё д ©« ¬Ё
[-s <file_name>] - ўл室­®© д ©« б гЇ Є®ў ­­®© ᥬ ­вЁЄ®©
[-l <file_name>] - ўл室­®© д ©« ¤«п ўлў®¤  Їа®¬Ґ¦гв®з­ле ¤ ­­ле
ў Їа®жҐбᥠва ­б«пжЁЁ. Љ ­Ё¬ ®в­®бпвбп ®иЁЎ-
ЄЁ Ё бва®ЄЁ Ёб室­®© Їа®Ја ¬¬л ­  ¬Ґв п§лЄҐ
[-o <file_name>] - ўл室­®© д ©«, ᮤҐа¦ йЁ© ¤ ­­лҐ ¤«п бЁ­в ЄбЁ-
зҐбЄ®Ј®  ­ «Ё§  ­  п§лЄҐ ‘€++
[-v ] - а §аҐи Ґв ўлў®¤ Ёб室­®Ј® ⥪бв  ў ўле®а¤­®©
Ї®в®Є
[+scr ] - а §аҐи Ґв ўлў®¤ ўл室­®Ј® Ї®в®Є  б ®иЁЎЄ ¬Ё Ё
Ёб室­л¬ ⥪б⮬ ­  нЄа ­

<name of source file> - ўе®¤­®© д ©« б Ёб室­®© Їа®Ја ¬¬®© ва ­б-
«пв®а  ­  ¬Ґв п§лЄҐ.

Ќ ЇаЁ¬Ґа, ¤«п Є®¬ ­¤­®© бва®ЄЁ
gener2 meta2
Ї® 㬮«з ­Ёо Ё¬Ґ­  д ©«®ў Ўг¤гв б«Ґ¤гойЁҐ
meta2.grm - Ёб室­л© д ©«

- 10 -

meta2.sem - бЈҐ­ҐаЁа®ў ­­л© д ©« б ᥬ ­вЁЄ®© (-s)
meta2.cpp - бЈҐ­ҐаЁа®ў ­­л© д ©« б бЁ­в ЄбЁб®¬ (-o)
meta2.log - ўл室­®© д ©« б Ё­д®а¬ жЁҐ© ® Їа®жҐбᥠЈҐ­Ґа жЁЁ (-l)
„ ­­ п Є®¬ ­¤  нЄўЁў «Ґ­в­  б«Ґ¤го饩.
gener2 meta2.grm -s meta2.sem -o meta2.cpp -l meta2.log
‚ १г«мв вҐ а Ў®вл ЈҐ­Ґа в®а  Ї®«гзЁ¬ ¤ў  ®в¤Ґ«м­® ва ­б«Ёа㥬ле
д ©«  meta2.sem Ё meta2.cpp. ЏаЁзҐ¬ ¤«п ва ­б«пжЁЁ ᥬ ­вЁЄЁ ­Ґ®Ўе®¤Ё-
¬®, зв®Ўл ўбҐ Ј«®Ў «м­лҐ ЇҐаҐ¬Ґ­­лҐ Ё Їа®в®вЁЇл дг­ЄжЁ© , ЁбЇ®«м§гҐ¬лҐ
ў дг­ЄжЁпе Ї®«м§®ў вҐ«п, Ўл«Ё ®ЇЁб ­л ў д ©«Ґ б Ё¬Ґ­Ґ¬
<­ з «м­л© бЁ¬ў®« Ја ¬¬ вЁЄЁ>.h
„«п Ї®¤¤Ґа¦ЄЁ Їа®жҐбб  а §Ў®а  ЁбЇ®«м§говбп ¤ўҐ дг­ЄжЁЁ:
int fparser(char *name_file, struct syntax *name)
int fparser(char *string, struct syntax *name)
ЏҐаў п дг­ЄжЁп бзЁв Ґв ўе®¤­®© «Ґ­в®© д ©« б Ё¬Ґ­Ґ¬ name_file,
ўв®а п бва®Єг б Ё¬Ґ­Ґ¬ string.
”г­ЄжЁЁ ў®§ўа й ов иҐбвм §­ зҐ­Ё©:
0 - ўбҐ ў Ї®ап¤ЄҐ
1 - ” ©« ­Ґ бгйҐбвўгҐв
2 - ” ©« Їгбв
3 - ЌҐ¤®бв в®з­® ®ЇҐа вЁў­®© Ї ¬пвЁ
4 - бЁ­в ЄбЁзҐбЄ п ®иЁЎЄ 
5 - ” ©« Їа®б¬®в७,   а §Ў®а ҐйҐ ­Ґ ®Є®­зҐ­
‚в®а®© Ї а ¬Ґва - &<­ з «м­л© бЁ¬ў®« Ја ¬¬ вЁЄЁ>
ЏаЁ¬Ґа ®Ўа йҐ­Ёп Ё§ Ј« ў­®© Їа®Ја ¬¬л.
#include "syntax.h"
extern struct syntax gram;
char log_File[MAXIDENT]; // ­г¦­® Їа®Ё­ЁжЁ«Ё§Ёа®ў вм
if ((outfile = fopen(log_File,"w")) == NULL)
{print_error(30);exit(0);};
gram.outfile = outfile;
fparser(filegrm,&gram));

- 11 -

gram - ­ з «м­л© бЁ¬ў®« ў иҐ© Ја ¬¬ вЁЄЁ.
‚ Їа®жҐбᥠࠡ®вл Ї®«м§®ў вҐ«м Ё¬ҐҐв ¤®бвгЇ Є б«Ґ¤гойЁ¬ н«Ґ¬Ґ­в ¬
бвагЄвгал ¤ ­­ле.

struct syntax {
FILE *outfile; // ўл室­®© Ї®в®Є, Єг¤ 
// ўлў®¤Ёвбп Ёб室­л© ⥪бв
NULL - ўл室­®Ј® Ї®в®Є  ­Ґв
char * tape; // ўе®¤­ п «Ґ­в 
// ¤«п parser а ў­  NULL
// Ё«Ё ᮤҐа¦Ёв ®иЁЎ®з­го бва®Єг
int number; // ­®¬Ґа ⥪г饩 бва®ЄЁ
// ¤«п parser а ў­  0
char * current_symbol; // гЄ § вҐ«м ­ 
// ⥪гйЁ© бЁ¬ў®«
char * token; // ⥪гй п «ҐЄбҐ¬ 
char scr; // ЇаЁ§­ Є ЇҐз вЁ
// 0 - ЇҐз вЁ ­  нЄа ­ ­Ґв
char sem; // ЇаЁ§­ Є != 0 ўлЇ®«­пҐвбп
// в®«мЄ® бЁ­в ЄбЁзҐбЄЁ©  ­ «Ё§
int (*func)(int); // дг­ЄжЁп ®Ўа Ў®вЄЁ ®иЁЎ®Є
// NULL - ­Ґв дг­ЄжЁЁ
};


3.2. ЏаЁ¬Ґа п§лЄ®ў®Ј® Їа®жҐбб®а 

ђ бᬮваЁ¬ ЇаЁ¬Ґа Їа®Ја ¬¬л ­  ¬Ґв п§лЄҐ, ®бгйҐбвў«по饩 а бзҐв
ўла ¦Ґ­Ё©.
‚뤥«Ё¬ Ја ¬¬ вЁЄг ¤«п Їа®ЇгбЄ  Їа®ЎҐ«м­л© бЁ¬ў®«®ў Ё ­ ЇЁ-
襬 «ҐЄбЁзҐбЄЁ©  ­ «Ё§ в®а ­  ¬Ґв п§лЄҐ (д ©« lex.grm).

- 12 -


<lex> ::= <* <­ Ў®а_⥪бв®ў> *>

<­ Ў®а_⥪бв®ў>
::= <* <⥪бв> *> '='
#{ int a;
printf(" %s = ", string);
if ( (a=parser(string,&f_expr)) != 0)
return a;
printf ("%f \n", MEMORY);
}#

<⥪бв> ::= {09,+,-,*,(,),/,.}
#{ strcat(string,lex.token); }#
||= {\11\13,\15,\40}

ѓ« ў­л© ¬®¤г«м .
/* ------------------------------------------------------*/
/* ђ бзҐв ўла ¦Ґ­Ё© */
/* ------------------------------------------------------*/
/*********************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "syntax.h"
extern struct syntax lex;
extern struct syntax f_expr;
extern char string[400];
int print_error (int cod, struct syntax * gram);
// FILE *infile;
char filegrm[] = "expr.txt";
main()

- 13 -

{ int a;
string[0] = '\0';
if ( (a = fparser(filegrm,&lex)) != 0)
{print_error(a,&lex);// exit(0);
printf(" \n %s ",f_expr.current_symbol);
};
return(0);
}

” ©« lex.h ᮤҐа¦Ёв б«Ґ¤гойЁҐ ®ЇЁб ­Ёп.
#include <stdio.h>
#include <string.h>
#include "syntax.h"
// int print_error (int cod, struct syntax * gram);
extern struct syntax lex;
extern struct syntax f_expr;
extern float MEMORY;
char string[400];
‚лЇ®«­Ё¬ ЈҐ­Ґа жЁо.
gener2 lex.grm -v -s lexsem.cpp -l
Ё ®вва ­б«Ёа㥬 ¬®¤г«Ё lex.cpp lexsem.cpp Ё Ј« ў­л© ¬®¤г«м.

<f_expr> /* ­ з «м­л© бЁ¬ў®« Ја ¬¬ вЁЄЁ*/
::= <EXPR>
#{ MEMORY = Expression[i]; }#

<EXPR> /* ђ бзҐв ўла ¦Ґ­Ёп */
::= <EXPR> ( '+' <SU>
#{ Expression[i] += Summand[i];}#
| '-' <SU>
#{ Expression[i] -= Summand[i];}#

- 14 -

)
||= <SU>
#{ Expression[i] = Summand[i];}#


<SU> /* ђ бзҐв §­ зҐ­Ёп б« Ј Ґ¬®Ј® */
::= <MU>
#{ Summand[i] = Multiplier;}#
||= <SU> ( '*' <MU>
#{ Summand[i] *= Multiplier;}#
| '/' <MU>
#{ Summand[i] /= Multiplier;}#
)


<MU> /* ђ §Ў®а Ё ўлзЁб«Ґ­ЁҐ ¬­®¦ЁвҐ«п */
::= <DEC>
#{ Multiplier = Decimal; }#
||= 'M'
#{ Multiplier = MEMORY;}#
||= '('
#{ i++;}#
<EXPR>
')'
#{ Multiplier = Expression[i];
i--;
}#

<DEC> /*Їа®Ја ¬¬  а §Ў®а  ¤ҐбпвЁз­®Ј® зЁб« */
::= {09}
#{ strcpy(str,f_expr.token);}#

- 15 -

<A>
#{ Decimal = atof(str);}#

<A> ::= .{09}
#{ strcat(str,f_expr.token);}#
||= *

‚ ¬®¤г«Ґ f_expr.h ­ е®¤пвбп ®ЇЁб ­Ёп
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "syntax.h"
extern struct syntax f_expr;
char str[400];
int i;
float MEMORY;
float Expression[100],Summand[100];
float Multiplier;
float Decimal;

‚лЇ®«­Ё¬ ЈҐ­Ґа жЁо.
gener2 f_expr.grm -s f_exprsem.cpp-v -l
Ё ®вва ­б«Ёа㥬 ¬®¤г«Ё f_expr.cpp, f_exprsem.cpp. ’ ЄЁ¬ ®Ўа §®¬,
Їа®ҐЄв Ўг¤Ґв б®бв®пвм Ё§ ¬®¤г«Ґ© Ї®«м§®ў вҐ«п.
- Ј« ў­л© ¬®¤г«м
- lex.h
- lex.cpp бЈҐ­ҐаЁа®ў ­ Ё§ lex.grm
- lexsem.cpp бЈҐ­ҐаЁа®ў ­ Ё§ lex.grm
- f_expr.h
- f_expr.cpp бЈҐ­ҐаЁа®ў ­ Ё§ f-expr.grm
- f_exprsem.cpp. бЈҐ­ҐаЁа®ў ­ Ё§ f_expr.grm

- 16 -

Ё бв ­¤ ав­ле ¬®¤г«Ґ©
syntax.h
fparser.obj
parser.obj

.
- 17 -


4. ‘ЋЋЃ™…Ќ€џ ЋЏ…ђЂ’Ћђ“


4.1. ЋиЁЎЄЁ ў Їа®Ја ¬¬Ґ.

- Error in program parser: <error_code>
„ ­­ п ®иЁЎЄ  ўл¤ Ґвбп ў б«гз Ґ ­Ґ¤®ЇгбвЁ¬®© ¬®¤ЁдЁЄ жЁЁ Їа®Ја ¬¬л
parser Ё«Ё Ја д  б®бв®п­Ё©. ‚ н⮬ б«гз Ґ Ї®«м§®ў вҐ«о ­Ґ®Ўе®¤Ё¬® ®Ў-
а вЁвм ў­Ё¬ ­ЁҐ ­  а Ў®вг бў®Ёе дг­ЄжЁ© б ®ЇҐа вЁў­®© Ї ¬пвмо.
- Parser stack overflow
‚ б«гз Ґ ўв®а®© ®иЁЎЄЁ ­Ґ®Ўе®¤Ё¬® 㢥«ЁзЁвм а §¬Ґа а Ў®зҐЈ® б⥪  ў
д ©«Ґ gener2.cpp Ё ЇҐаҐва ­б«Ёа®ў вм д ©«.
- Input file Ё¬п_д ©«  empty file
- Input file Ё¬п_д ©«  not found
€б室­л© д ©« Їгбв, ­Ґ®Ўе®¤Ё¬® Їа ўЁ«м­® § ¤ вм ўе®¤­го Ё­д®а¬ жЁо.
- Option uncorrect usage: error characters
ЋиЁЎЄ  ў § ¤ ­ЁЁ ®ЇжЁ©.
- Option Ё¬п_®ЇжЁЁ: multiple usage
Њ­®¦Ґб⢥­­®Ґ § ¤ ­ЁҐ ®ЇжЁЁ.


4.2. ”®а¬ в б®®ЎйҐ­Ёп ® бЁ­в ЄбЁзҐбЄ®© ®иЁЎЄҐ.

‚ б«гз Ґ гбЇҐи­®Ј® § ўҐа襭Ёп Їа®Ја ¬¬л ўл¤ Ґвбп б®®ЎйҐ­ЁҐ
- Analysis of the file "<file_name>" completed successfully
‘®®ЎйҐ­ЁҐ ®Ў ®иЁЎЄҐ Ё¬ҐҐв д®а¬ в
- syntax error: filename: "<file_name>" line: "<line_number>" column:
"<column_number>"
error_token -> "<erroneous_token>"
ЋиЁЎЄ  ўл¤ Ґвбп б в®з­®бвмо ¤® ®иЁЎ®з­®Ј® бЁ¬ў®« .
Соседние файлы в папке 2