सामग्री पर जाएँ
cd /languages
  • हाई-इंटीग्रिटी कोड
  • प्रोग्रामिंग
  • AST और सिंबल सपोर्ट

Maguyva में Ada: स्पेसिफ़िकेशन, बॉडी और पैकेज ग्राफ़

Maguyva, Ada को AST, सिंबल और ग्राफ़ के साथ सपोर्ट करता है, ताकि AI एजेंट लंबे समय से चल रहे Ada सिस्टम में पैकेज स्पेसिफ़िकेशन, बॉडी, टास्क और टैग्ड टाइप को ट्रेस कर सकें।

Ada रिपॉज़िटरी को डिपेंडेंसी मैप की ज़रूरत क्यों है

Ada इस बात को अलग रखती है कि पैकेज क्या वादा करता है (.ads) और उसे कैसे पूरा करता है (.adb)। यह अच्छी इंजीनियरिंग है, और इसका मतलब यह भी है कि एक बदलाव कई फ़ाइलों को छूता है, जिन्हें टेक्स्ट सर्च आपके लिए आपस में नहीं जोड़ेगा। लंबे समय से चल रहे Ada सिस्टम एक और परत जोड़ते हैं: जेनेरिक्स, टैग्ड टाइप, टास्क और प्रोटेक्टेड ऑब्जेक्ट, जिनके संबंध किसी एक फ़ाइल से ज़्यादा मायने रखते हैं।

Maguyva एजेंट को बदलाव सुझाने से पहले यह डिपेंडेंसी मैप देता है, यानी ठीक उसी क्रम में, जिसकी उम्मीद एक हाई-इंटीग्रिटी समीक्षा करती है।

Maguyva, Ada से क्या निकालता है

Maguyva .ads, .adb और .ada को कवर करता है। सबप्रोग्राम बॉडी और प्रोसीजर व फ़ंक्शन स्पेसिफ़िकेशन, दोनों कॉल किए जा सकने वाले सिंबल के रूप में निकाले जाते हैं, ताकि आप किसी रूटीन का स्पेसिफ़िकेशन और बॉडी दोनों खोज सकें। सिंबल मिलान केस-इनसेंसिटिव है, ठीक Ada की तरह।

इम्पोर्ट with और use क्लॉज़ से आते हैं; कीवर्ड हटा दिया जाता है ताकि ग्राफ़ में पैकेज का नाम रहे। ग्राफ़ कॉल, टैग्ड टाइप में इनहेरिटेंस और ओवरराइड, इंस्टैंशिएशन, टाइप रेफ़रेंस, रीड और राइट, और एक्सेप्शन रेज़ और हैंडल करने वाली एज भी दर्ज करता है।

स्ट्रक्चरल सर्च में टास्क टाइप, प्रोटेक्टेड टाइप, रिकॉर्ड टाइप और इंटरफ़ेस टाइप को टाइप परिभाषा के रूप में, और एंट्री बॉडी को मेथड के रूप में चुना जा सकता है।

एजेंट प्रॉम्प्ट के उदाहरण

  • “कौन-सी यूनिट Flight_Control.Sensors पर निर्भर हैं, और वे उसके कौन-से सबप्रोग्राम कॉल करती हैं?” (incoming दिशा में dependency_search)
  • “Compute_Trajectory का स्पेसिफ़िकेशन, बॉडी और हर कॉलर दिखाओ।” (find_symbol)
  • “समझाओ कि टेलीमेट्री टास्क लॉगिंग वाले प्रोटेक्टेड ऑब्जेक्ट को डेटा कैसे सौंपता है।” (get_task_context)

ज्ञात सीमाएँ

  • Ada कुछ कॉल, रिकॉर्ड फ़ील्ड एक्सेस और इंडेक्सिंग के लिए एक ही सिंटैक्स इस्तेमाल करती है। कॉल ग्राफ़ को साफ़ रखने के लिए Maguyva बिल्ट-इन टाइप, स्टैंडर्ड लाइब्रेरी पैकेज, एट्रिब्यूट फ़ंक्शन और ऑपरेटर (लगभग 113 पैटर्न) फ़िल्टर करता है, इसलिए स्टैंडर्ड लाइब्रेरी को किए गए कॉल ग्राफ़ एज नहीं बनते। रिकॉर्ड फ़ील्ड एक्सेस और इंडेक्सिंग को फ़ील्ड नामों की किसी सूची से नहीं, बल्कि ग्रामर में उनकी जगह के आधार पर कॉल से अलग पहचाना जाता है। Put_Line, Put और Get जैसे आम टेक्स्ट I/O कॉल जान-बूझकर रखे जाते हैं।
  • use क्लॉज़ विज़िबिलिटी बदलते हैं, लेकिन स्ट्रक्चरल सर्च में इम्पोर्ट के रूप में नहीं चुने जाते; with क्लॉज़ चुने जाते हैं।
  • रिकॉर्ड और इंटरफ़ेस टाइप नोड अनाम हिस्से हो सकते हैं, इसलिए नाम पर आधारित स्ट्रक्चरल सर्च उन्हें छोड़ सकती है। नाम वाले टाइप के लिए find_symbol इस्तेमाल करें।

अगले कदम

क्विकस्टार्ट से रिपॉज़िटरी जोड़ें, फिर सपोर्ट मैट्रिक्स कम्पैटिबिलिटी पेज पर देखें। अगर आपका Ada कोड C से जुड़ता है, तो C गाइड भी पढ़ें।

सबसे उपयुक्त

  • > एयरोस्पेस, रक्षा, रेल या दूसरे हाई-इंटीग्रिटी क्षेत्रों में लंबे समय से चल रहे Ada कोड को संभालने वाली टीमें, जहाँ हर बदलाव की समीक्षा होती है।
  • > `.ads` स्पेसिफ़िकेशन और `.adb` बॉडी में बँटे कोडबेस, जहाँ इंटरफ़ेस और इम्प्लीमेंटेशन अलग-अलग फ़ाइलों में होते हैं।
  • > इंजीनियर, जो AI एजेंट को बिना निगरानी कोड बनाने के लिए नहीं, बल्कि इम्पैक्ट एनालिसिस और समीक्षा की तैयारी के लिए इस्तेमाल करते हैं।

एजेंट वर्कफ़्लो

  • > किसी पैकेज का स्पेसिफ़िकेशन बदलने से पहले उसे `with` करने वाली हर यूनिट ढूँढना।
  • > पैकेज सीमाओं के पार किसी रूटीन को कॉल करने वाले सबप्रोग्राम ट्रेस करना।
  • > कॉन्करेंसी या डिज़ाइन बदलाव से पहले टास्क टाइप, प्रोटेक्टेड टाइप और टैग्ड-टाइप पदानुक्रम का नक्शा बनाना।

इंजन विवरण

  • > Ada सपोर्ट `.ads` स्पेसिफ़िकेशन, `.adb` बॉडी और `.ada` फ़ाइलों को कवर करता है। सबप्रोग्राम बॉडी और स्पेसिफ़िकेशन दोनों कॉल किए जा सकने वाले सिंबल हैं।
  • > सिंबल मिलान केस-इनसेंसिटिव है, और कीवर्ड हटाने के बाद `with` और `use` क्लॉज़ इम्पोर्ट संबंध बनते हैं।
  • > लगभग 113 बिल्ट-इन टाइप, स्टैंडर्ड लाइब्रेरी पैकेज, एट्रिब्यूट फ़ंक्शन और ऑपरेटर कॉल से फ़िल्टर किए जाते हैं; रिकॉर्ड फ़ील्ड एक्सेस और इंडेक्सिंग को ग्रामर में उनकी जगह के आधार पर कॉल से अलग पहचाना जाता है, और `Put_Line`, `Put` और `Get` जान-बूझकर रखे जाते हैं।

उपयोगी MCP एंट्री पॉइंट

  • find_symbol

    किसी सबप्रोग्राम का स्पेसिफ़िकेशन और बॉडी उनके रेफ़रेंस के साथ एक साथ ढूँढने के लिए इस्तेमाल करें।

  • dependency_search

    हर निर्भर यूनिट देखने के लिए, किसी पैकेज का स्पेसिफ़िकेशन बदलने से पहले उस पर incoming ट्रैवर्सल इस्तेमाल करें।

  • get_task_context

    "समझाओ कि टेलीमेट्री टास्क लॉगिंग वाले प्रोटेक्टेड ऑब्जेक्ट को डेटा कैसे सौंपता है" जैसे प्रॉम्प्ट के लिए इस्तेमाल करें।

संबंधित गाइड

रिपॉज़िटरी के संबंधित हिस्से

सभी गाइड ब्राउज़ करें