2012-04-10 10 views
8

मैं elisp कोड के साथ वाईएएमएल में कॉन्फ़िगरेशन पढ़ना चाहता हूं। खोजा लेकिन elisp में उपयोग करने के लिए उपयोग पार्सर नहीं मिला। क्या मुझे कुछ उपयोगी याद आया?elisp में सबसे अच्छा वाईएएमएल पार्सर क्या है?

+0

मुझे जवाब नहीं पता है, लेकिन यदि कोई नहीं है तो आप यमल को पढ़ने के लिए कुछ अन्य पार्सर को कॉल कर सकते हैं और इसे एक टेक्स्टुअल लिस्प प्रस्तुति आउटपुट कर सकते हैं जिसे आप 'रीड' के साथ पढ़ सकते हैं। – Tom

+0

धन्यवाद! यह एक अच्छा विचार है। शायद मैं 'pymacs' कोशिश कर सकते हैं। – Vivodo

+0

मुझे यकीन नहीं है कि आपका क्या मतलब है - यहां एक यम-मोड है: https://github.com/yoshiki/yaml-mode - लेकिन आप एक पार्सर को यमल पढ़ने और इसके साथ क्या करना चाहते हैं? –

उत्तर

1

छह महीने बाद, ऐसा लगता है कि उत्तर है "कोई ठोस आसानी से उपलब्ध elisp YAML पार्सर मौजूद नहीं है।"

यदि आप वास्तव में elisp में एक YAML दस्तावेज़ पढ़ना चाहते हैं और इसे उस चीज में बदलना चाहते हैं जो elisp के साथ बातचीत कर सकता है, तो आपको कुछ gnarly काम करना होगा। EmacsWiki YAML page आपके लिए बहुत कुछ नहीं मिला है, और कैननिकल YAML mode में सिंटैक्स संकेत हैं, लेकिन कोई वास्तविक पार्सर नहीं है। सौभाग्य से किसी के पास implemented a YAML-parsing web-app है जो वाईएएमएल लेता है और जेएसओएन या पायथन आउटपुट करता है - आप उस के हुड के नीचे एक नज़र डालने का प्रयास कर सकते हैं - या किसी भी वाईएएमएल पार्सर को जांचने के लिए इसका इस्तेमाल कर सकते हैं जिसे आप स्वयं लिख सकते हैं।

शुभकामनाएं।

+0

अनुपूरक: देखें [यह SO उत्तर] (http://stackoverflow.com/a/2231327/244494) कुछ प्रारंभिक कोड के लिए elisp में अपने स्वयं के रिकर्सिव-मूल पार्सर लिखते समय। –

+2

http://edward.oconnor.cx/2006/03/json.el तुलना और विचारों के लिए भी उपयोगी हो सकता है। जाहिर है, वाईएएमएल जेएसओएन नहीं है, लेकिन उनके पास निश्चित रूप से कुछ समानताएं हैं। – tripleee

3

और कुछ महीने बाद:

(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 
) 

यह एक elisp hashmap में वर्तमान बफर के YAML बदल जाता है, json.el की मदद से: मैं यह चाहता था, इसलिए यहाँ कैसे अजगर से कुछ मदद के साथ यह करने के लिए है ।

आपको पाइथन की पायमैल की आवश्यकता है: pip install PyYaml

json.el: http://edward.oconnor.cx/2006/03/json.el

+0

मेरा मतलब है कि एक स्तर पर एक हैक जो मुझे विवेक बनाता है, लेकिन दूसरे पर, मैं खुद को अनादर करने के लिए नहीं ला सकता हूं "जिस उपकरण की मुझे आवश्यकता है वह मौजूद नहीं है, इसलिए मैं इसे स्वयं लिखूंगा।" Upvoted। –

0

तीन साल बाद, हम dynamic modules है, और emacs-libyaml बहुत दिलचस्प लग रहा है। यह Elisp में libyaml की सी बाइंडिंग का पर्दाफाश करने के लिए गतिशील मॉड्यूल सिस्टम का उपयोग करता है। मैं प्रदर्शन शानदार होने की उम्मीद करता हूं, हालांकि मैंने इसका परीक्षण नहीं किया है।

संबंधित मुद्दे