Kalimat → S + P | S + P + O | S + P + K | S + P + O + K |
Grammar : S + P + O1 + O2 + K1 + K2
= {∑,a,ab,abc,abcd} = {∑,d,cd,bcd,abcd}
= {∑,b,c,bc}
Proses :
Dalam proses tidak melibatkan empty string proper. Maka hasilnya adalah
Prefix (w) = {a,ab,abc}
Suffix (w) = {d,cd,bcd}
MANIPULASI STRING
3 B = {3,4,5,6,7,9,10,11}
1 4
5 9 A ∨ B = {1,2,3,4,5,6,7,8,9,10,11}
2
6 10
8 A ∧ B = {3,5,6,7}
7 11
A – B = {1,2,8}
A–B B–A
S=A ∨ B B – A = {4,9,10,11}
WX = {AL,AI,AC,AA,AT,AO,AN,AS,AM,AE,PL,PI,PC,PA,PE,PO,PN,…} = 60
W ∨ X = {A,P,R,O,C,H,L,I,T,N,S,M,E} = 13
W ∧ X = {A,O,C} = 3
Jadi, disebut sebuah language dalam automata bila didalamnya ada aktivitas
penggunaan : - set (finite,infinite)
- manipulasi string
- closure
Notasi * ; + ; U ; L
~ ~
L* = ULi Kleene closure L+ = ULi Possitive closure
i=0 i=1
L1 L2 L3 L4… Ln
a+ = a . a*
+
a = {a, aa, aaa, aaaa,…} Bentuk PT :
and
a w
Start 0 1 2
Find
state
0 1 0 1 0 1 0 1 2
a ∑ a ∑ a ∑ a ∑
:=
Analisis
id1 +
Automata
id2 *
id3 60
VI Code generator
I. Analisis Leksikal
Yaitu, analisis yang menerima transisi output dengan melakukan
pengelompokkan identifier(id), keyword dan token. Tujuannya untuk
mengenali word by word.
Contoh : position := initial + rate * 60
Prioritas Statement
1 ( )
2 Assign
3 Exponential
4 *, /
5 +,-
id1 +
id2 *
id3 60
V. Code Optimizer
Berfungsi membuang.
- redudancy (berlebih)
- overlapping (tumpang tindih)
- collison (bersebrangan)
- dll.
RELASI
Contoh
Dosen berelasi dengan mahasiswa
(D) (M)
Dimana berelasi disini maksudnya dalam hal mengajar, membimbing / konseling,
atau sebagai dosen konseling.
Contoh
aRb ; R = lebih besar
Jika a= 2 ; b= 10 ; aRb ≡ (a,b) Є R
a=20 ; b=10 ; aRb ≡ (a,b) Є R
iRa ; R = melahirkan
jika i=ibu ; a=anak
iRa ; (i,a) Є R
jika i=ibuku ; a= aku
iRa≡ (I,a) Є R
2. Irreflexive ; aRa ; ∀ a ; a Є R
Contoh : Budi tidak pernah cuci pakaiannya. ; R = cuci pakaian
bRb bЄR
dalam matriks ; posisi diagonal bernilai false.
⎡0 0 1 0⎤
⎢0 0 0 1⎥⎥
A ⎢
⎢1 1 0 1⎥
⎢ ⎥ Diagonal bernilai false sehingga matrik ini
⎣0 0 0 0⎦ disebut irreflexive.
While (I ≤ n) do
J=I
If(A[I,j]=1) then
I Status=‘OK’
Else
I Status=‘NO’
I exit
Final
Inc(i)
E-While
I=1
While(i ≤ n)do
J=i
If(a[I,j]=0)
Then
Status1=’OK’
Else
Status1=’NO’
Exit
Final
Inc(i)
E-While
if(Status=’OK’) then
I Relasi=’Reflexive’
Else
If(Status1=’OK’) then
I Relasi=’Irreflexive’
Else
I Relasi=’Not Reflexive’
Final
Final
a
1 2
1) Buat DT untuk a : ∑
a
2) Buat DT untuk a+ : 1 2
b
3) Buat DT untuk b : 3 4 ∑
+ a b
4) Buat DT untuk a b ; Gabung (2) & (3) : 1 2 4
a
5) Buat DT untuk a : 5 6
6) Buat DT untuk b : 7
b
8
∑ b ∑
7 8
∑
Top of stack
Data
Contoh
1. Push A
2. Push + Pop A
Bila ada operator masuk yang
hirarkinya lebih tinggi maka
operator yang ada dalam stack
+ A tidak boleh dikeluarkan.
E F
B / -
+ + ABC*
A ABC*E/ +
*
+ - ABC*E/ +
AB end ABC*E/ +F-
5. Push C
Bila tanda kurung tutup masuk,
C maka semua operator dan operand
* harus dikeluarkan dari dalam
+ AB stack selama tanda kurung buka.
6. Push / Pop C*
BC*D-
BC*D- E*
BC*D- E*F/
BC*D- E*F/+
Operasi stack :
Push D
1. Push A 8.
D
-
A (
+ ABC*
+ A + ABC*D-
buffer
Jika yang dipush adalah operator Pada saat di push ) dalam stack
dan sebelumnya dalam stack sudah ada ( , sehingga semua isi
terdapat operand, maka operand stack data ( s/d ) di pop.
harus dikeluarkan (pop).
( *
+ + ABC*D-
A
B E
( *
+ + ABC*D-
A
Push / Pop E*
5. Push * Pop B 12. Pada saat dipush / maka
operand dalam stack bus dipop,
* / dan dalam stack sudah ada
( AB + ABC*D- E* operator * , dimana operator *
+ harus dipop juga.
Push F
Push C
6. 13.
C F
* /
(
+
+
ABC*D- E*
AB
Push end Pop F/+
Push -
7. Pop C* 14.
-
(
+
end ABC*D- E*F/+
ABC*
KONVERSI RE KE DFA
RE : (a|b)*abb
1) Tambahkan augmented pada RE
RE : (a|b)*abb#
2) Beri label pada masing-masing posisi node
RE : (a|b)*abb#
i : 1 2 3456
3) Buat pohon parsing dari RE diatas
(A|B) (A|B)* (ABB)
| * .
A B | . C
A B A B
{1,2} | {1,2}
F
{1} A {1} {2} B {2}
Root = A = {1,2,3}
F F
Node Fp
1 {1,2,3}
2 {1,2,3}
3 {4}
4 {5}
5 {6}
6 -
3 4 5 6
A
B B
D
RE : abc(a|b)*cba
1. Tambahkan augmented pada RE
RE : abc(a|b)*cba#
2. Beri label pada masing-masing posisi node
RE : abc(a|b)*cba#
i : 123 4 5 6789
3. Buat pohon parsing dari RE diatas
(AB) (ABC) .
(A|B)* * (CBA) .
. C | . A
A B
A B A B C B
Root = A = {1}
5 6 7 8 9
C
B A
B C D
RE : (a|b)*abb
1. Tambahkan augmented pada RE
RE : a(b|c)*(a|b)abc#
2. Beri label pada masing-masing posisi node
RE : a(b|c)*(a|b)abc#
i : 12 3 4 5 6789
3. Buat pohon parsing dari RE diatas
(B|C) (B|C)* A(B|C)* (ABC) .
| * .
*
A
B C | . C
|
B C A B
B C
F
{1} . {8} {9} # {9}
F
F
{1} . {7} {8} C {8}
F
F
{1 } . {6} {7} B {7}
F
F
{1} . {4,5}
{6} A {6}
F
F
{1} A {1} {2,3} * {2,3} {4} A {4} {5} B {5}
F T F F
{2,3} {2,3}
|
F Root = A = {1}
{2} A {2} {3} B {3}
F F
Start 3
1
4
6 7 8 9
B B A B C
A
C D F H
GRAMMAR
Grammar yaitu tata bahasa atau susunan, dimana kata-kata tersebut nantinya akan
membentuk suati arti (meaning).
Tujuan grammar dapat tercapai jika didukung oleh suatu sentence :
G = {VT, VN, P, S}
Keterangan :
VT = simbol terminal (biasanya berbentuk : small letter, operator, dan tanda-tanda
baca). Biasanya disebut juga dengan token (anggota dari alfabet).
VN = simbol non terminal (biasanya berbentuk capital letters).
P = produksi
S = start
Produksi :
(1) <Sentence> → <Subject><Predicate>
→ <Subject><Predicate><Object>
→ <Subject><Predicate><Object><Adverb>
(2) <Subject> → <Noun>
(3) <Predicate> → <Verb>
(4) <Object> → <Noun>
(5) <Adverb> → <Noun> / <Verb>
(6) <Sentence> → id (identifier = pengenal)
(7) <Subject> → id
(8) <Predicate> → id
(9) <Object> → id
(10) <Noun> → id
(11) <Verb> → id
P : <E> → <(E)>
→ <E> <op> <E>
→ id
<op> → + | - | * | / | ^ Contoh1 : A+B*C
S → E (0) S→E S→E
→ E*E (1) → E*E (2) → E+E (4)
→ E/E (3) → E+E*E (4) → E+E*E (2)
→ E+E (4) → id+E*E (6) → E+E*id (6)
→ E-E (5) → id+id*E (6) → E+id*id (6)
→ id → id+id*id (6) → id+id*id (6)
Contoh2 :
(1)S → aAa ; (2) A → aAa ; (3) A → a
Output : aaaaaaa loop
Top S→ aAa (1)
Kelemahannya :
→ a a Aa a (2) Jika salah membuat rule maka akan terjadi
→ a aaAaa a (2) loop forever.
Down / → a a a a a a a (3) Misal : rule (3) diganti A → 5,
Maka akan terjadi loop forever.
Bottom → a(aaaaa)a (2)
→ a(a(aaa)a)a (2)
→ a(a(a(a)a)a)a (2)
→ a(a(aAa)a)a (2)
→ a(aAa)a (2)
→ aAa (2)
Up →S (1)
MESIN MEALY
M = (Q,ε,∆,δ,λ,q0)
0/y
Contoh :
P0
0/n
1/n
P1 1/y
Misal :
1 0 1 1 0 0 1 0 1 0
Start
q0 P0 P1 P0 P0 p0 final
P1 P1 P0 P1 P1
λ= n n n y n y n n n n
Catatan :
*> Start State Fixed
*> Final State Non det
0/n untuk input artinya :
δ (Q0,0) = P0 and
λ (Q0,0) = n
M = (Q,ε,∆,δ,λ,q0)
Contoh :
1 0
A B C
q0 P0 P1
1
0
1 0
Catatan :
-^- Start Stae Fixed
-^- Final State Non
-^- Process berorientasi pada output untuk mendapatkan input A (Alphabet Output)
Input :
1 0 1 1 0 0 1 0 1 0
Start
q0 q2 q2 q2 q1 q0 final
q1 q2 q1 q2 q0
λ= A B B C C C B C C B A A
Output transisi alphabetik
0 1 2 3 4 5 6 7 8
Head
position
initial
gerak = 5x
posisi akhir head = 4
CONTROL FLOW
C / C++ Pascal
1. If (E) S 1. If (E) then S
2. If (E) S1 2. If (E) then S1
Else Else
S2; S2;
3. While (E) S 3. While (E) S
S :=;
|E
| {Slist}
| IF(E) S
| IF(E) S; else S
| While (E) S
| Do S While (E)
| For(Eop;Eop;Eop,Eop) S
| Switch (E) S
| Default ; S
C / C++ / Java
Var1 Var2
If(Var1>Var2)
Besar:=Var1
Else
Besar:=Var2;
A If(Var1>Var2)
C If(Var1>Var3)
Besar:=Var1
D Else
Besar:=Var3;
B Else
E If(Var2>Var3)
Besar:=Var2
F Else
Besar:=Var3;
Control IF
A B
C D E F
A B
C D E F
Pascal
Var1 Var2
If (Var1>Var2) then
Besar:=Var1
Else
Besar:=Var2;
|deret instruksi|
If(Var1>Var2) then Besar:=Var1 else besar:=Var2
A If(Var1>Var2) then
C If(Var1>Var3) then
Besar:=Var1
D Else
Besar:=Var3;
B Else
E If(Var2>Var3) then
Besar:=Var2
F Else
Besar:=Var3;
CONTROL FLOW
Penerapan bentuk control flow ini juga bergantung pada tool (bahasa pemrograman
yang digunakan) akan tetapi, oleh automata menggunakan konsep yang sama.
Pascal / B. Delphi
Kondisi 1
L:=1;
Start=> J:=i*2;
Inc(i);
I:=i+1;
Kondisi 2
A=2;
B=5; Lazy evaluation
If (A>B) then
Besar:=A
Else Satu baris start
Besar:=B;
V If(B>C) then
IX Besar:=B
VII VIII IX X
VI Else
X Besar:=C;
XI
LOOPING
3. For Var:=initial to endpoint do
Contoh :
For I:=1 to 10 do
Pertambahan counter otomatis=1
4. I:=1;
While(I<=10) do
Begin
I:=0;
Repeat
Write(I);
Inc(I);
Until(I>10)
6. Case pil of
1=stant 1;
2=stant 2;
3=stant 3;
Else stant ;
End.
1. i=1;
j=i*2;
i=i+2;|i++;i--;
i+=1; - pada proses interasi berulang, saat pertama sekali
- tambahan dengan i
- nilai=2 (interasi1)
i++1; = Iterasi I nilai masih 1
Contoh
{ int i,j ;
i=2;j=1;
j+=i, i/j= 1+2;
cout<<j;
}
Output = 3 artinya : j=1+2
Vs
{ int i,j;
i=2
j=+i; //j= j+i
cout<<j
}
Output=2 artinya : j=i
2.
If(A>B)
Ekspressi
Besar=A;
Else
Besar=B;
4. i=1;
while(i<=10)
S S* {
Cout<<I;
i++; //input 2=i=+2;
}
I=1;
Do{
S S+ Cout<<I;
i++;
while(i<=10)
5. dalam c++
#include<iostream.h>
Void main()
{int i=1, j,k; jika compiler akan muncul : warning
A mulai;
B cout<<;
C if i<=10 {i++; goto mulak;}
E F
D else
exit
G
7. Control Flow
C D
E G