सामग्री पर जाएँ
cd /languages
  • वैज्ञानिक विरासत
  • प्रोग्रामिंग
  • AST और सिंबल सपोर्ट

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

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

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

अगले कदम

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

सबसे उपयुक्त

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

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

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

इंजन विवरण

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

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

  • find_symbol

    सबरूटीन, फ़ंक्शन या मॉड्यूल के नाम से शुरू करें; मिलान Fortran की तरह केस को अनदेखा करता है।

  • dependency_search

    संख्यात्मक बदलाव से पहले हर कॉलर देखने के लिए किसी सॉल्वर रूटीन या साझा मॉड्यूल पर incoming ट्रैवर्सल इस्तेमाल करें।

  • get_task_context

    "सॉल्वर लूप में बाउंड्री कंडीशन कैसे लागू होती हैं, इसे ट्रेस करो" जैसे प्रॉम्प्ट के लिए इस्तेमाल करें।

संबंधित गाइड

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

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