Điều cuối cùng tôi làm là tắt tối ưu hóa. Tôi đã đi qua nguồn LỚP 3.4 và tôi thấy nugget nhỏ này trong mã lexer:
# If in optimize mode, we write the lextab
if lextab and optimize:
lexobj.writetab(lextab,outputdir)
return lexobj
Bằng cách thay đổi mã mà xây dựng lexer và phân tích cú pháp để:
self.lexer = lex.lex(module=self, optimize=False, debug=False, **kwargs)
và
self.lexer = lex.lex(module=self, optimize=False, debug=False, **kwargs)
Tôi tránh tất cả việc ghi tệp. Trình gỡ lỗi ghi các tệp .out
vào thư mục và các tệp Python là kết quả của cờ optimize
.
Trong khi điều này làm việc trong thời gian này, tôi không thể nói rằng tôi hoàn toàn hài lòng với cách tiếp cận này. Có lẽ, có một số cách để giữ cho tối ưu hóa trên và, cùng một lúc, giữ cho thư mục làm việc sạch sẽ là một giải pháp cao cấp sẽ dẫn đến hiệu suất tốt hơn. Nếu ai đó có phương pháp tốt hơn, tôi sẽ cởi mở hơn với nó.
Tôi không biết liệu có thể thực hiện điều này bằng 'ply' hay không. Bạn có thể thay đổi tên tệp hoặc thư mục để sử dụng hoặc chọn luôn tạo lại các bảng (có thể không phải là một tùy chọn, tùy thuộc vào kích thước ngữ pháp của bạn). Nhưng để gửi bảng phân tích cú pháp được tạo ... không biết. :/ – elias