teknik kompilasi 4611413041 tugas4
DESCRIPTION
Notasi BNFTRANSCRIPT
Contoh Notasi BNFPipit Riski S_4611413041
Teknik Kompilasi Beberapa simbol notasi BNF
Konvensi/simbol Apa artinya
::= Setara dengan
| ATAU
X + Satu atau lebih X s.
[X] X opsional. Opsional delimiters dilambangkan oleh
[].
{} Pengulangan 0 sampai n kali
< > Mengapit symbol variable/non terminal
, Penghubung
Contoh pendefinisian kalimat legal: PRODUCTION
<expression> → <operand><operator><operand>
<operand> → A | B | C | D
<operator> → + | - | / | *
• Contoh :
<PRINT statement> → <PRINT|PRINT expression >
<expression > → <variable>|<variable>,|<variable>;
<variable> → <letter> | <letter><digit>
<letter> → A | B | C ...| Z | a | b | c | ... Z
<digit> → 0|1|2|3 ... 9
• Contoh :
PRINT A / PRINT A1 / PRINT 1A
Contoh Notasi BNFPipit Riski S_4611413041
Teknik Kompilasi
Contoh Notasi BNF
Berikut merupakan grammar context free dinyatakan dalam notasi BNF (Backus Naur Form).
Lihat contoh grammar berikut (kita sebut ini grammar M) adalah:
<kalimat> ::= <katabenda> <katakerja> <katabenda>
<katabenda> ::= 'koala'|'KURSI'|'PISANG'
<katakerja> ::= 'MEMUKUL'|'MEMAKAN'|'MEMBUANG'
Semua kalimat ini valid menurut grammar di atas (atau dikatakan bahwa: kalimat-kalimat
berikut ini berada dalam bahasa yang didefinisikan oleh grammar M):
KOALA MEMAKAN KURSI
KOALA MEMAKAN PISANG
KOALA MEMUKUL KURSI
KOALA MEMUKUL KOALA
PISANG MEMAKAN KOALA
Lihat contoh lain berikut (kita sebut ini grammar N):
<kalimat> ::= <aksi>|<pernyataan>
<aksi> ::= <katabenda> <katakerja> <katabenda>
<pernyataan> ::= <katabenda> <adverb> <katasifat>
<katabenda> ::= 'KOALA'|'KURSI'|'PISANG'
<katakerja> ::= 'MEMUKUL'|'MEMAKAN'|'MEMBUANG'
<adverb> ::= 'SANGAT'|'AGAK'|''
<katasifat> ::= 'BESAR'|'KECIL'
Contoh Notasi BNFPipit Riski S_4611413041
Teknik Kompilasi
Contoh kalimat untuk grammar tersebut:
KOALA MEMAKAN KURSI
KOALA AGAK BESAR
Perancangan Parser menggunakan BNF dan Diagram Sintaks
BNF dan Diagram Sintaks Kode sumber pada kompiler memerlukan BNF dan diagram
sintaks agar pembuat program mudah dalam membuat program. Adapun beberapa rancangan
BNF dari kompiler yang dibuat adalah sebagai berikut:
<simple_exp> ::= <term> { <add_operator> <term> }
<add_operator> ::= T_ADD | T_SUB
<term> ::= <signed_fact> { <mul_operator> <signed_fact> }
<signed fact> ::= <add_operator> <fact> | <fact>
<mul_operator> ::= T_MUL | T_DIV
<fact> ::= T_LPARENT <exp> T_RPARENT | T_NUMERIC
dimana:
T_ADD = ’+’
T_SUB = ’-‘
T_MUL = ’*’
T_DIV = ’/‘
T_LPARENT = ’(‘
T_RPARENT = ’)’
T_ANGKA = ’0’..’9’
Contoh Notasi BNFPipit Riski S_4611413041
Teknik Kompilasi
Aturan Penulisan BNF
<expression> ::= <term> | <expression> "+" <term>
<term> ::= <factor> | <term> "*" <factor>
<factor> ::= <constant> | <variable> | "(" <expression> ")"
<variable> ::= "x" | "y" | "z"
<constant> ::= <digit> | <digit> <constant>
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"