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] Kiểm tra định danh hợp lệ theo quy tắc từ vựng

    Một trình biên dịch cần kiểm tra tính hợp lệ về mặt từ vựng của các định danh (identifier). Theo đặc tả ngôn ngữ, một chuỗi sss là định danh hợp lệ khi và chỉ khi thỏa mãn đồng thời:

    1. Độ dài ∣s∣|s|∣s∣ thỏa 1≤∣s∣≤321 \le |s| \le 321≤∣s∣≤32.
    2. Ký tự đầu tiên là chữ cái (hoa hoặc thường) hoặc dấu gạch dưới _.
    3. Các ký tự còn lại (nếu có) chỉ gồm chữ cái, chữ số hoặc dấu gạch dưới.
    4. sss không được trùng chính xác (phân biệt hoa/thường) với bất kỳ từ khóa dành riêng (reserved keyword) nào của ngôn ngữ.

    Cho danh sách kkk từ khóa dành riêng và nnn chuỗi cần kiểm tra, với mỗi chuỗi hãy cho biết nó có phải định danh hợp lệ hay không.

    Ví dụ: nếu từ khóa dành riêng là if, else, while thì if bị loại (trùng từ khóa), IF vẫn hợp lệ (khác if vì phân biệt hoa/thường), còn 1abc bị loại vì bắt đầu bằng chữ số.

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

      Dòng 1: số nguyên kkk (0≤k≤1000 \le k \le 1000≤k≤100) — số từ khóa dành riêng. Dòng 2: kkk từ khóa cách nhau bởi dấu cách (nếu k=0k=0k=0 thì đây là một dòng rỗng, vẫn phải có mặt trong input). Dòng 3: số nguyên nnn (1≤n≤10001 \le n \le 10001≤n≤1000) — số chuỗi cần kiểm tra. nnn dòng tiếp theo, mỗi dòng là một chuỗi sss cần kiểm tra (chỉ gồm ký tự ASCII hiển thị được, không chứa khoảng trắng; sss có thể là dòng rỗng, khi đó ∣s∣=0|s|=0∣s∣=0).

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

      In ra nnn dòng, dòng thứ iii là YES nếu chuỗi thứ iii là định danh hợp lệ, ngược lại in NO.

    Ví dụ:

    Đầu vào:

    3
    if else while
    4
    if
    IF
    while1
    _
    

    Đầu ra:

    NO
    YES
    YES
    YES
    

    Đầu vào:

    0
    
    5
    abc
    _x9
    1abc
    abcdefghijklmnopqrstuvwxyz012345
    abcdefghijklmnopqrstuvwxyz0123456
    

    Đầu ra:

    YES
    YES
    NO
    YES
    NO
    

    Đang tải editor...