Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

22-09-20161 Fromelle sprog Per P. Madsen Afd. for proceskontrol.

Lignende præsentationer


Præsentationer af emnet: "22-09-20161 Fromelle sprog Per P. Madsen Afd. for proceskontrol."— Præsentationens transcript:

1 22-09-20161 Fromelle sprog Per P. Madsen Afd. for proceskontrol

2 22-09-20162 Indhold. MM1: Programmeringssprog - compiler. MM2: Formelgramatik og syntaksbeskrivelsesformer. MM3: Endelige automater. MM4: LEX - et værktøj til genkendelse af regulære sprog. MM5: Top-down parsning (Predictive recursive decent ). MM6: Top-down parsning (JavaCC ). MM7: Bottom up parsing og YACC. MM8: Back-end. MM9: Sprog typer: Imperative sprog, logiske sprog mfl. MM10: Eksamems opgave.

3 22-09-20163 Sprog Et sprog L(G) er mængden af sætninger afledt af grammatikken G. Grammatik er en 4-tupel: G={S,P,N,T}. Hvor: S er sætnings- eller startsymbolet. P er et sæt af produktioner N er et sæt af non-terminale symboler T er et sæt af terminale symboler

4 22-09-20164 Grammatik program -> ’program’ ’(’ idT ’)’ varlist ’begin’ stlist ’end’ varlist -> type idlist ’;’ type -> ’float’ | ’int’ idlist -> idT idelmlist idelmlist -> ’,’ idT idelmlist |  stlist -> statement stlist |  statement -> idT ’=’ exp ’;’ exp -> idT bexp | ’(’ exp ’)’ bexp bexp-> ’+’ exp bexp | ’-’ exp bexp | 

5 22-09-20165 Syntaks Syntaks: Læren om hvordan de enkelte ord sammensættes. Et syntaktisk korrekt program/sprog er et sprog bestående af sætminger afledt af den grammatik der definere sproget.

6 22-09-20166 Source/Target sprog Compiler Source sprogTarget sprog Fortolker Source sprog Kald til runtime-/ operativ-systemet Assembler, mellemkode fx Java.class, andet sprog fx C.

7 22-09-20167 Source sprog Generelle sprog: Java, C++, Dedikerede sprog: Latex, XML, HTML, VRML, Matlab,,,,, Formålet med dedikeret sprog: ’’Easy to Use’’ lag oven på div. Software for nemt at kunne løse dedikerede opgaver. Fx: LaTeX: Skrive tekst oven på TEX typesætter. Matlab: Beregne og behandle data oven på matrix og grafik bib. VRML: Opbygge 3D vernden oven på 3D grafik bib.

8 22-09-20168 Target sprog Target sprog: Skal kunne vidrebearbejdes af målsystemet. –Assembler til målsystemet. –Mellem kode hvis det kan vidrebearbejdes af målsystemet –Fx: C hvis der til målsystemet findes en C compiler. –Kode til en virtuelmaskine.

9 22-09-20169 Target sprog Tre adr.instruktioner fx: Mellemkode. Res= opr1 Operation opr2 Alm CPU. MOVE src,dist Simple risc CPU. MOVWF dist SUBWF adr Stak maskine. Fx JVM Load opr1 Load opr2 Sub Out Res

10 22-09-201610 #include float a,b,c; float e[5]; int *ptr; void viggo() { a= b+c; } int main() { b=2; c=3; viggo(); printf("a= %f\n",a); } 1.file"tmp.c" 2.section.text 3.globl _viggo 4 _viggo: 5 0000 55 pushl%ebp 6 0001 89E5 movl%esp, %ebp 7 0003 D9051000 flds_b 7 0000 8 0009 D8051000 fadds_c 8 0000 9 000f D91D1000 fstps_a 9 0000 10 0015 5D popl%ebp 11 0016 C3 ret 12 LC3: 13 0017 613D2025.ascii "a= %f\12\0" 13 660A00

11 22-09-201611 #include float a,b,c; float e[5]; int *ptr; void viggo() { a= b+c; } int main() { b=2; c=3; viggo(); printf("a= %f\n”,a); } 14.globl _main 15 _main: 16 001e 55 pushl%ebp 17 001f 89E5 movl%esp, %ebp 18 0021 83EC08 subl$8, %esp 19 0024 83E4F0 andl$-16, %esp 20 0027 B8000000 movl$0, %eax 20 00 21 002c 29C4 subl%eax, %esp 22 002e B8000000 movl$0x40000000, %eax 22 40 23 0033 A3100000 movl%eax, _b 23 00 24 0038 B8000040 movl$0x40400000, %eax 24 40 25 003d A3100000 movl%eax, _c 25 00 26 0042 E8B9FFFF call_viggo 26 FF 27 0047 83EC04 subl$4, %esp 28 004a D9051000 flds_a 28 0000 29 0050 8D6424F8 leal-8(%esp), %esp 30 0054 DD1C24 fstpl(%esp) 31 0057 68170000 pushl$LC3 31 00 32 005c E89FFFFF call_printf 32 FF 33 0061 83C410 addl$16, %esp 34 0064 C9 leave 35 0065 C3 ret

12 22-09-201612 #include float a,b,c; float e[5]; int *ptr; void viggo() { a= b+c; } int main() { b=2; c=3; viggo(); printf("a= %f\n",a); } 36.comm _a,16 37.comm _b,16 38.comm _c,16 39.comm _e,32 40.comm _ptr,16 41 0066 90909090.ident"GCC: (GNU) 3.3.1" 41 90909090 41 9090 GAS LISTING tmp.s page 2 DEFINED SYMBOLS *ABS*:00000000 tmp.c tmp.s:4.text:00000000 _viggo *COM*:00000010 _b *COM*:00000010 _c *COM*:00000010 _a tmp.s:15.text:0000001e _main *COM*:00000020 _e *COM*:00000010 _ptr UNDEFINED SYMBOLS _printf

13 22-09-201613 Compiler/fortolker struktur Mellem- kode Kald til Runtimesy s. Mellemk. - optimerin g Kode- genererin g Kode- optimerin g Lexikalsk - analyse Syntax- analyse Semantik- analyse if viggo == 3 then.... If token Ident token IdentX(type=Int) Gen(Comp, *Viggo,3) Gen(jump if not, adress) - - - - - Compiler - - - - - - - Fortolker - - - - - - - - Front end - - - - - - - - - - - - - - - - Back end - - - - - - - - -


Download ppt "22-09-20161 Fromelle sprog Per P. Madsen Afd. for proceskontrol."

Lignende præsentationer


Annoncer fra Google