tefan Stncescu PARTEA I UTILITARE DE SISTEM CURSUL
- Slides: 28
Ştefan Stăncescu PARTEA I UTILITARE DE SISTEM CURSUL 6 COMPILATOARE 1
COMPILATOARE limbaj „de nivel înalt”, high level language HLL, respectă legile unei gramatici complexe, apropiată de gramatica de limbaj uman HLL - intermediar între om – calculator limbaj uman – limbaj binar COMPILATOR – automat de traducere HLL – limbaj binar 2
COMPILATOARE Cod sursă – limbaj HLL Cod obiect – limbaj binar, (cod mașină) COMPILARE – cf. Legi de gramatică HLL • legi lexicale • Tip si structura elemente limbaj • legi sintactice • Reguli de compunere elemente limbaj • legi “semantice” • programe de traducere legi sintactice in cod obiect 3
COMPILATOARE La compilare, examinare text sursa in HLL • legi lexicale • scaner • legi sintactice • parser • legi “semantice” • generator de cod obiect • (la masini virtuale – cod intermediar – “bytecod” 4
COMPILATOARE SCANER Descopera elementele de limbaj – token-uri (unul sau mm caractere contigui – neseparate prin caractere sp, LF, FF, etc. ) cuvinte START, STOP, LABEL 01 operatori +*/semne speciale (){}//. , 5
COMPILATOARE SCANER I pas scanare text sursa HLL determina tokenuri prin delimitare identifica tokenuri de limbaj identifica token-uri inventate creeaza look-up tabel cu simboluri numerice token-uri 6
COMPILATOARE SCANER II pas scanare text sursa HLL creeaza fisier sursa intermediar cu token-urileinlocuite cu simboluri numerice din look-up table pas I 7
COMPILATOARE REPREZENTAREA LEGI SINTACTICE BNF – Bachus-Naur Form O lege în format BNF = = o construcție validă in limbajul HLL = = un șablon de formare corectă a unei linii in fisier sursa HLL (si a regulilor de succesiune de linii) 8
COMPILATOARE Legea sintactică = construcție validă în HLL Un sablon respectat are nume al constructiei element verificat, care poate face parte înalte constructii (inclusiv una cu acelasi sablon) Construcția nouă = simbol neterminal <simbol neterminal>: : = construcție cu șablon 9
COMPILATOARE PARSARE = descoperire sabloane valide pâna cand nu mai sunt legi nedescoperite (FĂRĂ SIMBOLURI NETERMINALE) PARSAREA se termina la token-uri Inlănțuirea de legi – sabloane – arbore sintactic Scopul parsării – descoperirea arborelui sintactic al fișierului sursă 10
COMPILATOARE Linie in fișierul sursă: S=A+B (A, B, S variabile intregi –token-uri) Generatorul de cod trebuie sa explice masinii operatia din sablon (A+B) Scanerul identifica “=“ “A” “+” “B” identifica tokenuri variabile A, B, S tokenul operator + tokenul atribuire = Verifica si consistenta sirului de token-uri 11
COMPILATOARE Verifică și coerența variabilelor, de aceasi fel daca A, B, S sunt întregi - OK daca unul e diferit, - se comanda operatia de conversie la cel mai general Daca S real, A, B intregi la “=“ (atribuire) se adaugă o operatie de conversie format 12
COMPILATOARE I-a operație – coerența structurilor (conversie, daca e nevoie) II-a operație – A+B (rezultatul în mem temp) III-a operatie atribuirea la S rezultatului (S=A+B) Legi aplicate : conversie, adunare, atribuire, în aceasta ordine 13
COMPILATOARE EXEMPLUL II (parsarea de jos în sus J / S) S=A+B*C – D J / S : scanarea liniei cu descoperirea operatiilor de efectuat mai întâi rezultatul acestora devin simboluri neterminale <N> => Precedența operatorilor ( + <. * ) | ( *. > -) Legea sintactică a înmulțirii <produs>: : =<factor>*<factor> Legea sinactică a adunării <suma> : : =(<termen>+<termen>)|(<termen>-<termen>) 14
COMPILATOARE EXEMPLUL II (parsarea de jos în sus J / S) <N 1>: : =B*C <N 2>: : =A+N 1 <N 3>: : =N 2 -D Arborele sintactic al expresiei A+B*C-D 15
COMPILATOARE EXEMPLUL II (parsarea de sus în jos S J) S=A+(B*C-D) S=ATTRIB(N 3) N 3=SUM(A, N 2) N 2=SCAD(N 1, D) N 1=PROD(B, C) Arborele sintactic al expresiei A+B*C-D (S J) 16
COMPILATOARE PROGRAM ETALON ÎN LIMBAJ PASCAL SIMPIFICAT 1 PROGRAM ANALIZA MEDII 2 VAR 3 NRCRT, I: INTEGER; 3 SARITM, SARMON, DIF: REAL 4 BEGIN 5 SARITM : =0; 6 SARMON : =0; 7 FOR I 8 BEGIN : =0 TO 100 DO 9 READ (NRCRT); 10 SARITM : = SARITM + NRCRT; 11 SARMON : = SARMON + 1 DIV NRCRT; 12 END; 13 DIF : =SARITM DIV 100 – 100 DIV SARMON; 14 WRITE (DIF); 15 END. 17
COMPILATOARE GRAMATICA (BNF) LIMBAJ PASCAL SIMPIFICAT 1. <prog> : : = PROGRAM <prog-name> VAR <dec-list> BEGIN <stmt-list> END. 2. <prog_name> : : = id 3. <dec_list> : : = <dec> | <dec_list> ; <dec> 4. <dec> : : = <id_list> : <type> 5. <type> : : = INTEGER | REAL 6. <id_list> : : = id | <id_list> , id 7. <stmt_list> : : = <stmt> | <stmst_list> ; <stmt> 8. <stmt> : : = <assign> | <read> | <write> | <for> 9. <assign> : : = id : = <exp> 10. <exp> : : = <term> | <exp> + <term> | <exp> - <term> 11. <term> : : = <factor> | <term> * <factor> | <term> DIV <factor> 12. <factor> : : = id | int | (<exp>) 13. <read> : : = READ(id_list) 14. <write> : : = WRITE(id_list) 15. <for> : : = FOR <index_exp> DO <body> ; 16. <index_exp> : : = id: = <exp> TO <exp> 17. <body> <stmt> | BEGIN <stmt_list> END : : = 18
COMPILATOARE Nume Token Cod PROGRAM 1 VAR 2 BEGIN 3 END. 4 END 5 INTEGER 6 REAL 7 READ 8 WRITE 9 FOR 10 TO 11 DO 12 ; 13 : 14 , 15 : = 16 + 17 - 18 DIV 19 ( 20 ) 21 ID INT 22 23 19
COMPILATOARE Fisier elaborat de scaner LINIE TOKEN 1 1 22 SPECIFICATOR ^ STATUS : 7 10 22 ^I 16 23 < >1 11 23 < >100 12 20
COMPILATOARE ETALON 9. READ (NRCRT); BNF: 13. 6. <read> : : =READ(id_list) <id_list> : : =id | <id_list>) ; id 21
COMPILATOARE ETALON 15. DIF : =SARITM DIV 100 – 100 DIV SARMON; BNF: 9. <assign> : : = id : = <exp> 10. <exp> : : = <term> | <exp> - <term> 11. <term> : : = <factor> | <term> DIV <factor> 12. <factor> : : = id | int| (<exp>) 22
COMPILATOARE 23
PROG RAM . =. VAR INT ID ) ( DIV - + : = , : ; DO TO FOR WRITE READ REAL INTEG ER END. BEGIN VAR PROG RAM COMPILATOARE <. . =. BEGIN <. . =. . > <. <. END INTEG ER REAL . > . > . > READ . =. WRITE . =. FOR . =. TO <. . > DO ; <. . > . > : <. <. <. , . =. : = + DIV . > . =. . > <. <. . > . > <. ( <. ) ID INT <. . > . > . > . =. <. <. . > <. <. <. . =. <. . > . > . > 24
COMPILATOARE PROGRAM. =. VAR BEGIN <. FOR ; . > END. Perechi vide – erori gramaticale Relatiile de precedență – UNICE (coerența regulilor gramaticale) 25
COMPILATOARE Generarea programelor semantice (J / S) DIF : = SARITM DIV 100 – 100 DIV SARMON id 1 : = int - id 4 id 1 : = id 2 DIV exp 1 - int DIV exp 2 exp 3 DIV SARITM #100 i 1 DIV #100 SARMON i 2 - i 1 i 2 i 3 : = i 4 , DIF 26
COMPILATOARE (1) : = #0 , SARITM {SARITM: =0} (2) : = #0 , SARMON {SARMON: =0} (3) : = #1 , I {FOR i=1 to 100} (4) JGT I #100 (15) (5) CALL X READ (6) PARAM NRCRT (7) + SARITM NRCRT i 1 (8) : = i 1 , SARITM (9) DIV #1 NRCRT i 2 (10) + SARMON i 2 i 3 (11) : = i 3 , SARMON (12) + I #1 i 4 (13) : = i 4 , I (15) DIV SARITM #100 i 6 (16) DIV #100 SARMON i 7 (17) - i 6 i 7 i 8 (18) : = i 8 , (19) CALL X WRITE {READ(NRCRT)} {SARITM: =SARITM+NRCRT} {SARMON: =SARMON+1 DIV NRCRT) {sfîrşit FOR} (14) J (4) (20) PARAM DIF {DIF : =SARITM DIV 100 - 100 DIV SARMON} DIF 27
COMPILATOARE 1. L. L. Beck, „System Software: An introduction to systems programming”, Addison Wesley. 3’rd edition, 1997. 2. A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman, „Compilers: Principles, Techniques, and Tools”, 2'nd Edition. Addison-Wesley, 2007 3. Wirth Niklaus ""Compiler Construction", Addison-Wesley, 1996, 176 pages. Revised November 2005 4. Knuth, Donald E. "Backus Normal Form vs. Backus Naur Form", Communications of the ACM 7 (12), 1964, p 735– 736. 28
- Tefan
- Tefan
- Tefan meaning
- Verbul este partea de vorbire
- Substantive proprii compuse
- Ce este linia orizontului
- Calculator matematic
- Partiile de vorbire
- Organele florii
- Sistem digital bekerja dengan menggunakan
- Supra sistem pendidikan
- Sistem pakar dalam sistem informasi manajemen
- Dokumen yang digunakan dalam sistem pengawasan produksi
- Sistem transportasi dan sistem respirasi
- Sistem penyimpanan arsip sistem abjad
- Manajemen file pada unix
- Sistem asas 8
- Rangkaian elektronika
- Apa kegunaan user interface dalam sistem tertanam
- Pendekatan sistem dalam pembelajaran pai
- Arsitektur spk
- Sbcdic
- Hierarki internet
- Agribisnis sebagai sistem
- Negara dibagi menjadi
- Indikator surveilans tifus abdominalis
- Sistem ekonomi terpimpin
- Panel harga pangan bkp
- Pengertian analisis sistem