Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm lệnh giải thích trình phân tích cú pháp mục tiêu trong Python

Giả sử chúng ta có Trình phân tích cú pháp mục tiêu có thể diễn giải một lệnh chuỗi nhất định. Một lệnh bao gồm

  • Bảng chữ cái "G",

  • Mở và đóng ngoặc đơn "()"

  • và / hoặc "(al)" theo một số thứ tự.

Trình phân tích cú pháp mục tiêu của chúng tôi sẽ diễn giải "G" là chuỗi "G", "()" là "o" và "(al)" là chuỗi "al". Cuối cùng các chuỗi được giải thích sau đó được nối theo thứ tự ban đầu. Vì vậy, nếu chúng ta có lệnh chuỗi, chúng ta phải tìm cách giải thích lệnh của Bộ phân tích mục tiêu.

Vì vậy, nếu đầu vào giống như lệnh ="G () () () (al) (al)", thì đầu ra sẽ là Goooalal.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • s:=chuỗi trống

  • đối với tôi trong phạm vi từ 0 đến kích thước của lệnh - 1, thực hiện

    • nếu lệnh [i] không giống "(" và lệnh [i] không giống ")", thì

      • s:=s lệnh nối [i]

    • nếu lệnh [i] giống "(" và lệnh [i + 1] giống ")" và i + 1

      • s:=s nối 'o'

    • if command [i] giống như "(", then

      • chuyển sang lần lặp tiếp theo

    • nếu lệnh [i] giống với ")" thì

      • chuyển sang lần lặp tiếp theo

  • trả lại s

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

def solve(command):
   s=""
   for i in range(len(command)):
      if command[i]!="(" and command[i]!=")":
         s+=command[i]
      if command[i]=="(" and command[i+1]==")" and i+1<len(command):
         s+='o'
      if command[i]=="(":
         continue
      if command[i]==")":
         continue
   return s

command = "G()()()(al)(al)"
print(solve(command))

Đầu vào

"G()()()(al)(al)"

Đầu ra

Goooalal