Erlang 21

erl_recomment




erlang

erl_recomment

मॉड्यूल

erl_recomment

मॉड्यूल सारांश

अमूर्त Erlang सिंटैक्स पेड़ों में टिप्पणियों को सम्मिलित करना।

विवरण

अमूर्त Erlang सिंटैक्स पेड़ों में टिप्पणियों को सम्मिलित करना

इस मॉड्यूल में सही स्थानों पर अमूर्त सिंटैक्स ट्री पर संलग्नक के रूप में, स्थिति, इंडेंटेशन और टेक्स्ट द्वारा वर्णित टिप्पणियों को सम्मिलित करने के लिए कार्य शामिल हैं।

जानकारी का प्रकार

वाक्य रचना () = erl_syntax:syntaxTree()

एक सार वाक्यविन्यास वृक्ष। विवरण के लिए erl_syntax मॉड्यूल देखें।

निर्यात

quick_recomment_forms (ट्री :: फ़ॉर्म, टिप्पणियाँ :: [टिप्पणी]) -> वाक्य रचना ()

प्रकार

जैसे recomment_forms/2 , लेकिन केवल शीर्ष-स्तरीय टिप्पणियां सम्मिलित करता है। फ़ंक्शन परिभाषा या घोषणाओं ("फ़ॉर्म") के भीतर टिप्पणियों को केवल अनदेखा किया जाता है।

recomment_forms (ट्री :: फ़ॉर्म, टिप्पणियाँ :: [टिप्पणी]) -> सिंटैक्सट्री ()

प्रकार

एक कार्यक्रम का प्रतिनिधित्व करने वाले सिंटैक्स ट्री / पेड़ों पर टिप्पणियाँ देता है। दिए गए Forms form_list का एकल सिंटैक्स ट्री, या "प्रोग्राम फ़ॉर्म" का प्रतिनिधित्व करने वाले सिंटैक्स पेड़ों की एक सूची होनी चाहिए। वाक्यविन्यास के पेड़ों में मान्य स्थिति जानकारी होनी चाहिए (विवरण के लिए, पुनः recomment_tree/2 )। परिणाम form_list का एक संगत सिंटैक्स ट्री है जिसमें सूची Comments सभी उचित स्थानों पर संलग्न की गई हैं।

Forms मानते हुए एक प्रोग्राम (या "प्रोग्राम फॉर्म" का कोई अनुक्रम) का प्रतिनिधित्व करता है, कोई भी टिप्पणी जिसकी पहली लाइनें सीधे एक विशिष्ट प्रोग्राम फॉर्म के साथ जुड़ी नहीं हैं, पड़ोसी प्रोग्राम के रूपों के बीच सम्मिलित स्टैंडअलोन टिप्पणियां बन जाएंगी। इसके अलावा, टिप्पणियाँ जिनकी कॉलम स्थिति एक से कम या एक से अधिक है, वे एक प्रोग्राम फॉर्म से जुड़ी नहीं होंगी जो एक परस्पर विरोधी लाइन नंबर से शुरू होती है (यह प्रीप्रोसेसर-जनरेट line -attributes के साथ हो सकता है)।

यदि Forms form_list तुलना में किसी अन्य प्रकार का वाक्यविन्यास ट्री है, तो टिप्पणियों को recomment_tree/2 का उपयोग करके सीधे डाला जाएगा, और उस प्रक्रिया से बचे किसी भी टिप्पणी को परिणाम पर पोस्टकॉम के रूप में जोड़ा जाता है।

Comments में प्रविष्टियाँ बहु-पंक्ति Comments प्रतिनिधित्व करती हैं। प्रत्येक प्रविष्टि के लिए, Line लाइन नंबर है और टिप्पणी के बाएं कॉलम (पहले टिप्पणी-परिचय " % वर्ण) का कॉलम कॉलम। Indentation टिप्पणी (या बाएं मार्जिन) और टिप्पणी के बाएं स्तंभ से पहले अंतिम गैर-व्हाट्सएप चरित्र के बीच चरित्र पदों की संख्या है। Text शीर्ष-डाउन क्रम में लगातार टिप्पणी लाइनों का प्रतिनिधित्व करने वाले तारों की एक सूची है, जहां प्रत्येक स्ट्रिंग में सभी वर्णों का अनुसरण होता है (लेकिन शामिल नहीं है) टिप्पणी-परिचय " % " और अप करने के लिए (लेकिन शामिल नहीं) समाप्ति वाली नई पंक्ति। (Cf. मॉड्यूल erl_comment_scan ।)

मूल्यांकन कारण {bad_position, Pos} साथ बाहर निकलता है यदि संबंधित स्थिति की जानकारी इनपुट में कुछ उप-प्रकार की Pos के पास पहचानने योग्य प्रारूप नहीं है, या कारण के साथ {bad_tree, L, C} यदि पंक्ति L , स्तंभ C पर एक टिप्पणी का सम्मिलन C , तो विफल रहता है क्योंकि पेड़ की संरचना बीमार है।

इन्हें भी देखें: erl_comment_scan , quick_recomment_forms/2 , recomment_tree/2

recomment_tree (ट्री :: सिंटैक्सट्री (), टिप्पणियाँ :: [टिप्पणी]) -> {वाक्यविन्यास (), [टिप्पणी]}

प्रकार

वाक्यविन्यास के पेड़ पर टिप्पणियाँ देता है। परिणाम एक जोड़ी {NewTree, Remainder} जहाँ NewTree दिए गए Tree जहां सूची से Comments उचित स्थानों पर संलग्न की गई हैं। Remainder Comments में प्रविष्टियों की सूची है जो सम्मिलित नहीं की गई हैं, क्योंकि उनकी लाइन संख्या पेड़ में किसी भी नोड की तुलना में अधिक है। Comments में प्रविष्टियां क्रम में डाली गई हैं; यदि दो टिप्पणियां एक ही नोड से जुड़ी हुई हैं, तो वे प्रोग्राम टेक्स्ट में एक ही क्रम में दिखाई देंगे।

सिंटैक्स ट्री के नोड्स में मान्य स्थिति जानकारी होनी चाहिए। यह एकल पूर्णांक हो सकता है, जिसे एक पंक्ति संख्या, या 2- या 3-ट्यूपल्स का प्रतिनिधित्व करने के लिए माना जाता है जहां पहला या दूसरा तत्व एक पूर्णांक होता है, इस स्थिति में पंक्ति संख्या का प्रतिनिधित्व करने के लिए बाएं पूर्णांक तत्व मान लिया जाता है। एक से कम लाइन नंबरों को नजरअंदाज किया जाता है (आमतौर पर, नए बनाए गए नोड्स के लिए डिफ़ॉल्ट लाइन नंबर शून्य है)।

Line , Column और Indentation फ़ील्ड्स, और त्रुटियों के मामले में व्यवहार के विवरण के लिए, पुनः Indentation recomment_forms/2

इसे भी देखें: recomment_forms/2

रिचर्ड कार्लसन [email protected]