क्या कोई SMIE दस्तावेज है जो स्पष्ट है?


18

मैंने कई, कई घंटे बिताए हैं जो अब किसी भी प्रकार के SMIE इंडेंटेशन नियम / व्याकरण / काम करने की कोशिश कर रहे हैं।

वहाँ एक छोटे से, खिलौना या कंकाल SMIE- आधारित मोड के किसी भी उदाहरण के साथ प्रलेखन पर है कि यह वास्तव में कैसे काम करता है, या किसी भी चर्चा कहीं भी इसका उपयोग कैसे करें? कुछ ऐसा है, जो कहता है, एक अभिव्यक्ति को परिभाषित करता है जैसे कि अर्ध-बृहदान्त्र में समाप्त होने वाले टोकन की एक स्ट्रिंग और कोष्ठक के बीच कुछ अभिव्यक्तियों के रूप में एक ब्लॉक और कुछ नहीं। वास्तव में, वास्तव में सरल?

विशिष्ट प्रश्न: जब मुझे प्रतिक्रिया मिलती है तो 90% स्माइली-कॉन्फिग-शो-इंडेंट का उपयोग करते समय '': सूची-परिचय '' -> शून्य ''। अभिव्यक्ति की परिभाषा या अभिव्यक्ति की सूची पर आधारित सूची-परिचय क्या है? इसे शून्य क्यों कहते हैं और अभी भी निम्नलिखित पंक्तियों को इंगित करते हैं? मुझए इसे कैसे बदलना है?

दूसरी बात: क्या मेरे व्याकरण और मेरे स्माइली-नियमों के बीच कोई संबंध है? मेरा मानना ​​है कि क्योंकि वे दोनों स्माइली-सेटअप में पास हो चुके हैं, लेकिन मुझे यह कहने का कोई तरीका नहीं मिल रहा है, "जब आप एक 'ब्लॉक' देखते हैं, तो सामग्री को इंडेंट करें", उदाहरण के लिए, एक व्याकरण के आधार पर जो एक ब्लॉक की पहचान करता है ।

तीसरा, SMIE के लिए बहुत सारे नियम "बेक्ड इन" लगते हैं। बस इसे बंद करने से उदाहरण के लिए कोष्ठक, ब्रेस और कोष्ठक की सामान्य हैंडलिंग मिलती है। क्या इन नियमों को देखने या उन्हें संशोधित करने का कोई तरीका है? या यह है कि वाक्यविन्यास तालिका यह सब कर रही है और एसएमईई शाब्दिक रूप से कुछ भी नहीं कर रही है (जिसे मैं संदेह करना शुरू कर रहा हूं)।

अंत में, जब मैं SMIE को डीबग करने की कोशिश कर रहा हूं, तो "एडिट, इवैल मोड मोड बफर" करने का प्रयास करें, अन्य बफर में उदाहरण कोड पर जाएं, एमएक्स <माय मोड>, टेस्ट "चक्र" लेकिन ऐसा लगता है कि चारों ओर की प्रत्येक यात्रा नियमों को स्पष्ट नहीं करती है पिछला चक्र। मैं कैसे सुनिश्चित कर सकता हूं कि परिभाषित-व्युत्पन्न-मोड एक साफ शीट से शुरू होता है? मेरे पास (सभी-स्थानीय-वैरिएबल में) हैं, लेकिन यह पर्याप्त नहीं लगता है और मैं अंत में एमएसीएस को बंद कर देता हूं।

मैं जो भी मेरे पास है उसका कोई भी उदाहरण पोस्ट नहीं कर रहा हूं क्योंकि मेरे पास कुछ भी नहीं है जो अस्पष्ट रूप से भी काम करता है, एक तरफ हाइलाइटिंग से (फ़ॉन्ट-लॉक-डिफॉल्ट का उपयोग करके, इसलिए यह वास्तव में एसएमआईई भी नहीं है)। मुझे कुछ वास्तविक शिशु चरणों की आवश्यकता है।


1
प्रलेखन के लिए SMIE लेखक से पूछें?
आकर्षित किया

4
@ ड्रू ने सार्वजनिक रूप से कहा है कि वह एक अच्छे डॉक्यूमेंटर नहीं हैं (और उनके डॉक्यूमेंट को पढ़कर मैं बहस नहीं कर सकता), इसलिए यह बेकार लगता है।
नागोरा

1
हाँ मैं जानता हूँ। उन्होंने यहां तक ​​कहा कि कोड को डॉक के रूप में पर्याप्त होना चाहिए। ओह, क्या मैं अपने सुझाव के बाद " ;-) " रखना भूल गया ? ;-)
आकर्षित किया

1
मैंने कुछ समय पहले इस पर एक नज़र डाली थी और ध्यान दिया था कि बड़े पैमाने lisp/progmodes/sh-script.elपर उपयोग करना प्रतीत होता है smie.el। वे इसका उपयोग करने के लिए दस्तावेज़ भी प्रतीत करते हैं ताकि शायद यह एक बेहतर उदाहरण हो सके?
१२:१६

2
SML मोड और मोडुला 2 मोड दोनों SMIE का उपयोग करते हैं। IIRC SMIE को मूल रूप से SML मोड से निकाला गया था। मुझे स्वीकार करना चाहिए, मैंने भी इसे विशेष रूप से कठिन पाया है।
ओसोडो

जवाबों:



1

आप कुछ इस तरह से शुरुआत कर सकते हैं

(defconst foo-smie-grammar
    (smie-prec2->grammar
     (smie-bnf->prec2
      '((exp ("begin" insts "end"))
        (insts (exp) (insts ";" insts))))))

  ...
  (smie-setup foo-smie-grammar #'ignore)
  ...
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.