2011-07-25 32 views
12

Có ai biết nơi tôi có thể nhận BNF hoặc EBNF cho ngôn ngữ lập trình LOGO không?EBNF hoặc BNF cho ngôn ngữ lập trình LOGO

+4

Không chắc đã bình chọn, đóng này như off-topic. "Ngôn ngữ lập trình" ngay cả trong tiêu đề ... –

+0

Nó xuất hiện này được thực hiện theo cách của mình để Reddit, tôi đang bảo vệ này cho bây giờ (sẽ không được bảo vệ trong một vài ngày). Nó không phải là một vấn đề, _yet_, chỉ là một biện pháp phòng ngừa. –

+3

@Tim Post Điều này đã làm cho nó trở thành subreddit lập trình reddit, tôi không thấy làm thế nào đây là nguyên nhân cho báo động. Thậm chí có thể là cơ hội tốt để thu hút người dùng mới không? – ArtB

Trả lời

12

Một BNF ngữ pháp có thể không được quá hữu ích trong một số trường hợp ...

Viết một LOGO đó là tương thích một cách chính xác với thực hiện/lịch sử không phải là một nhiệm vụ dễ dàng (tôi đã làm việc trên một dự án như vậy). Vấn đề là trình phân tích cú pháp không thực hiện công việc đầy đủ và bộ đánh giá (trình thông dịch) phải làm việc với dữ liệu một phần. Hãy xem xét ví dụ sau:

proc1 ab proc2 c

Nó có thể có nghĩa proc1 (a, b, proc2 (c)) hoặc proc1 (a, b, proc2(), c) theo số lượng thông số cho proc1 & proc2. Ngoài các thông dịch viên LOGO tôi biết, ví dụ như Berkely LOGO, có vẻ từ một cái nhìn lướt qua không phải để viết một trình phân tích cú pháp truyền thống mà bổ sung có quyền truy cập vào từng thủ tục và tính chất của nó; thay vào đó họ chạy các thủ tục và các thủ tục 'ăn hết' số tham số mà họ cần. Điều này làm cho trình phân tích cú pháp một chút ngây thơ và vai trò chính là của một thông dịch viên, và do đó phân tích cú pháp là loại bất thường.

+0

Vì vậy, bạn có nói rằng không thể có ngữ pháp cho ngôn ngữ rõ ràng không? –

+0

Vâng, tôi nghĩ rằng không có ngữ pháp như vậy tồn tại (bất kể mơ hồ) trừ khi đó là một ngữ pháp ngây thơ phân tích chuỗi lệnh chủ yếu như-là, và chỉ giải quyết các toán tử infix và giống như –

+0

Phải, một trình phân tích cú pháp ngây thơ sẽ phân tích cú pháp theo ngữ pháp , nhưng nó sẽ không hiểu được * arity * của các hàm dựng sẵn. Dường như trong khi phân tích cú pháp, người ta sẽ cần phải tra cứu * arity * của hàm trước khi quyết định cách phân tích các mã thông báo thành công. Nó cũng có ý nghĩa hơn khi bạn nói, để "phân tích khi bạn đi". –

2

Không có triển khai LOGO chuẩn.

Cuộc gọi của bạn tốt nhất có lẽ là để nhìn vào nguồn gốc của việc thực hiện phổ biến, chẳng hạn như UCBLogo

Các vấn đề liên quan