Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Trình biên dịch] Thông dịch ngôn ngữ gán tuần tự

    Xây dựng trình thông dịch cho một ngôn ngữ mini chỉ gồm hai loại câu lệnh, được thực hiện tuần tự từng dòng một theo đúng thứ tự xuất hiện:

    • <biến> = <biểu thức>: gán giá trị của biểu thức cho biến (biến được tạo mới nếu chưa tồn tại, hoặc ghi đè nếu đã tồn tại).
    • print <biến>: in ra giá trị hiện tại của biến.

    Biểu thức là một dãy các toán hạng (số nguyên hoặc tên biến) xen kẽ với các toán tử + - * /, các token cách nhau bởi khoảng trắng, ví dụ 2 + 3 * 4. Để đơn giản hoá việc thông dịch, biểu thức được tính tuần tự từ trái sang phải, không áp dụng thứ tự ưu tiên toán tử (tức 2 + 3 * 4 được tính như (2+3)×4=20(2+3)\times 4=20(2+3)×4=20, không phải 2+(3×4)2+(3\times4)2+(3×4)). Phép chia / là chia lấy phần nguyên làm tròn về 0 (giống bài Máy tính RPN). Mọi biến xuất hiện trong biểu thức được đảm bảo đã được gán giá trị trước đó. Tên biến chỉ gồm các chữ cái thường (không trùng từ khoá print).

    • Định dạng đầu vào:

      Dòng đầu là số nguyên nnn (1≤n≤10001 \le n \le 10001≤n≤1000) — số câu lệnh. nnn dòng tiếp theo, mỗi dòng là một câu lệnh như mô tả ở trên.

    • Định dạng đầu ra:

      In ra lần lượt giá trị của mỗi câu lệnh print theo đúng thứ tự thực hiện, mỗi giá trị trên một dòng.

      Ví dụ:

      Input:

      4
      x = 2 + 3 * 4
      print x
      y = x - 5
      print y
      

      Output:

      20
      15
      

    Ví dụ:

    Đầu vào:

    4
    x = 2 + 3 * 4
    print x
    y = x - 5
    print y
    

    Đầu ra:

    20
    15
    

    Đầu vào:

    2
    x = 7
    print x
    

    Đầu ra:

    7
    

    Đang tải editor...