Proponowana metoda pozwala uniknąć wielu wad występujących w stosowanych dotychczas rozwiązaniach, powoduje jednakże pew
ne zawężenie klasy języków wejściowych. Wydaje się jednak, że przy nieznacznej modyfikacji koncepcji ogólnej L-analizatora można by wykonywać analizę leksykalną dla dowolnego języka bez- kontekstowego. Zmiana ta powinna polegać na tym, że S-analiza- tor wywołując L-analizator wskazywałby mu jednocześnie, jaki atom leksykalny powinien pojawić się na wejściu. Pozwoliłoby to uniknąć niejednoznaczności napotykanych podczas analizy leksy
kalnej, które w opisanej realizacji są usuwane przez ogranicze
nia wymienione w punkcie 4.4.5.
Taka metoda byłaby optymalna, ponieważ L-analizator byłby generowany całkowicie automatycznie, a jednocześnie można by go było stosować do analizy wszystkich języków bezkontekstowych.
Wymagałoby to jednak zmiany koncepcji również S-analizatora.
57
-Chciałbym podziękować prof. dr hab. W.M. Turskiemu za łi- ozne konsultacje i uwagi dotyczące pracy. Dziękuję również doo. dr.hab. A.W. Mazurkiewiczowi ^którego cenne uwagi po
mogły poprawić pierwotną wersję pracy. Ponadto dziękuję p.p. J. Konaewioz-Krzemień, J. Borowcowi, A. Łukasiewiczo- wi i J. Witaszkowi za pomoc przy rozwiązywaniu wielu proble
mów związanych z praoą.
Bibliografia
[1 ] BLIKLE A.x Automaty i gramatyki. Wstęp do lingwistyki matematycz
nej, PWN, Warszawa '197'!.
[2 ] COCKE J., SCHWARTZ JiT. : Programmi g Languages and Their Compilers.
Preliminary notes. Courant Institute of Mathematical Sciences:
New York University, 1970.
[j] FELDMAN J., GRIES D.: Translator Writing System, CACM, 1968, 2, 77-113.
I4] GRIES D.: Compiler Construction for Digital Computers, John Wiley and Sons, Inc. 1971.
[5 ] HOPCROFT J.: An NlogN Algorithm for Minimising States in a Finite Automaton, STAN-CS-71-19ÇL 1971.
[ć] HOPCROFT J., ULLMAN J.D.: Formal Languages and Their Relation to Automata, Addison-Wesley Publishing Company, Inc. 1969.
[7 ] H0PG00D F.R.A. : Compiling Techniques, American Elsevier Publishing Company, Inc. New York 1969.
[8 ] HOPGOOD F.R.A., BELL A.G. : The ATLAS ALGOL Preprocessor for non Standard Dialects. 1967 CJ, 4, 360-364.
[9] IGLEWSKI M., -KRZEMIEŃ R. : Analiza leksykalna, ETO Nowości 1974-, 3.
[1 0 ] INGERMAN P.Z.: A Syntax-Oriented Translator, Academic Press, 1966.
[11 ]• JOHNSON W.L., PORTER J.H., ACKLEY S.I., ROSS D.T.: Automatic Generation of Efficient Lexical Processors Using Finite State Techniques, CACM, 1968, 12, 805-813.
[12] JOHANSEN P.: Construction of Recognition Devices for Regular Lan
guages from Their Backus Normal Font Definition, BIT, 1966, 6, 294-309..
[13] KNUTH D.E.: Sorting and Searching: the Art of Computer Program
ming, Addison-Wesley Publishing Co., Inc. 1970, t. 3.
[14] KONCEWICZ J.: Preliminary Analysis of ALGOL-60 Source Programs for ZAM Computers, Algorytmy, 1969, 10, 77-68,
[1 5 ] LECARME 0.: Un générateur d'analyseurs lexicaux. Doc. de travail:
Université de Montreal, 1973, nr 40,
[16] LYNCH W.C., PIERSON H.L.: A Finite State Transducer Model for Com
piler Lexical Scanners, IFIP 68, North-Holland Publishing Co., Amsterdam 1969.
[17] KALUSZYiiSKI J.: Podgraraatykj elementarne składni Algolu 60, Algorytmy, 1970. 13. 17-34.
[18] Mc CLURE R.M. : TMS - a Syntax Directed Compiler, Proceedings ACM National Conf., 1965.
[19] NAUR P. ed.: Revised Report on the Algorithmic Language ALG0L-60, CACM, 1962, 1, 1-1?.
¿20] PLASKCV J., SCHUMAN S.: The TRANGEN System on the M460 Computer*
Computer Associates Inc. Report, 1966.
[21] REYNOLDS J.C.: COGENT Programming Manual, ANL-7022 Report, 1965.
[22] ROSEN S.: A Compiler Building System Developed by Brooker and . Morris, 'CACM, .1964, 7, 403-414.
[23] ROSS D.T.: The AED Approach to Generalized Computer-Aided Design, Report ESL-R-3 0 5 , MIT, 19 6 7.
[24] SCHSIDIG H.: ATWS: A Translator Writing System, Bericht nr ?219, TUM, 1971.
[25] SQUIRES B.E.: Lexical Analysis by a Precedence Grammar, Univer
sity Illinois Dept. Computer Sciende Report, 1966.
[26] TURSKI W.M.: Struktury danych, WNT, Warszawa 1971.
[27] WALIGÓRSKI S,: Algebraiczna teoria automatów, Algorytmy, 1969, 11.
[28] V/IRTH N., WEBER H.: EULER - a Generalization of ALGOL, and its Formal Definition, CACM, 1966, 1, 13-25: CACM, 1966, 2, 89-99.
[29] Zakład Teorii Translatorów IMM: Projekt koncepcyjny metatranslato-ra, Raport wewnętrzny, 1974,
- y~j ~
DODATEK A. Program realizujący moduł analizy leksykalnej
r c f a m f r c c f c u í u c f t i c n s i m j m;
P C F A N : F RCC E C U F E P P T I C N S ( M ) N ) ;
f\J <\J (VI •—I
PCE AS : PPCCECI JRE CRT K ' S S t EA I S ) ;
ESC SIASE;
e a s e : PRCcrruRE;
r e i n F i x r r p i n a f y; CCI Eü C EAP120 ) V A RY I NG;
CCL E2 C E A P ( 2 * ) VARYING:
FUT U S T ( ' E A S E ' » ; E2*VYr- I K . S A7KA;
E4 : E2 = S Y E E T A 8 . S ’» f ' e C L O ‘ l ) ; 1F E2 = E 2 TEES CC TO E i ;
IF E3 = *• TE EN
CC*
s y p p t a e( E l 1 =KYMK? . C-C TC E i ;
e s c: I F E X S TEES
cc:
E1 = E u i ;
CC TC E4 ; ESC;
E L S E GC TC ELAC2;
H5: iCRES = E 1 ; .
ESC EASE ;
S F A C J A : FPCCECURE;
PUT l 1ST ( ’ S F A C J A ' ) ; S i : I F A{ ] ) = • « TE EN
CC *
If’k EC TEÉN
' cc;
1 = I -» 1 ; GC TC s i ;
ESC;
E L S E
cc;
REAC F I L E I S Y S I N ł I NTC1A1;
FUT CAT A ( A 1 ; 1=15
CC TC S i ; FSC;
ESC S F A C J A ;
SUSEP: FRCCECLRE;
CCL CYFRA CE AR ( l*' ł IS' JT ( ' 12 2 A 5Ć7 ESC ' ) CCI S I F1XEC E ISA FY ;
CCL S 2 F l Y f C P I N A P Y ;
PUT L1ST ('SUPER*);
S1=0;
CALL SFACJA;
N2 : S 2 = I S C E X ( C Y F F A , A ( 1 1 ) ; ] F S2-' = C TEES
CC;
1F S2= 10 TEEN S2=C;
S1 = S 1* 1CEN2;
1= Hi:
CC TC S ? ; ESC;
63
RC.FAN: PP CC ECUP E CTT ICNSERA I M ;
^*jN->>4ï'J'VjJtv»U»U»UJLOrofOr01\>f\>>— ♦— H M l'O H H
P C F A E : F RCC £ CUR E C F I ! t E S (!' A IN ) ;
(Ni <\Í CM
FRCCECUPf c r n c f ' S l f - M M ;
(\)roik>vuu)rorv>/Mrou»OJUJi\iroH-h-'
ror^»oJoJ.\iN:r>j*—►-•rv»rvjroH-*H-*pors1)rvjr\ji\)rorsjf>o
71
PCFAN: PRCCECURE C R T I C N S ( F A I N ) ;
75
-RCFAN: PPCCEOUPfc C PT IC K S ( PA I M i
NES1
• e I. A n 3 5 PUT L I S T ( U i KRC1KA S Y r ' B T A e ' ) S K I P ; CC TC F O ;
e i A M : PUT L I S T P P P A K CE.UKPGPKA PC NLKER7E P P C O L K C J l ' I S K I P ; CC TC F C F ;
P L A C 5 : PUT L I S T C Z L A PPAWA STPCKA PRCCL.KC J I ' ) 5 K I F ; CC TC f c f;
PCAC6: PUT L I S T I ' C F A K S Y " P C L U STAP 1CV ECO ' I S K I P ; CC TC FCK;
/ * Z A M A S T PCP OAC K C M E C FC F Y R Z L C E N I L bYCPLKCV»*/
RQMtENC R C F A M
d o d a t e k :
75
K (H t. :
DODATEK C. Przykład zastosowania modułu analizy leksykalnej do programu
$»»6146.10U63M«C $>»6146.77*6(1 12*1*
lirpitl.lCMitli*1]
C 3t»ei»e.TCKi<2*M*i«i c jMH/t.jY»eei«jłM*f*
t’ lt»MiM(MI}ll*'l'l M !1»ri4E.T(KT(!<M«l'6 i !i'nii.!»*ia(wi«*«' I 3»*6166.S7*6CU3łM»6«
$• i«»n»i.T(Mi«ii<'i'(
r <Y»rK(.SMicii«4>**v(
k' $7*6146.10»M4M*»«ł I1* llirUM(l1IJll>M'I I $7*6146.S»»6ClMł>»«2* !ł»!14M»HCU!«l«‘»'
*• snrui.iCMütM'M'i st»»u6.$7*6cicî<m
ist* $ 1*11 4*.io.imi«*it $>»ri»r.n»rci<(3M*i$K*
i j i * e i » * . j i * e c i f * 3 M * i 5 » ' n » « i « r . i c » i i * i M * i •* $ Y * 6 i* * .$ Y * r c ii6 4
4(48 M l 1- *0*1 . FC4* M ( KMHOi'1'6
.217-*tic*4i.4ccv»cj4 n.211* *5*i 4uir*4i.4«iij«cicn.;si* 3
*iirk*i.kij!ci8(t,777* jo *i<itk*i.*tci«cj*n.2;t**o*e
4HC441.F47tJ2CIMl.731* 0*8 4l1C441.IF7fJSClfO.J4>. 2 40041.njJC 2 1M 1.22 7*4H041.ktJ5CTHl.74l-21
• l1C»41.F(Ct*CJ4(l.?4l**0*l 8t-1C»M.FB2tJSC1IO.a:i- 3 4lirk41.4ij«CIMl.?27* 33 40041.67 CtBC J* O »231-*C«8 411(441. FfItj3CtM1.7«l* ? 4llC*4l.ktJ!CICO.;(l* *4
9*3 4t1C*4T.F*7t JSCH 0.777* 3 U1C*«l.kt J3C1M1.271*
.211 79 .211
huim.mukiiim»* c .nic»4i.*iri«(j*i;,2ii**c*r
H U M t . l f K J S C I E I E t l I l i C f
«lirm «, *l1CP»l.fF7l JSCU O.W )• C «llCP4l.PVJKirta.3Vt«
niCP41.PVjSCIII2.4r,. C •UCkJI.PCCl'CJJO.ici-C'' 4llCMMIIfjSCI(U.<ll> C H1(M1.V1J]C)(I}|4||< t
îi'irm uriTun'l.. «HCPJl.FF7CJStJHJ.4JI. .« âllC»H.klj!CI(IM7H 4UCMl.Ff(l*CJ4l2,42).<l *f ilK»l!.HI|J!Clill,4M< 0 4HC641.H.JC1H?,4J|. 3 U;*C6#1.»»Cl«CJJU.Ûi.»C*f AUCP*1.FF2(JSCIH7.44). e •HCPJ1.P1JSCIH7.44)« f
• • • n ; c m . . . i u s c m i . * ! f t u , c f i i . » j i c i c i > . < » .
4UC*11.FEClPCJ4O.V|.*0*r 4iic6Ji.vijscif ij.n. ? AHtMl.FFJI JiClfO.UI. C
5** JHCP J7.FF7I JSCIM J.1S 1'
«11C6J1.PECC»CJ4 0,17 )■•}•( HTCM1.ukJSC 1H>. )})i Jl1CPA1.PVJSCIfO.il). .„9 JUCPJ1.*ICliiCjJo'oi.*C.f 4UC4J1.FF2E JSCIEO.I4). 0 4HCMl.klj:ctEO*14|. C
.î. *HCPJ1.FP7< JSC IIfl.IS 1- r 4L1C4P1.P1 j'CIf li.iv I. rît « »hcpji.miijscuo.io. c 411(441.kV.SCUO,)*). 0 «c 1(441.(tCl.CJ/IÏ.KI.'Cr 4UCM1.Pt7CjKICO.lll. C 4llC6J1.kijsciH3.nl. c
4110*1 itri.rj.n 1.1 î. ' ' tJ 11'*** ® * 0.1*1" »01CP*1.F*2*J!C1HÎ,1V». c «11(6*1. kvjsctro.lfl.C
«iiCPAi.kvjscico.ivi. c 4HC64i.prciB(j«(3.iv).*o*t AUCP41.FJ7CJSCII0.7CI. 0 »UCP4l.bVJSCKO.2C). C
„„„„„ ... «kmi.mhjmiiii.iii. < ... . 411(441. »1J!C1H3.7!>. c 4UCP41.FrCl*(J4(*.2<).*C«p
»(1CP»1.F»7tJSCIEt).2<l* 0 4UrP41.klJKirO.20« C
f 4UCM1.kVJSCUO.77t.
4llCP41.kVJSClEO.ad* 4UCP41.F47lJSCUO.2VI. 9 9 4UCP41.BICtBCJ40.7f »UCP41.P1 JSC 1H 2.2V I-l.'C't r
«WM, «n.tj.t, .r. ' MWM1.MJK11I1.W1.
îiîiîîî-!î5î5iîi TÎÎ 4UC441.»l..Cir 0 . 2 1 ) . 3 . »«KMl.MHJKIlll.il *UC*41.4C(lBCJM7,211-*D*tW t 4UCP41.rtJCJSClfO.271. C •UCPJlIktJSCirO.ïi). c
««MI.WI1JKII11.U». t MWM1.MJKIIII.11I.
4llCP41.trcu*CJ40tl)).*v*( <11(6*1.4*21 J«CIH1.74|. C 4UC441.41JKIfO.J41. o , 4HC6.!..»rtWJ*0,HI*V«
4UC641.F4ICJSCIIO.T91« .0 •WrP41.kVJSCICO.lSP* C
*11(641 licurjjl) »HO»!.*»« JSCH «3.ÎO- ( 4HC64I.VlJSCIf O.V4I.
4(1C4<1.I(CIICJ)|),!I). n'f 411(6*1.642J JÎCII f1,»71. c A0CPA1.PVJSCIC0.31). e 4UC64i.prtt«cj4(2.ni.*e*t AUCP41.F41EJSCUO.3d- C JUCPJI.kUSCIfO.îl». C
•UCMl.ftUJSCKO.2V>- C *UC641.kij«C1M*.1Vt.
4llC6*1.4fCV*Cj40.2V).*1*( »ttCP41.F47( J*CUO.«C»« C 4l7CPA1.PVJKUO.4C). C 4UCP41.P((tUjH ;ri.*C*f âUCPAI.FJJfJSCICOMl». 2 4UCP41.kiJSCIH2.MI- C
?.*!..«. , .... »HCP41.F47|JK110^2P. ( AUCPJl.kljfCIf 0*431-4llC»41.FfCt*C J40.47).*<*( *HCP*1.Ad(J*ClH7.«2t- t 4llC641.kVJKlH2.42). C 4L'1r641.F(Ct«(J4l2,4S)a*C*(
411CM1.FFMJSC!(0.44>. c 4U1C641 .kl JSC UI2.44). t
iiîfui t>n if UI. .il AlUPAl.FAlfJSCllO.4.)« c «UCPJV.kVjXICI3.4S».
• iK64i.4rci4Cj40,4S).*a*( jhcpai.jjujschh.i). c AUCPJl.kl JSCH 1 4 .) )• C AttCP41.»fCt4CJ*l«.lt.4«*t 4UC*41.FfHjS(IH4.2). 0 »U041.kvjSClH4.2l. . C
• U C 6 4 1.FF7 * .SC I I 14. J>« ( A U C P 4 1 .k V J* C I( 14.11*
4l1CMl.F(Ct*(.'4l4.12).*0*r 4UCP4t.rf 71 JSCIH4.12). c 4iicp4i.pvjscii44.ti). c 4viC6ii.4f((«(j*i.,s:i.>e*r 41 U6«1.rp7f j: C U I 4 . | 4 . | . C 4UC*41.k«J*C IH4.14). <
a‘e • *uc6#i.FF/rJSCIH4.1*». c 4ur**i.kijscifi4.iv».
«UC641.k(Cl*CJ4|4.13).*9*f * *HC64l.M7f J2Ciri4.1l). c
«uct»), ujirii t«. k )• 3 «uc4*i.4rriB(j*i«.)o.>e*t 4iic4«i.r*7f jsciri4.ni. ** juc-ji.»usent«.ni- c
'*'1 *HC4*T.r*7usciii4.ii). r. 41 irtfl.kijscif 14.1*1.
4UC441.F(CltCj4(4,|||.*0*r 4U(MI.4*11 J*( If 14. IV). c 4ll(4FV.kV.*SCl(|4,|V). P. •4lir*41.*('(l*(J4|4.|*|«*C*r 411(4*1.FPjcjsciHk»;: i* ’ *1*1(641.kijsciri*.se ». c
* * * 4UC6I1.HUJSC1H4.711. r J U C t t l . M J î C K 14.214*
M H M l .
mc-4i.6usciHS.43). o Juio»i.*fci«cjJ(S.4n**«*i
4 U C 6 3 1 .6 4 7 0 1 0 ( 0 . 4 4 ) . r . 3 U C 6 A 1 . h V J S C I H S .4 4 ) . C
/)•* 3 l l C 6 3 t . * * 7 0 S C l ( < * . 4 * ) « C A V K 6 A l . H j S C U O . 4 5 1 «
* U O * 1 . 6 t C l « C J J I 9 , 4 « t - * 3 * e A U TC6A1.6 611 J S C U 1 4 .1 1 « «
•UC«*1.»U5CIHt,))* S7 3 U 1 C 6 » l .» t r V * C J » H . I i « * c * r
4U(6*1.M7t J5CICM.2» 0 ' JWTOM.hVJSUtU.2l« C
•1 * ( 1 ( 6 3 1 . 6 * 7 0 5 0 1 1 « . 31« « A H O J l . H J S C l f 14 » l i
- 81 IICC216 «176*CT.TC6(6S-«6 *I
768C1.1C*
KDHGTPYKUHH JIBKOTiSCKHX AHAJW3AT0P0B B METATPAHCJIHTOPAX
Pe3WMe
B paöoxe npeflcxaBJieH hobhS MeTOA KoncipyKi^H JieKCHttecKHX aHaJiH3aTopoB b MeTaxpaHCJiaxopax. Ilpe^aaraeMbiS sreTOA Ha MHoro OTJŒiniaeTca ot Hcnojib30BaHHHX ao chx nop MeiOAOB nocKOAbKy Ae- KCHuecKHe aTOMa oÔHapyacHBawrca toabko jrmn Ha ochobq oracaHHa cHHTaKCHca a 3HKa.
CONSTRUCTION OF LEXICAL ANALYSERS IN COMPILER-COMPILERS '
Summary
In this paper we present a new method for the construction of lexic
al analysers in compiler-oompilers. The method presented is essentiaJ-ly different from those applied up to now since the lexioal atoms are found automatically solely on the basis of the syntax description of the language.
B I B L I O T E K A G Ł Ó W N A Politechniki Śliskiej