You are on page 1of 7

Bài Kiểm Tra:

Nguyễn Thành Khiêm


Bài 1: Cho văn phạm G có tập luật sinh sau
A→A-T|T
T→T*B|B
B → [A] | a
a) Xác định các thành phần của văn phạm G

Văn phạm G:

A→A-T|T
T→T*B|B
B → [A] | a
T = {-, *, [,], a}
V = A, T, B
S =A
P = A →A - T T →T * B B→ [ A]
A →T T →B B→ a

Thực hiện loại bỏ lệ quy trái

Thay
A → A−T ∨T
Bằng
'
A →T A
' '
A →−T A
Thay T → T∗B∨B
Bằng
'
T →BT
T ' →∗B T '
ta được văn phạm:
'
A →T A
' '
A →−T A
'
T →BT
' '
T →∗B T
B→ [ A ] ∨a
b) Xây dựng bảng phân tích cú pháp M.
Tính FIRST
FIRST(A) = FIRST(T) = FIRST(F) ={ [ , a}
FIRST(A') = { - ,  }
FIRST(T') = { *,  }

Tính FOLLOW
FOLLOW(A) = FOLLOW(A') = { $, ) }
FOLLOW(T) = FOLLOW(T') = { -, ], $}
FOLLOW(B) = { *, - , ) , $ }

Ta có bảng M
Ký hiệu chưa Ký hiệu nhập
kết thúc a - * [ ] $
A A  TA’ A  TA’

A' A’  -TA’ A’  A’ 

T T  BT’ T  BT’

T' T’  T’ *BT’ T’  T’ 


B Ba B  [A]

c)Vận dụng phương pháp phân tích cú pháp từ trên xuống và vẽ cây phân tích cú
pháp cho chuỗi nhập: [a - a] *a

Quá trình phân tích cú pháp cho chuỗi nhập: [a - a] *a được trình bày trong
bảng sau:

STACK INPUT OUTPUT


$A [a - a] *a $

$ A’ T [a - a] *a $ A  TA’
$ A’ T’ B [a - a] *a $ T  BT’
$ A’ T’ ] A [ [a - a] *a $ B  [A]
$ A’ T’ ] A a - a] *a $
$ A’ T’ ] A’ T a - a] *a $ A  TA’
$ A’ T’ ] A’ T’ B a - a] *a $ T  BT’
$ A’ T’ ] A’ T’ a a - a] *a $ Ba
$ A’ T’ ] A’ T’ - a] *a $
$ A’ T’ ] A’ - a] *a $ T’ 
$ A’ T’ ] A’ T - - a] *a $ A’  -TA’
$ A’ T’ ] A’ T a] *a $
$ A’ T’ ] A’ T’ B a] *a $ T  BT’
$ A’ T’ ] A’ T’ a a] *a $ Ba
$ A’ T’ ] A’ T’ ] *a $
$ A’ T’ ] A’ ] *a $ T’ 
$ A’ T’ ] ] *a $ A’ 
$ A’ T’ *a $
$ A’ T’ B * *a $ T’ *BT’
$ A’ T’ B a$
$ A’ T’ a a$ Ba
$ A’ T’ $
$ A’ $ T’ 
$ $ A’ 
cây phân tích cú pháp

A' T

T' B

T' B * ] A [

a A' T

A' T - T' B

T' B A

a
Bài 2: Cho văn phạm G có tập luật sinh sau
A→A-T|T
T→T*B|B
B → [A] | a
a) Xác định các thành phần của văn phạm G

Văn phạm G:

A→A-T|T
T→T*B|B
B → [A] | a
T = {-, *, [,], a}
V = A, T, B
S =A
P = A →A - T T →T * B F →[ A]
A →T T →B F→a

b) Xây dựng bảng phân tích cú pháp LR.

(1) A → A - T
(2) A → T
(3) T → T * B
(4) T → B
(5) B → [A]
(6) B → a
Trạng thái Action Goto
a - * [ ] $ A T B
0 s5 s4 1 2 3
1 s6 acc
2 r2 s7 r2 r2
3 r4 r4 r4 r4
4 s5 s4 8 2 3
5 r6 r6 r6 r6
6 s5 s4 9 3
7 s5 s4 10
8 s6 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5

Ý nghĩa:
si: chuyển trạng thái i
ri: thu gọn bởi luật sinh i
acc: accept (chấp nhận)
error: khoảng trống

c)Vận dụng phương pháp phân tích cú pháp từ dưới lên và vẽ cây phân tích cú
pháp cho chuỗi nhập: [a - a] *a

Với chuỗi nhập [a - a] *a:

STACK INPUT ACTION


(1) 0 [a - a] *a $ Shift
(2) 0[4 a - a] *a $ Shift
(3) 0[4a5 - a] *a $ Reduce by B → a
(4) 0[4B3 - a] *a $ Reduce by T → B
(5) 0[4T2 - a] *a $ Reduce by A → T
(6) 0[4A8 - a] *a $ Shift
(7) 0[4A8-6 a] *a $ Shift
(8) 0[4A8–6a5 ] *a $ Reduce by B → a
(9) 0 [ 4 A 8 – 6 B 3 ] *a $ Reduce by T → B
(10) 0 [ 4 A 8 – 6 T 9 ] *a $ Reduce by A → A - T
(11) 0 [ 4 A 8 ] *a $ Shift
(12) 0 [ 4 A 8 ] 11 *a $ Reduce by B → [A]
(13) 0 B 3
*a $ Reduce by T → B
(14) 0 T 2
*a $ Shift
(15) 0 T 2 * 7
a $ Shift
(16) 0 T 2 * 7 a 5
$ Reduce by B → a
(17) 0 T 2 * 7 B 10
$ Reduce by T → T * B
(18) 0 T 2
$ Reduce by A → T
(19) 0 A 1
$ Thành công
cây phân tích cú pháp

A
T
T * B
B a
[ A ]
A - T
T B
B a
a

You might also like