Anda di halaman 1dari 4

Contoh Notasi BNF

Pipit 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 BNF


Pipit 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 BNF


Pipit 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 BNF


Pipit 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"

Anda mungkin juga menyukai