programavimo kalba - PASCAL PASCAL-S KALBA IR JOS TRANSLIATORIUS IBM PC KOMPIUTERIAMSöio apra÷ymo tiksla s - supaýindinti programuotojus, jau turinßiuspakankamÝ patirtõ dirbant PASCAL kalba, su pagrindinia istransliatoriaus darbo principais konkreßioje jo poaibio PASCAL-Srealizacijoje IBM PC kompiuteriams .1. TRANSLIATORIAUS SÜVOKA IR PASKIRTISüodis transliatorius yra kilñs i÷ anglù kalbos ýodýio "transl ate"- versti. I÷ principo tai yra programa atliekanti vertójofunkcijÝ tarp ýmogaus ir kompiuterio. J i verßia programÝ,para÷ytÝ auk÷to lygio programavimo kalba - PASCAL ar kokia kita -õ kompiuteriui su prantamÝ ma÷ininñ kalbÝ susidedanßiÝ vien i÷nuliù ir vienetù.Skiriamos dvi transliatoriù rû÷ys: komp iliatorius irinterpretatorius. Su kompiliatoriais yra susidûró visiprogramuotojai. Kompiliatoriai ti esiogiai verßia programÝpara÷yta auk÷to lygio kalba õ ma÷ininõ kodÝ. Taip sukompiliuotosprogramos vy kdomos labai greitai, bet yra priklausomos nuokompiuterio, kuriam jos buvo sukompiliuotos.Tuo tarpu interpretatorius pradinñ programÝ verßiÝ õ tarpinñpseudo kalbÝ (taip vadinamÝ p-kodÝ). öi pseudo kal ba yra artimama÷ininei kalbai, bet tokios kalbos kompiuteris vis tieknesupranta, todól reikalinga an tra interpretatoriaus darbo fazó -pseudo kalba i÷reik÷tos kalbos vykdymas arba interpretavimas.Taip para÷ytos programos i÷vengia priklausomumo nuo kompiuterio,bet yra vykdomos lóßiau. Kadangi mums buv o svarbu para÷ytilengvai perkeliamÝ transliatoriù õ kitas kompiuterinesplatformas, todól bûtent ÷is variantas ir buvo pasirinktas ra÷ant÷õ transliatoriù.Toliau apývelgsime pagrindinius transliatoriaus darbo etapus.Kiekviena programavimo kalba susideda i÷ simboliù. Simbolis ÷iuoatveju suprantamas ne kaip atskiras kompiuterio ýenklas, bet kaip÷iù ýenklù grupó - leksema. Atskiru atveju leksema gali s utaptisu vienu ýenklu (pvz.: ';' - kartu ir kompiuterio ýenklas irleksema). Transliavimo etapas, per kurõ ýenklù seka verßiama õsimbolius (leksemas) vadinamas leksine analize. Transliatoriusgali apdor oti tik sintaksi÷kai ir semanti÷kai teisingusprogramavimo kalbos sakinius. Sintaksó - programù ir du omenùvaizdavimo taisyklós, o semantika - tai susitarimù visuma,apra÷anti kalbÝ ir paai÷kinanti ta ka lba uýra÷ytù sakiniù prasmñ.Transliavimo etapas, kurio metu tikrinama, ar programos sakiniaisudaryti pagal programavimo kalbos sintaksós taisykles vadinamassintaksine analize. Paprastai transliatorius sakinius tikrinapagal sintaksines diagramas. Pagaliau teisingÝ sakinõtransliatorius jau gali "i÷ver sti". öis etapas vadinamas kodogeneravimu. Interpretatoriaus atveju ÷is kodas dar yrainterpretuojama s, t.y. vykdomas.Lengviausia susipaýinti su transliatoriaus darbu nagrinójantinterpretatoriù, nes i÷ ai÷kója ir transliavimo ir interpretavimoprocesas. Taip buvo padaryta ir mûsù nagrinójamoje PASCAL-S sistemoje.PASCAL-S sistema yra sudaryta kaip kompiliatorius, kuristransliuoja PASCAL-S programas õ p seudo kodÝ (taip vadinamÝp-kodÝ), kurõ vóliau õvykdo algoritmas, vadinamasinterpretatoriumi. Fakti÷k ai, ÷ios abi dalys apdoroja vienÝPASCAL-S programÝ. öi sistema galós transliuoti tik PASCAL-Skalba p ara÷ytas programas, kuri yra apra÷oma ýemiau.2. PASCAL-S KALBAPASCAL-S kalba buvo sukurta mokymosi t ikslais ÷veicarùmokslininko N.Wirth, kuris beje sukûró ir standartinñ PASCALkalbÝ. Tai sumaýintas st andartinio PASCAL'io poaibis, t.y.kiekviena PASCAL-S kalba para÷yta programa be pakeitimù gali bûtis ukompiliuota standartiniu PASCAL kompiliatoriumi. Todól ÷iameapra÷yme daug kur PASCAL-S struktûros v adinamos tiesiog PASCAL'iostruktûromis. Ten kur bûtina atskirti PASCAL-S ir PASCALstandartÝ apra÷yma s yra konkretizuojamas.Standartinós PASCAL kalbos ir jos poaibio PASCAL-S skirtumai yraminimalûs, ka dangi ÷is apra÷ymas skirtas programuotojams jauýinantiems PASCAL kalba, mes neapra÷inósime viso PASC AL-S poaibiotik paminósim jo ir standartinio PASCAL'io skirtumus.PASCAL-S kalbos duomenù tipai yra s veikieji ir realieji skaißiaibei loginós reik÷mós. Jie gaunami per standartinõ char tipÝ,kadangi vis i skaißiai kompiuterio atmintyje yra saugomi atskirùbaitù pavidalu. ô PASCAL-S neõtraukti standartin iai vardinis iratkarpos tipai.PASCAL-S turi tik 2 rû÷iù duomenù struktûras: masyvÝ ir õra÷Ý (bevaria ntù). Kad neapsunkinti kalbos õ jÝ neõtrauktos aibiù beifailù struktûros. Vieninteló i÷imtis - 2 sta ndartiniai tekstiniaifailai - input ir output - kuriù nereikia apra÷yti. Be toPASCAL-S poaibyje nóra rodykliù tipù ir dinaminiù struktûrù,neõtraukti ir pakuoti tipai (pastarùjù nóra ir Turbo PASCAL'yj e).PASCAL-S apima daugumÝ PASCAL sakiniù struktûrù (sudótinius,sÝlyginius, i÷renkamuosius ir ciklù s akiniai). Vienintelósi÷imtys yra with ir goto sakiniai. Pastarasis buvo neõtrauktasdól principinio P ASCAL-S naudojimo mokantis struktûrinioprogramavimo. Procedûros ir funkcijos õtrauktos pilnai,vienin teló i÷imtis, kad procedûros ir ir funkcijos negali bûtinaudojamos kaip parametrai.DetalizuotÝ PASCA L-S sintaksñ galima pamatyti i÷ priede nr.2pateiktù jos sintaksiniù diagramù.Daugiametó patirtis rod o, kad nuoseklumo (nuosekliùjù failù)sÝvoka yra ypatingai svarbi kompiuterinós technikos supratimu.N epaisant to, kad nóra apra÷ytù failù, PASCAL-S gali bûtinaudojamas nuosekliùjù failù supratimui visi ÷kai gerai, nes yra 2standartiniai tekstiniai failai. Autoriai apgalvotai nusprendónenaudoti operato riù-anachronizmù put ir get ir apriboti failùoperacijas operatoriais read (õójime) ir write (i÷ójime ). Taippat õtrauktas paprastas, bet lankstus PASCAL'io i÷ójimo"formavimas". Praktikoj ÷is patogumas yra ne tik naudingas, bettaip pat lengvai i÷mokstamas.Galimi standartiniai objektai PASCAL-S kalboje yra ÷ie:Konstantos: true, falseTipai: integer, real, boolean, charFunkcijos: abs, sqr, odd, chr, crd, succ, pred, round, trunc, sin, cos , exp, ln, sqrt,arctan, eof, eoln,Procedûros: read, readln, write, writelnFunkcij os pred ir succ yra pritaikytos tiktai darbui su char tipoargumentais. Ord argumentas gali bûti char , boolean ar integertipo.3. PASCAL-S SISTEMOS REALIZACIJAPASCAL-S transliatorius yra para÷ytas naudo jant auk÷to lygiostandartinñ PASCAL kalbÝ, kuri prakti÷kai nepriklauso nuokompiuterio ir yra lengvai perkeliama õ õvairias kompiuterinesplatformas. Todól perne÷ant PASCAL-S programas prie kitokiokompi uterio, uýtenka perkompiliuoti PASCAL-S kompiliatoriù, irPASCAL-S kalba para÷ytos programos vól bus tinkamos naudojimui.Be to PASCAL kalba yra plaßiausiai naudojama programavimo kalbamokymui, todól la bai tinkanti mûsù uýsibróýtam tikslui - i÷mokytitransliatoriaus darbo principù.Be vykdymo nepriklaus omumo vis dól to kompiliatoriuje egzistuojataip vadinamas antrinis priklausomumas nuo kompiuterio. T ai tokspriklausomumas, kurio negali numatyti ir auk÷to lygio kalba (÷iuoatveju PASCAL'is). Tai tokio s sÝvokos kaip maksimalus sveikasskaißius, reik÷miniù simboliù varde skaißius ir kitos. öiedydýiai p riklauso nuo konkreßios PASCAL realizacijoskompiuteryje.üemiau i÷vardintos mûsù transliatoriuje naud ojamos nuo konkreßiosrealizacijos priklausomos konstantos:alng - nurodo reik÷miniù ýenklù skaißiù va rde;llng - nurodo didýiausiÝ leistinÝ eilutós, perskaitomos i÷ sistemos, ilgõ;tmax - nurodo, maksim alù vardù skaißiù, kuriuos galima apra÷yti kompiliuojamoje programoje. Kompiliuojamos programos ilg is yra ribotas. Perýengus ÷iÝ ribÝ bus uýfiksuota klaida;bmax, amax - analogi÷kai kaip tmax riboja, atitinkamai, maksimalù blokù (procedûrù, funkcijù, õra÷ù) skaißiù ir masyvù skaißiù;cmax - maksim alus kodo ilgis;stacksize - interpretatoriaus naudojamo steko dydis;emax - didýiausia realaus skaißi aus eksponentós teigiama reik÷mó;emin - maýiausia realaus skaißiaus eksponentós neigiama reik÷mó. D augumai kompiuteriù emin = -emax. Per emin ir emax yra apibróýiamas didýiausias ir maýiausias realu s skaißius: maxreal = 10 laipsnyje emax minreal = 10 laipsnyje emin;kmax - maksimalus de÷imtainiù skaitmenù realiame skaißiuje ilgis; kmax = m log 2, jei m - dvejetainiù ski lßiù mantisóje skaißius;ermax - didýiausias leistinas klaidù skaißius;omax - didýiausia kodo reik÷m ó;lmax - didýiausias leistinas blokù õdójimo lygis;nmax - maksimalus ilgas sveikas skaißius (PC AT = 2**31-1) reikalingas kodui;xmax - maksimalus sveikas skaißius (PC AT = 2**15-1);lineleng - didýiau sias i÷vedamos eilutós ilgis procedûrose write/writeln;c2max - maksimalus realiù konstantù skaißius .Be nepriklausomumo nuo kompiuterio naudinga paminóti tokias ÷ioPASCAL-S transliatoriaus charakteris tikas:1) Kontroló negrÝýinama operacinei sistemai tarp kompiliavimo irvykdymo. Sukompiliuoto kodo ne reikia i÷ naujo pakrauti õ atmintõ,jõ galima i÷ karto vykdyti ir tai sutaupo laiko.2) PASCAL-S yra t ikros standartinós PASCAL kalbos poaibis.ProgramÝ, para÷ytÝ PASCAL-S kalboje, galima sukompiliuoti i rõvykdyti su bet kuriuo pilno PASCAL kompiliatoriumi.3) Jei õvyko klaida darbo momentu, vykdymas per traukiamas iri÷spausdinamas vartojamù vardù ir kintamùjù sÝra÷as kartu supertrauktos vietos koordina tómis ir paai÷kinimu, dól ko õvykopertraukimas.PASCAL-S sistema veikia tokia tvarka: 1. Atidar omas kompiliuojamos programos failas. 2. Inicializuojami globaliniai kintamieji. 3. Apdi rbama kompiliuojamos programos antra÷tó. 4. ô vardù lentelñ õra÷omi standartiniai PASCAL-S var dai. 5. Kompiliuojama visa programa kaip vienas blokas. 6. Jei nurodyta i÷vedamos kintam ùjù, blokù ir kitos lentelós. 7. Interpretuojamas sukompiliuotas kodas.Kadangi PASCAL-S yra in terpretatorius, dirbantis i÷ komandinóseilutós, tai visù pirma reikia nuskaityti kompiliuojamosprogr amos (failo) vardÝ i÷ komandinós eilutós. Procedûra EXTENTpatikrina, ar failas turi kokõ nors i÷plót imÝ. Jei i÷plótimo nóratai EXTENT procedûra prideda .PAS i÷plótomÝ. Po to bandoma ÷õfailÝ atidaryti skaitymui. Jei toks failas neegzistuoja arba joneõmanoma atidaryti skaitymui, arba komandinó eilutó i÷ visotu÷ßia, tai transliatoriaus darbas uýbaigiamas.Taip pat i÷ komandinós eilutós gali bûti nuska itytas papildomasparametras t. Tai rei÷kia, kad po programos kompiliavimo busparodytos õvairios lent elós (ýiûr. skyriù GLOBALINIAIKINTAMIEJI).Antrame etape yra uýpildomas specialiù simboliù masyvas SP S. Jisyra naudojamas leksinós analizós procedûroje INSYMBOL. Jame õatitinkamo simbolio (pvz. '+') vi etÝ õra÷omas atitinkamasidentifikatoriaus vardas i÷ tipo SYMBOL (pvz. plus).Kintamiesiems (lc, t, b, a, sx, c2), kurie rodo paskutiniuslenteliù (kodo, vardù, blokù...) elementus (lenteliù uýpildymolyg õ), yra priskiriamos reik÷mós, atitinkanßios lenteliùpradýias. Kadangi prie÷ õra÷ant naujÝ elementÝ õ atitinkamÝlentelñ, ÷ie kintamieji yra padidinami (i÷skyrus sx, lc), tai jiepradýioje turi turóti r eik÷mes vienetu maýesnes negu lenteliùpradýios. Taßiau kintamasis b tiksliai atitinka lentelós BTABp radýiÝ nes pirmasis elementas BTAB[0] yra i÷ kartoinicializuojamas.Treßiame etape apdorojama kompili uojamos programos antra÷tó.Pagal, PASCAL-S sintaksñ, programa turi turóti antra÷tñ (ýiûr.priedÝ Nr.2 ). Jei antra÷tós nóra programa nóra kompiliuojama.ô vardù lentelñ TAB i÷ karto yra õra÷omi standarti niai PASCAL-Stipai, konstantos, funkcijos, procedûros. (Apie juos ýiûr. skyriùPASCAL-S KALBA). Tai a tlieka procedûra ENTER, perduodant jaivardÝ, jo paskirtõ, tipÝ bei adresÝ (kintamiesiems) arba dydõ( tipams) arba funkcijos numerõ (standartinóms funkcijoms) arbaprocedûros numerõ (standartinóms proced ûroms). Visi ÷ie vardaiapibûdinami kaip nulinio lygio, t.y. bloko, gaubianßio visÝprogramÝ, vardai.D vi pagrindinós transliatoriaus dalys yra kompiliatorius irinterpretatorius. Jù atitikmenys PASCAL-S sistemoje yraprocedûros BLOCK ir INTERPRET. Tarpusavyje jos susijusios perglobalinius kintamuosius. Plaßiau apie kompiliavimÝ irinterpretavimÝ ýiûr. skyrius PROGRAMOS KOMPILIAVIMAS ir KODOINTERPRETAVI MAS.Jei komandinóje eilutóje buvo nurodytas parametras t, tai poprogramos kompiliavimo yra i÷vedamos vardù, blokù, masyvù ir kodolentelós (TAB, BTAB, ATAB, CODE). Tai pagalbinó priemonóprogramos tikri nimui arba gilesniam PASCAL-S supratimui. öioslentelós yra apra÷ytos skyriuje GLOBALINIAI KINTAMIEJI