Tôi muốn đọc cấu hình trong YAML với mã elisp. Đã tìm kiếm nhưng không tìm thấy trình phân tích cú pháp sẵn sàng để sử dụng. Tôi đã bỏ lỡ một cái gì đó hữu ích?Trình phân tích cú pháp YAML tốt nhất trong elisp là gì?
Trả lời
Sáu tháng sau, có vẻ như câu trả lời là "không có trình phân tích cú pháp YAML dễ dàng có sẵn."
Nếu bạn thực sự muốn đọc một tài liệu YAML trong elisp và biến nó thành thứ gì đó mà elisp có thể tương tác, bạn sẽ phải đưa vào một số công việc gnarly. Các EmacsWiki YAML page đã không có nhiều cho bạn, và kinh điển YAML mode có gợi ý cú pháp, nhưng không có phân tích cú pháp thực tế. May mắn thay ai đó có implemented a YAML-parsing web-app lấy YAML và xuất ra JSON hoặc Python - bạn có thể cố gắng xem xét và sử dụng nó để kiểm tra bất kỳ trình phân tích cú pháp YAML nào mà bạn có thể tự viết.
Chúc may mắn.
Phụ lục: xem [câu trả lời SO này] (http://stackoverflow.com/a/2231327/244494) đối với một số mã bắt đầu khi viết trình phân tích cú pháp đệ quy gốc của một người trong elisp. –
http://edward.oconnor.cx/2006/03/json.el cũng có thể hữu ích cho việc so sánh và ý tưởng. Rõ ràng, YAML không phải là JSON, nhưng chắc chắn chúng có một số điểm tương đồng. – tripleee
Và vài tháng sau: Tôi muốn nó, vì vậy đây là cách để làm điều đó với một số sự giúp đỡ từ python:
(defun yaml-parse()
"yaml to json to a hashmap of current buffer, with python.
There is no yaml parser in elisp.
You need pyYaml and some yaml datatypes like dates are not supported by json."
(interactive)
(let ((json-object-type 'hash-table))
(setq myyaml (json-read-from-string (shell-command-to-string (concat "python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)' < " (buffer-file-name))))))
;; code here
)
Nó biến yaml của bộ đệm hiện tại vào một hashmap elisp, với sự giúp đỡ của json.el
.
Bạn cần pyyaml python: pip install PyYaml
.
Ý tôi là trên một cấp độ là một hack khiến tôi suy nghĩ, nhưng trên một cấp độ khác, tôi không thể khiến bản thân không tôn trọng "công cụ tôi cần không tồn tại, vì vậy tôi sẽ tự viết nó." Được thăng hạng. –
Ba năm sau, chúng tôi có dynamic modules, và emacs-libyaml trông khá thú vị. Nó sử dụng hệ thống mô-đun động để lộ các ràng buộc C của libyaml trong Elisp. Tôi hy vọng hiệu suất sẽ trở nên tuyệt vời, mặc dù tôi chưa thử nghiệm nó.
- 1. Tạo trình phân tích cú pháp Brainfuck, phương pháp phân tích cú pháp vòng lặp tốt nhất là gì?
- 2. Trình phân tích cú pháp YAML trong Delphi?
- 3. Trình phân tích cú pháp tốt nhất cho C#?
- 4. Trình phân tích cú pháp XML tốt nhất cho PHP
- 5. Cách tốt nhất để tái sử dụng trình phân tích cú pháp Lua là gì?
- 6. trình phân tích cú pháp html tốt nhất cho java là gì?
- 7. Trình phân tích cú pháp JSON tốt nhất cho Qt?
- 8. Phân tích cú pháp là gì?
- 9. Phân tích cú pháp YAML, quay lại với số dòng
- 10. Phân tích cú pháp là gì?
- 11. Cách tốt nhất để phân tích cú pháp trang web trong Ruby là gì?
- 12. Cách tốt nhất để phân tích cú pháp dòng lệnh args trong Bash là gì?
- 13. Cách tốt nhất để phân tích cú pháp tệp Excel trong Perl là gì?
- 14. Trình tạo trình phân tích cú pháp tốt cho php là gì?
- 15. Cách tốt nhất/nhanh nhất để viết trình phân tích cú pháp trong C#
- 16. Cách tốt nhất để phân tích cú pháp tài liệu Microsoft Office và PDF là gì?
- 17. Psych :: SyntaxError không thể phân tích cú pháp YAML
- 18. Trình triển khai phân tích cú pháp Javascript RDFa tốt là gì?
- 19. Trình tạo trình phân tích cú pháp và trình phân tích cú pháp cho Common Lisp
- 20. Trình phân tích cú pháp XML nhanh nhất có sẵn cho Delphi là gì?
- 21. Làm thế nào để phân tích cú pháp YAML trong trình duyệt?
- 22. Trình phân tích cú pháp CSS C/C++ tốt là gì?
- 23. Sự khác biệt giữa trình phân tích cú pháp SAX XML, Kéo trình phân tích cú pháp & Trình phân tích cú pháp DOM trong android
- 24. Kết hợp phân tích cú pháp phân tích cú pháp, phân tích cú pháp và phân tích cú pháp rừng
- 25. Trình phân tích cú pháp YAML của Ruby bằng cách truyền hàm tạo
- 26. "Phân tích cú pháp quảng cáo" là gì?
- 27. Cần trình phân tích cú pháp C++
- 28. Cách dễ nhất để phân tích cú pháp tệp INI trong C++ là gì?
- 29. trình phân tích cú pháp rss trong .net
- 30. Chọn trình phân tích cú pháp Haskell
Tôi không biết câu trả lời, nhưng nếu không có bất kỳ thì bạn có thể gọi một số trình phân tích cú pháp khác để đọc yaml và có nó xuất ra một biểu diễn lisp văn bản mà bạn có thể đọc bằng 'read'. – Tom
Cảm ơn! Đó là một ý tưởng hay. Có lẽ tôi có thể thử 'pymacs'. – Vivodo
Tôi không chắc chắn ý của bạn là gì - có chế độ yaml ở đây: https://github.com/yoshiki/yaml-mode - nhưng bạn muốn một trình phân tích cú pháp đọc yaml và làm gì với nó? –