Trong giai đoạn phân tích ngữ nghĩa (semantic analysis) của một trình biên dịch, mỗi biến được khai báo với kiểu dữ liệu cơ bản là int hoặc float. Khi xác định kiểu của một biểu thức số học chỉ gồm các phép toán + - * /, biến, hằng số và dấu ngoặc, trình biên dịch áp dụng luật ép kiểu ngầm định (usual arithmetic conversion):
float, kết quả toàn biểu thức có kiểu float.int, kết quả có kiểu int.Hằng số chứa dấu chấm thập phân (ví dụ 3.14, 0.5) có kiểu float; hằng số chỉ gồm chữ số (ví dụ 10, 007) có kiểu int.
Cho bảng khai báo biến và một biểu thức, hãy xác định kiểu kết quả của biểu thức.
Ví dụ
Input:
2
a int
b float
(a + 3) * b
Output:
float
<tên biến> <kiểu> với kiểu ∈{int,float}.+ - * / ( ); mọi biến xuất hiện trong biểu thức đều đã được khai báo ở trên).In ra đúng một dòng là kiểu của biểu thức: int hoặc float.
Ví dụ:
Đầu vào:
0
42
Đầu ra:
int
Đầu vào:
2
a int
b float
(a + 3) * b
Đầu ra:
float
Đang tải editor...