Professional Documents
Culture Documents
PhamHoangLam BTVN KiemThu
PhamHoangLam BTVN KiemThu
Bộ phân tích từ vựng ngôn ngữ VC (bài toán là bài tập lớn môn Chương trình dịch).
Ngôn ngữ VC : cú pháp giống với ngôn ngữ C nhưng không chứa chuỗi và ký tự
chi tiết về đặc tả ngôn ngữ VC : Dac ta tu vung ngon ngu VC.doc
Bộ phân tích từ vựng (Lexical Scanner) có nhiệm vụ đọc vào một xâu là chương trình VC và
trả ra các token của chương trình này, khoảng trắng và comment sẽ bị bỏ qua.
Ví dụ
VD1
Input:
float exampleFunction(boolean var1, int var2) {
if(var1) {
return (float)var2;
} else {
return 94e-1;
}
}
int main() {
boolean b = true;
boolean c = !b;
int d = 4420;
float r = exampleFunction(c, d);
return 0;
}
Output mong đợi
float
exampleFunction
boolean
var1
int
var2
if
return
else
94e-1
main
b
=
true
c
!
d
4420
r
0
Nếu đầu vào chứa từ tố không thỏa mãn đặc tả của ngôn ngữ cần trả ra output “Error token
…” cho token đó và xử lý tiếp
VD2
Input :
int 5x = 7;
Output mong đợi :
int
Error token : 5x
=
7
;
Bộ phân tích từ vựng gồm nhiều hàm và input không chỉ có chương trình VC, để cho đơn
giản ta chỉ test trên hàm lõi của chương trình là scan()
Thực hiện
Kiểm thử lớp tương đương (phân hoạch đầu vào)
Em phân input đầu vào thành hai phân hoạch
{Đầu vào là một chương trình VC hợp lệ}
+{Đầu vào chứa token không hợp lệ}
5 c c identifier
8 ^ Error token ^
Các test case 2 3 4 5 6 chứa đầu vào hợp lệ còn lại là các test case chứa token lỗi
Kết quả chạy Test với Junit với 3 test failed và 6 test passed
Test 9