# Maguyva में Fortran: वैज्ञानिक कोडबेस के लिए कोड ग्राफ़

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

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, Fortran को AST, सिंबल और ग्राफ़ के साथ सपोर्ट करता है, ताकि AI एजेंट संख्यात्मक कोड बदलने से पहले सबरूटीन, मॉड्यूल और डिराइव्ड टाइप को ट्रेस कर सकें।

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

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

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

- रिसर्च, इंजीनियरिंग और HPC टीमें, जो मौजूदा टीम से भी पुराने Fortran सॉल्वर, सिमुलेशन या संख्यात्मक लाइब्रेरी संभालती हैं।
- ऐसे रिपॉज़िटरी, जहाँ फ़िक्स्ड-फ़ॉर्म `.f` फ़ाइलें `.f90` मॉड्यूल और नए फ़्री-फ़ॉर्म कोड के साथ रहती हैं, अक्सर C या Python रैपर के साथ।
- एजेंट की मदद से होने वाली समीक्षाएँ, जहाँ पहला कदम यह पता करना है कि संख्यात्मक लॉजिक बदलने से पहले कौन-से सबरूटीन किसी साझा मॉड्यूल को छूते हैं।

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

- किसी सॉल्वर रूटीन के आर्ग्युमेंट या इकाइयाँ बदलने से पहले उसे कॉल करने वाले सबरूटीन और फ़ंक्शन ढूँढना।
- कोई प्रोग्राम यूनिट `use` से कौन-से मॉड्यूल इम्पोर्ट करती है, उनकी सूची बनाना और उनकी परिभाषाओं पर जाना।
- कोई डिराइव्ड टाइप कहाँ घोषित है और कौन-सी प्रोसीजर उसका उपयोग करती हैं, यह खोजना।

## Fortran को स्ट्रिंग मिलान की नहीं, संरचना की ज़रूरत क्यों है

Fortran कोडबेस आम तौर पर पुराने और बड़े होते हैं, और इन्हें सॉफ़्टवेयर टीमों ने नहीं, बल्कि विषय-विशेषज्ञों ने लिखा होता है। `SOLVE`, `Solve` और `solve` नाम के रूटीन एक ही रूटीन हैं। मॉड्यूल सैकड़ों फ़ाइलों में फैले होते हैं, और इंट्रिंसिक प्रोसीजर की लाइब्रेरी इतनी बड़ी है कि एक साधारण कॉल सूची में ज़्यादातर `SQRT`, `SUM` और `WRITE` ही दिखते हैं।

सिर्फ़ grep करने वाला एजेंट इस शोर में डूब जाता है। Maguyva उसे पहले संरचना देता है: कौन-सी प्रोग्राम यूनिट मौजूद हैं, वे कौन-से मॉड्यूल इस्तेमाल करती हैं, और आपके कोड के कौन-से रूटीन एक-दूसरे को कॉल करते हैं।

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

Maguyva फ़िक्स्ड-फ़ॉर्म और फ़्री-फ़ॉर्म सोर्स (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`) को कवर करता है। फ़ंक्शन और सबरूटीन कॉल किए जा सकने वाले सिंबल के रूप में निकाले जाते हैं, और डिराइव्ड टाइप को स्ट्रक्चरल सर्च में टाइप परिभाषा के रूप में चुना जा सकता है।

सिंबल मिलान केस-इनसेंसिटिव है, ठीक Fortran की तरह। इम्पोर्ट संबंध `use` और `include` स्टेटमेंट से आते हैं; कीवर्ड हटा दिया जाता है ताकि ग्राफ़ में मॉड्यूल का नाम रहे। कॉल, रीड, असाइनमेंट, टाइप रेफ़रेंस और विस्तारित डिराइव्ड टाइप से इनहेरिटेंस भी ग्राफ़ में दर्ज होते हैं।

रिलेशनशिप फ़िल्टर लगभग 165 इंट्रिंसिक प्रोसीजर (I/O स्टेटमेंट और गणित, ऐरे, स्ट्रिंग, टाइप-कन्वर्ज़न और बिट-मैनिपुलेशन रूटीन) को हटा देता है, ताकि बची हुई एज आपके अपने कोड की ओर इशारा करें।

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

- "`compute_flux` को कौन कॉल करता है, और वे कौन-से मॉड्यूल इस्तेमाल करते हैं?" (`find_symbol`, फिर incoming दिशा में `dependency_search`)
- "सॉल्वर लूप में बाउंड्री कंडीशन कैसे लागू होती हैं, इसे ट्रेस करो।" (`get_task_context`)
- "`constants` मॉड्यूल इस्तेमाल करने वाली हर प्रोग्राम यूनिट ढूँढो।" (`use constants` के लिए `text_pattern_search`, फिर `find_symbol`)

## ज्ञात सीमाएँ

- Fortran में डेकोरेटर या एक्सेप्शन हैंडलिंग नहीं है, इसलिए ये रिलेशनशिप टाइप लागू नहीं के रूप में चिह्नित हैं।
- टाइप-बाउंड प्रोसीजर सामान्य फ़ंक्शन और सबरूटीन वाले नोड ही साझा करती हैं। `structural_search` में `functions` प्रीसेट इस्तेमाल करें; `methods` प्रीसेट कोई Fortran नोड नहीं चुनता।
- फ़िल्टर किए गए इंट्रिंसिक को किए गए कॉल ग्राफ़ एज के रूप में नहीं दिखते। जब आपको हर `WRITE` या `OPEN` चाहिए, तो `text_pattern_search` इस्तेमाल करें।

## अगले कदम

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

## इंजन विवरण

- Fortran सपोर्ट फ़िक्स्ड-फ़ॉर्म और फ़्री-फ़ॉर्म सोर्स को कवर करता है: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` और `.f08`।
- फ़ंक्शन और सबरूटीन कॉल किए जा सकने वाले सिंबल हैं, सिंबल मिलान केस-इनसेंसिटिव है, और `use` व `include` इम्पोर्ट संबंध बनते हैं।
- लगभग 165 इंट्रिंसिक प्रोसीजर (I/O, गणित, ऐरे, स्ट्रिंग, टाइप-कन्वर्ज़न और बिट रूटीन) संबंधों से फ़िल्टर किए जाते हैं। डेकोरेटर और एक्सेप्शन संबंध लागू नहीं के रूप में चिह्नित हैं।

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

- `find_symbol`: सबरूटीन, फ़ंक्शन या मॉड्यूल के नाम से शुरू करें; मिलान Fortran की तरह केस को अनदेखा करता है।
- `dependency_search`: संख्यात्मक बदलाव से पहले हर कॉलर देखने के लिए किसी सॉल्वर रूटीन या साझा मॉड्यूल पर incoming ट्रैवर्सल इस्तेमाल करें।
- `get_task_context`: "सॉल्वर लूप में बाउंड्री कंडीशन कैसे लागू होती हैं, इसे ट्रेस करो" जैसे प्रॉम्प्ट के लिए इस्तेमाल करें।
