58
5,6,7

Notasi Bahasa - P 5,6,7

Embed Size (px)

Citation preview

Page 1: Notasi Bahasa - P 5,6,7

5,6,7

Page 2: Notasi Bahasa - P 5,6,7

KONSEP DAN

NOTASI BAHASA

Page 3: Notasi Bahasa - P 5,6,7

KONSEP DAN NOTASI BAHASA Teknik Kompilasi merupakan kelanjutan dari konsep-konsep

yang telah kita pelajari dalam teori bahasa dan automata Thn 56-59 Noam chomsky melakukan penggolongan

tingkatan dalam bahasa, yaitu menjadi 4 class Penggolongan tingkatan itu disebut dengan hirarki Comsky 1959 Backus memperkenalkan notasi formal baru untuk

syntax bahasa yang lebih spesifik Peter Nour (1960) merevisi metode dari syntax. Sekarang

dikenal dengan BNF (backus Nour Form)

Page 4: Notasi Bahasa - P 5,6,7

KONSEP DAN NOTASI BAHASA

Tata bahasa (grammar) adalah sekumpulan dari himpunan variabel-variabel, simbol-simbol terminal, simbol non-terminal, simbol awal yang dibatasi oleh aturan-aturan produksi

Aturan produksi adalah pusat dari tata bahasa yang menspesifikasikan bagaimana suatu tata bahasa melakukan transformasi suatu string ke bentuk lainnya

Page 5: Notasi Bahasa - P 5,6,7

KONSEP DAN NOTASI BAHASA Syntax : suatu aturan yang memberitahu

apakah sesuatu kalimat (string) adalah valid dalam program atau tidak

Semantic : suatu aturan-aturan yang memberikan arti kepada program

Page 6: Notasi Bahasa - P 5,6,7

REVIEW MESIN AUTOMATA MISAL : FSAMisal :Ada mesin penjual permen yang memuat aturan2 sbb :

Harga Permen Rp.25Mesin tsb dpt menerima koinRp.5 (n),Rp.10 (d)Rp.25 (q)$ = tombol utk mengeluarkan permen.

Kemungkinan2 yang terjadi diperlihatkan gambar :

Page 7: Notasi Bahasa - P 5,6,7

REVIEW MESIN AUTOMATA MISAL : FSAFSA State Diagram nya adalah :

Mesin tsb dpt menerima koinRp.5 (n),Rp.10 (d)Rp.25 (q)$ = tombol utk mengeluarkan permen.

Current State

INPUTTekan

TombolRp.5

Rp.10 Rp.25

n d Q $

0 1 2 5 01 2 3 6 12 3 4 6 23 4 5 6 34 5 6 6 45 6 6 6 0*

6 6 6 6 0*

Page 8: Notasi Bahasa - P 5,6,7

CONTOH LAIN : FSAContoh : Deklarasi variable dalam Bahasa C berbentuk : int A,B;

Terdiri dari type, kumpulan variable dan tanda akhir instruksi (;)

Currentstate

inputNothing typ

evar , ;

0 0 1 - - 01 - - 2 - 02 - - - 3 03 - - 2 - -

Page 9: Notasi Bahasa - P 5,6,7

MESIN PEMBUAT MINUMAN

Page 10: Notasi Bahasa - P 5,6,7

ATURAN PRODUKSINYA :

Misal S0 = S, S1=A, S2=B, S3=C, S4=D, S5=E, S6=F, S7=G, S8=H, S9=I, S10=J, S11=K, S12=L, S13=M, S14= N, S15=O, S16=Final State.

Maka :G = {VT, VN, S, P}VT = {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, 0 }VN = {S, A, B, C, D, E, F, G, H, I, J, K, L, M, N,O}S = SP = {S→ aA | bB | cC | dD | eE | fF | gG | 0, A → hH | iI | jJ | S, B → hH | iI | jJ | S, C → hH | iI |jJ | S, D → hH | iI | jJ | S, E → hH | iI | jJ | S, F → hH | iI | jJ | S, G → hH | iI | jJ | S, H → kK |S, I → kK | S, J → kK | S, K→ qK | lL | mM | nN | S, L → rL | mM | nN| oO | S, M → sM | nN|oO | S, N → tN | oO | S , O → p | S }

Page 11: Notasi Bahasa - P 5,6,7

Penggolongan Chomsky Bahasa Mesin Automata Aturan Produksi

Konsep dan Notasi bahasa

Tipe 3 Atau Regular

Finite state automata (FSA) meliputi; deterministic Finite Automata (DFA) & Non Deterministic Finite Automata (NFA)

adalah simbol variabel maksimal memiliki sebuah simbol variabel yang bila ada terletak diposisi paling kanan

Tipe 2 Atau Contex Free

Push Down Automata adalah simbol variabel

Tipe 1 Atau Contex Sensitive

Linier Bounded Automata | | <= | |

Tipe 0 Atau Unrestricted/ Phase Structure/ natural language

Mesin Turing Tidak ada Batasan

Page 12: Notasi Bahasa - P 5,6,7

KETERANGAN

menyatakan simbol – simbol yang berada di ruas kiri aturan produksi

menyatakan simbol – simbol yang berada di ruas kanan aturan produksi

Simbol-simbol terdiri dari simbol terminal dan non terminal/variabel (masih bisa diturunkan lagi)

Simbol terminal biasanya dinyatakan dengan huruf kecil, sementara non terminal dengan huruf besar

Page 13: Notasi Bahasa - P 5,6,7

ATURAN PRODUKSI Tipe 0 / Unrestricted: Tidak Ada batasan pada aturan produksi Abc De Tipe 1 / Context sensitive: Panjang string ruas kiri harus lebih kecil atau

sama dengan ruas kananAb DeFCD eF

Tipe 2 / Context free grammar: Ruas kiri haruslah tepat satu simbol variableB CDeFgD BcDe

Tipe 3 / Regular: Ruas kanan hanya memiliki maksimal 1 simbol non terminal dan diletakkan paling kanan sendiriA eA efgA efgHC D

Page 14: Notasi Bahasa - P 5,6,7

ATURAN PRODUKSI YANG TIDAK LEGAL !!!

Simbol E tidak boleh berada pada ruas kirimisal E Abd

Aturan produksi yang ruas kirinya hanya memuat simbol terminal saja misal : a bd atau ab bd

Page 15: Notasi Bahasa - P 5,6,7

Hirarki Comsky

RegularRegularContext free

Context Sensitive

Unrestricted

Page 16: Notasi Bahasa - P 5,6,7

CONTOH TATA BAHASA SEDERHANA

<program> BEGIN <Statement-list> END

<Statement-list> <statement> | <statement>; <statement-list> <statement> <var> := <expression> <Expression> <term> | <term><op1> <expression> <term> <factor> | <factor> <op2> <term> <factor> <var> | <constant>

<var> A|B| ….| Z <op1> + | - | = <op2> ^ | * | / <constant> <real_number> | <integer_part>

<real_number> <integer_part> . <fraction> <integer_part> <digit> | <integer_part> < digit> <fraction> <digit> | <digit> <fraction> <digit> 0|1|….|9

Page 17: Notasi Bahasa - P 5,6,7

CONTOHBegin

A := 1;B := A + 2

END

Page 18: Notasi Bahasa - P 5,6,7

DIAGRAM STATE Digunakan untuk mendapatkan token,

mempermudah melakukan analisis lexical

Token adalah simbol terminal dari teori bahasa dan automata

Page 19: Notasi Bahasa - P 5,6,7

S

ID

INT

PLUS

MINUS

+

-

huruf

Digit

Huruf, Digit

DigitBlank

Contoh : suatu tata bahasa memiliki himpunan simbol terminal/token berikut (ID, PLUS, MINUS, dan INT)token ID untuk karakter huruf a-z, 0-9, token INT untuk digit, token PLUS untuk Penjumlahan dan token MINUS untuk Pengurangan

Page 20: Notasi Bahasa - P 5,6,7

NOTASI BNF (BACKUS-NOUR FORM) Aturan Produksi bisa dinyatakan dengan notasi BNF BNF menggunakan abstraksi untuk struktur syntax

::= sama identik dengan simbol | sama dengan atau< > pengapit simbol non terminal{ } Pengulangan dari 0 sampai n kali

Misalkan aturan produksi sbb:E T | T+E | T-E T a

Notasi BNFnya adalahE ::= <T> | <T> + <E> | <T> - <E>

T ::= a

Page 21: Notasi Bahasa - P 5,6,7

DIAGRAM SYNTAX Alat bantu (tools) dalam pembuatan parser/ analisis

sintaksis Menggunakan simbol persegi panjang untuk non

terminal Lingkaran untuk simbol terminal

MisalnyaE T | T+E | T-E

T

+

-

E

Page 22: Notasi Bahasa - P 5,6,7

BNF: <Block> ::= BEGIN <statement> { SEMICOL <statement>} END

BEGIN Statement END

;

Page 23: Notasi Bahasa - P 5,6,7

KETERANGAN Lexical Analyzer = scanner, Syntax Analyzer, dan Intermediate

Code merupakan fungsi Analisis dalam compiler, yang bertugas mendekomposisi program sumber menjadi bagian-bagian kecil

Code generation dan Code optimization adalah merupakan fungsi synthesis yang berfungsi melakukan pembangkitan / pembuatan dan optimasi program (object program)

Scanner adalah mengelompok-an program asal/sumber menjadi token

Parser (mengurai) bertugas memeriksa kebenaran dan urutan dari token-token yang terbentuk oleh scanner

Page 24: Notasi Bahasa - P 5,6,7

SYNTAX ANALYZER Pengelompokan token-token kedalam class

syntax (bentuk syntax), seperti Procedure, Statement dan Expression

Grammar : sekumpulan aturan-aturan, untuk mendefinisikan bahasa sumber

Grammar dipakai oleh syntax analyser untuk menentukan struktur dari program sumber

Proses pen-deteksian-nya (pengenalan token) disebut dengan parsing

Page 25: Notasi Bahasa - P 5,6,7

SYNTAX ANALYZERMaka Syntax analyser sering disebut

dengan parserPohon sintaks yang dihasilkan digunakan

untuk semantics analyser yang bertugas untuk menentukan ‘maksud’ dari program sumber.

Misalnya operator penjumlahan maka semantics analyser akan mengambil aksi apa yang harus dilakukan

Page 26: Notasi Bahasa - P 5,6,7

Contoh Terdapat statement : ( A + B ) * ( C + D ) Akan menghasilkan bentuk sintaksis :

<factor>, <term> & <expression>

Page 27: Notasi Bahasa - P 5,6,7

SYNTAX TREE Pohon sintaks/ Pohon penurunan (syntax

tree/ parse tree) beguna untuk menggambarkan bagaimana memperoleh suatu string dengan cara menurunkan simbol-simbol variable menjadi simbol-simbol terminal.

Misalnya: S ABA aA | aB bB | B

Penurunan untuk menghasilkan string : aabbb

Page 28: Notasi Bahasa - P 5,6,7

Parsing atau Proses PenurunanParsing dapat dilakukan dengan cara : Penurunan terkiri (leftmost derivation) :

simbol variable yang paling kiri diturunkan (tuntas) dahulu

Penurunan terkanan (rightmost derivation): variable yang paling kanan diturunkan (tuntas) dahulu

Misalkan terdapat grammar, ingin dihasilkan string aabbaa dari :context free language: S a AS | a,

A SbA | ba

Page 29: Notasi Bahasa - P 5,6,7

PARSING ATAU PROSES PENURUNAN

Penurunan kiri :

S => aAS => aSbAS

=> aabAS =>

aaabbaS => aabbaa

Penurunan kanan :

S => aAS => aAa

=> aSbAa => aSbbaa

=> aabbaa

S a AS | a,A SbA | ba

Page 30: Notasi Bahasa - P 5,6,7

PARSINGMisalnya: S -> aB | bA

A -> a | aS |bAAB -> b | bS | aBB

• Penurunan untuk string aaabbabba• Dalam hal ini perlu untuk melakukan

percobaan pemilihan aturan produksi yang bisa mendapatkan solusi

Page 31: Notasi Bahasa - P 5,6,7

METODE PARSINGPerlu memperhatikan 3 hal:

• Waktu Eksekusi• Penanganan Kesalahan• Penanganan Kode

Parsing digolongkan menjadi : Top-Down

Penelusuran dari root ke leaf atau dari simbol awal ke simbol terminalmetode ini meliputi :• Backtrack/backup : Brute Force• No backtrack : Recursive Descent Parser

Bottom-Up

Metode ini melakukan penelusuran dari leaf ke root

Page 32: Notasi Bahasa - P 5,6,7

PARSING: BRUTE FORCE

Memilih aturan produksi mulai dari kiri Meng-expand simbol non terminal sampai pada simbol terminal Bila terjadi kesalahan (string tidak sesuai) maka dilakukan backtrack

Algoritma ini membuat pohon parsing secara top-down, yaitu dengan cara mencoba segala kemungkinan untuk setiap simbol non-terminal

Contoh suatu language dengan aturan produksi sebagai berikut

S aAd | aB

A b | c

B ccd | ddc Misal ingin dilakukan parsing untuk string ‘accd’

Page 33: Notasi Bahasa - P 5,6,7

Parsing: Brute force(i) S (ii) S (iii) S

a A d a A db

Terjadi kegagalan (iii), dilakukan back track

(iv) S (v) S (vi) S

a A d a B aB

c c c d

Terjadi kegagalan lagi (iv), dilakukan back-track

S aAd | aBA b | cB ccd | ddc

string ‘accd’

Page 34: Notasi Bahasa - P 5,6,7

PARSING: BRUTE FORCE

Kelemahan dari metode brute-force :

• Mencoba untuk semua aturan produksi yang ada sehingga menjadi lambat (waktu eksekusi)

• Mengalami kesukaran untuk melakukan pembetulan kesalahan

• Memakan banyak memakan memori, dikarenakan membuat backup lokasi backtrack

• Grammar yang memiliki Rekursif Kiri tidak bisa diperiksa, sehingga harus diubah dulu sehingga tidak rekursif kiri, Karena rekursif kiri akan mengalami Loop yang terus-menerus

Page 35: Notasi Bahasa - P 5,6,7

BRUTE FORCE : CONTOH

Terdapat grammar/tata bahasa G = (V,T,P,S), dimana

V= (“E”,”T”,”F”) Simbol NonTerminal (variable)

T= (“i”,”*”,”/” ,”+”,”-”) Simbol Terminal

S=”E” Simbol Awal / Start simbol

String yang diinginkan adalah i * i

aturan produksi (P) yang dicobakan adalah

1. E T | T + E | T - E

T F | F * T | F / T

F i

accept (diterima)

Page 36: Notasi Bahasa - P 5,6,7

BRUTE FORCE : CONTOH2. E T | E+T | E-T T F | T* F | T / F F iaccept (diterima) Meskipun ada rekursif kiri, tetapi tidak diletakkan sebagai

aturan yang paling kiri

3. E E+T | E-T | T T T* F | T / F | F F iRekursif kiri, program akan mengalami loop

Page 37: Notasi Bahasa - P 5,6,7

Brute force : Aturan produksi

Aturan Produksi yang rekursif memiliki ruas kanan (hasil produksi) yang memuat simbol variabel pada ruas kiriSebuah produksi dalam bentuk

A A merupakan produksi rekursif kanan = berupa kumpulan simbol variabel dan

terminalcontoh: S d S

B ad BBentuk produksi yang rekursif kiri

A A merupakan produksi rekursif Kiricontoh :

S S d B B ad

Page 38: Notasi Bahasa - P 5,6,7

ATURAN PRODUKSI : BRUTE FORCE

Produksi yang rekursif kanan akan menyebabkan penurunan tumbuh kekanan, sedangkan produksi yang rekursif kiri akan menyebabkan penurunan tumbuh ke kiri.

Contoh: Context free Grammar dengan aturan produksi sebagai berikut :

Page 39: Notasi Bahasa - P 5,6,7

ATURAN PRODUKSI : BRUTE FORCEDalam Banyak penerapan tata-bahasa, rekursif kiri tidak diinginkan, Untuk menghindari penurunan kiri yang looping, perlu dihilangkan sifat rekursif, dengan langkah-langkah sebagai berikut: Pisahkan Aturan produksi yang rekursif kiri dan yang

tidak; misalnya :Aturan produksi yang rekursif kiri

A A 1 | A 2 | ... | A n Aturan produksi yang tidak rekursif kiri

A 1 | 2 | ... | n

Page 40: Notasi Bahasa - P 5,6,7

ATURAN PRODUKSI : BRUTE FORCE lakukan per-ganti-an aturan produksi yang rekursif

kiri, sebagai berikut :

1. A 1 Z | 2 Z | ... | n Z 2. Z 1 | 2 | ... | n 3. Z 1 Z | 2 Z | ... | n Z

A A 1 | A 2 | ... | A n

A 1 | 2 | ... | n

Page 41: Notasi Bahasa - P 5,6,7

Aturan produksi : Brute force

Pergantian dilakukan untuk setiap aturan produksi dengan simbol ruas kiri yang sama, bisa muncul variabel Z1, Z2 dst, sesuai dengan variabel yang menghasilkan rekurisif kiri

Contoh: Tata Bahasa Context freeS Sab | aSc | dd | ff | Sbd

Pisahkan aturan produksi yang rekursif kiri menjadi :S Sab | SbdRuas Kiri untuk S : 1=ab , 2=bd

Aturan Produksi yang tidak rekursif kiri : S aSc | dd | ffdari situ didapat untuk Ruas Kiri untuk S : 1 = aSc, 2 = dd, 3= ff

Page 42: Notasi Bahasa - P 5,6,7

Aturan produksi : Brute force

• Langkah berikutnya adalah penggantian yang rekursif kiriS Sab | Sbd, dapat digantikan dengan :1. S aScZ1 | ddZ1 | ffZ12. Z1 ab | bd3. Z1 abZ1 | bdZ1

• Hasil akhir yang didapat setelah menghilangkan rekursif kiri adalah sebagai berikut : S aSc | dd | ffS aScZ1 | ddZ1 | ffZ1Z1 ab | bdZ1 abZ1 | bdZ1

S Sab | aSc | dd | ff

| Sbd

Page 43: Notasi Bahasa - P 5,6,7

ATURAN PRODUKSI : BRUTE FORCE

Kalau pun tidak mungkin menghilangkan rekursif kiri dalam penyusunan aturan produksi maka produksi rekursif kiri diletakkan pada bagian belakang atau terkanan, hal ini untuk menghindari looping pada awal proses parsing

Metode ini jarang digunakan, karena semua kemungkinan harus ditelusuri, sehingga butuh waktu yang cukup lama serta memerlukan memori yang besar untuk penyimpanan stack (backup lokasi backtrack)

Metode ini digunakan untuk aturan produksi yang memiliki alternatif yang sedikit

Page 44: Notasi Bahasa - P 5,6,7

PARSING: RECURSIVE DESCENT PARSERParsing dengan Recursive Descent Parser

Salah satu cara untuk meng-aplikasikan bahasa context free Simbol terminal maupun simbol variabelnya sudah bukan

sebuah karakter Besaran leksikal sebagai simbol terminalnya, besaran syntax

sebagai simbol variablenya /non terminalnya Dengan cara penurunan secara recursif untuk semua variabel

dari awal sampai ketemu terminal Tidak pernah mengambil token secara mumdur (back tracking) Beda dengan turing yang selalu maju dan mundur dalam

melakukan parsing

Page 45: Notasi Bahasa - P 5,6,7

SEMANTICS ANALYSER Proses ini merupakan proses kelanjutan dari proses

kompilasi sebelumnya, yaitu analisa leksikal (scanning) dan analisa sintaks (parsing)

Bagian terakhir dari tahapan analisis adalah analisis semantik

Memanfaatkan pohon sintaks yang dihasilkan dari parsing

Proses analisa sintak dan analisa semantik merupakan dua proses yang sangat erat kaitannya, dan sulit untuk dipisahkan

Page 46: Notasi Bahasa - P 5,6,7

Contoh : A := ( A+B) * (C+D) Parser hanya akan mengenali simbol-simbol

‘:=‘, ‘+’, dan ‘*’, parser tidak mengetahui makna dari simbol-simbol tersebut

Untuk mengenali makna dari simbol-simbol tersebut, Compiler memanggil routin semantics

SEMANTICS ANALYSER

Page 47: Notasi Bahasa - P 5,6,7

SEMANTICS ANALYSERUntuk mengetahui makna, maka routin ini akan memeriksa string program : Apakah variabel yang ada telah didefinisikan

sebelumnya Apakah variabel-variabel tersebut tipenya sama Apakah operand yang akan dioperasikan tersebut ada

nilainya, dan seterusnya Menggunakan tabel simbol Pemeriksaan bisa dilakukan pada tabel identifier,

tabel display, dan tabel block

Page 48: Notasi Bahasa - P 5,6,7

Pengecekan yang dilakukan dapat berupa : Memeriksa penggunaan nama-nama (keberlakuannya)

DuplikasiApakah sebuah nama terjadi pendefinisian lebih dari dua kali. Pengecekan dilakukan pada bagian pengelolaan block

TerdefinisiApakah nama yang dipakai pada program sudah terdefinisi atau belum. Pengecekan dilakukan pada semua tempat kecuali block

Memeriksa tipe Melakukan pemeriksaan terhadap kesesuaian tipe dalam statement - statement yang ada, Misalnya bila terdapat suatu operasi, diperiksa tipe operand-nya

SEMANTICS ANALYSER

Page 49: Notasi Bahasa - P 5,6,7

Contohnya; expresi yang mengikut IF berarti tipenya boolean, akan

diperiksa tipe identifier dan tipe ekspresinya Bila ada operasi antara dua operand maka tipe operand

pertama harus bisa dioperasikan dengan operand yang kedua

Analisa Semantic sering juga digabungkan dengan intermediate code yang akan menghasilkan output intermediate code.

Intermediate code ini nantinya akan digunakan pada proses kompilasi berikutnya (pada bagian back end compilation)

SEMANTICS ANALYSER

Page 50: Notasi Bahasa - P 5,6,7

Memperkecil usaha dalam membuat compilator dari sejumlah bahasa ke sejumlah mesin

Lebih Machine Independent, hasil dari intermediate code dapat digunakan lagi pada mesin lainnya

Proses Optimasi lebih mudah. Lebih mudah dilakukan pada intermediate code dari pada program sumber (source program) atau pada kode assembly dan kode mesin

Intermediate code ini lebih mudah dipahami dari pada kode assembly atau kode mesin

Kerugiannya adalah melakukan 2 kali transisi, maka dibutuhkan waktu yang relatif lama

INTERMEDIATE CODE

Page 51: Notasi Bahasa - P 5,6,7

INTERMEDIATE CODEAda dua macam intermediate code yaitu Notasi Postfix dan N-Tuple

Notasi POSTFIX

<Operand> <Operand> < Operator>Misalnya : ( a +b ) * ( c+d )maka Notasi postfixnya

ab+ cd+ *Semua instruksi kontrol program yang ada diubah menjadi notasi postfix, misalnya

IF <expr> THEN <stmt1> ELSE <stmt2>

Page 52: Notasi Bahasa - P 5,6,7

POSTFIXDiubah ke postfix menjadi ;

<expr> <label1> BZ <stmt1> <label2> BR < stmt2>

BZ : Branch if zero (salah)BR: melompat tanpa harus ada kondisi yang

ditest

Contoh : IF a > b THEN c := d ELSE c := e

Page 53: Notasi Bahasa - P 5,6,7

POSTFIXContoh : IF a > b THEN c := d ELSE c := e

Dalam bentuk Postfix11 a 1912 b 20 2513 > 21 BR14 22 22 c15 BZ 23 e16 c 24 :=17 d 25 18 :=

bila expresi (a>b) salah, maa loncat ke instruksi 22, Bila expresi (a>b) benar tidak ada loncatan, instruksi berlanjut ke 16-18 lalu loncat ke 25

Page 54: Notasi Bahasa - P 5,6,7

Contoh:WHILE <expr> DO <stmt>

Diubah ke postfix menjadi ; <expr> <label1> BZ <stmt> <label2> BR

Instruksi : a:= 1WHILE a < 5 DO a := a + 1

Dalam bentuk Postfix10 a 18 a11 1 19 a12 := 20 113 a 21 +14 5 22 :=15 < 23 1316 25 24 BR17 BZ 25

POSTFIX

Page 55: Notasi Bahasa - P 5,6,7

N-TUPLENotasi N-TuplePada notasi N-Tuple setiap baris bisa terdiri dari beberapa tupel. Format umum dari notasi N-Tuple adalah :

operator ………….N-1 operan

Notasi N-Tuple yang biasa digunakan adalah notasi 3 tupel dan 4 tupel.

Triples NotationMemiliki format

<operator><operand><operand>

Contoh, instruksi :A:=D*C+B/E

Bila dibuat Kode Antara tripel:1. *,D,C2. /,B,E3. +,(1),(2)4. :=,A,(3)

Page 56: Notasi Bahasa - P 5,6,7

Kekurangan dari notasi tripel adalah sulit pada saat melakukan optimasi, maka dikembangkan Indirect Triples yang memiliki dua list (senarai), yaitu list instruksi dan list eksekusi. List instruksi berisi notasi tripel, sedangkan list eksekusi mengatur urutan eksekusinya. Misalnya terdapat urutan instruksi :

A := B+C*D/EF := C*D

List Instruksi : List Eksekusi1. *,C,D 1. 12. /, (1), E 2. 23. +, B, (2) 3. 34. :=, A, (3) 4. 45. :=, F, (1) 5. 1

6. 5

N-TUPLE

Page 57: Notasi Bahasa - P 5,6,7

QUARDRUPLES NOTATIONQuadruples Notation

Format instruksi Quadruples<operator><operan><operan><hasil>

• hasil adalah temporary yang bisa ditempatkan pada memory atau register

Contoh instruksi:

A:=D*C+B/E

Bila dibuat dalam Kode Antara :

1. *,D,C,T1

2. /,B,E,T2

3. +,T1,T2,A

Page 58: Notasi Bahasa - P 5,6,7

Kode Antara dari program biasanya ditranslasikan ke bahasa assembly atau bahasa mesin.

Contoh :

(A+B)*(C+D)

Dalam kode antaranya dalam bentuk notasi Quadruples1. +, A, B, T12. +, C, D, T23. *, T1, T2, T3

Dapat ditranslasikan ke dalam bahasa assembly dengan akumulator tunggal :LDA A {muat isi A ke akumulator}ADD B {tambahkan isi akumulator dengan B}STO T1 {simpan isi akumulator ke T1}LDA CADD DSTO T2LDA T1MUL T2STO T3

SELESAI

QUARDRUPLES NOTATION