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

Canonical source: https://maguyva.ai/hi/languages/ada

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

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

## सपोर्ट स्नैपशॉट

- टियर: AST और सिंबल सपोर्ट
- प्रोग्रामिंग
- एक्सटेंशन: .ada, .adb, .ads
- सिंटैक्स-अवेयर सर्च और स्ट्रक्चरल कॉन्टेक्स्ट के लिए असली AST पार्सिंग।
- नामित सिंबल सिमेंटिक लुकअप और क्रॉस-रेफ़रेंस को फ़ीड करते हैं। रिलेशनशिप एक्सट्रैक्शन सक्षम होने पर ग्राफ़ नेविगेशन उपलब्ध होता है।
- यह भाषा ग्राफ़-अवेयर सर्च में सिंबल्स और रिलेशनशिप्स जोड़ती है; सपोर्टेड एज प्रकार इसके नेटिव कंस्ट्रक्ट्स के अनुसार बदलते हैं।
- AST पार्सिंग और सिंबल एक्सट्रैक्शन, दोनों उपलब्ध हैं।

## सबसे उपयुक्त

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

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

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

## 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` इस्तेमाल करें।

## अगले कदम

[क्विकस्टार्ट](/hi/docs/quickstart) से रिपॉज़िटरी जोड़ें, फिर सपोर्ट मैट्रिक्स [कम्पैटिबिलिटी पेज](/hi/docs/compatibility) पर देखें। अगर आपका Ada कोड C से जुड़ता है, तो [C गाइड](/hi/languages/c) भी पढ़ें।

## इंजन विवरण

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

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

- `find_symbol`: किसी सबप्रोग्राम का स्पेसिफ़िकेशन और बॉडी उनके रेफ़रेंस के साथ एक साथ ढूँढने के लिए इस्तेमाल करें।
- `dependency_search`: हर निर्भर यूनिट देखने के लिए, किसी पैकेज का स्पेसिफ़िकेशन बदलने से पहले उस पर incoming ट्रैवर्सल इस्तेमाल करें।
- `get_task_context`: "समझाओ कि टेलीमेट्री टास्क लॉगिंग वाले प्रोटेक्टेड ऑब्जेक्ट को डेटा कैसे सौंपता है" जैसे प्रॉम्प्ट के लिए इस्तेमाल करें।
