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

Maguyva में Lua: गेम, प्लगइन और OpenResty के लिए कोड ग्राफ़

Maguyva, Lua को AST, सिंबल और ग्राफ़ के साथ सपोर्ट करता है, ताकि AI एजेंट Lua कोड में मॉड्यूल, कोलन मेथड, मेटाटेबल क्लास और require श्रृंखलाओं को ट्रेस कर सकें।

Lua सतही AI टूल को कहाँ उलझाती है

Lua में क्लास के लिए कोई कीवर्ड नहीं है। ऑब्जेक्ट टेबल हैं, मेथड उनमें रखे फ़ंक्शन हैं, और इनहेरिटेंस एक setmetatable कॉल है। मॉड्यूल वही है जो require लौटाता है। संरचना असली है, पर वह ऐसी परिपाटियों में रहती है जिन्हें टेक्स्ट सर्च नहीं समझता।

Maguyva इन परिपाटियों को संरचना के रूप में पढ़ता है, ताकि एजेंट पूछ सके कि किसी मेथड को कौन कॉल करता है या कौन-सी टेबल किसी बेस को बढ़ाती हैं, और सीधा जवाब पा सके।

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

Maguyva .lua फ़ाइलों को कवर करता है। फ़ंक्शन डिक्लेरेशन, local function परिभाषाएँ और फ़ंक्शन एक्सप्रेशन निकाले जाते हैं, और function Account:deposit() जैसे कोलन मेथड अपनी मालिक टेबल Account से जोड़े जाते हैं। मेथड श्रृंखलाएँ एक-एक कॉल करके ट्रेस की जाती हैं, और self पर किए गए कॉल अपने घेरने वाले ऑब्जेक्ट से बँधे रहते हैं।

Lua की परिपाटियाँ इस तरह संबंध बनती हैं:

  • require, dofile और loadfile इम्पोर्ट दर्ज करते हैं।
  • मॉड्यूल स्तर पर setmetatable कॉल इनहेरिटेंस दर्ज करता है।
  • ClassName:new(), ClassName.new() और setmetatable({...}, ClassName) इंस्टैंशिएशन गिने जाते हैं।
  • error() थ्रो दर्ज करता है, और pcall तथा xpcall कैच दर्ज करते हैं।

ग्राफ़ रीड और राइट तथा कंट्रोल फ़्लो भी दर्ज करता है।

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

  • “Inventory:addItem को कौन कॉल करता है, और किन स्क्रिप्ट से?” (find_symbol, फिर dependency_search इनकमिंग)
  • “कौन-से मॉड्यूल util.http को require से लोड करते हैं?” (dependency_search)
  • “ट्रेस करो कि खिलाड़ी को चोट लगने पर क्या होता है।” (get_task_context)

ज्ञात सीमाएँ

  • लगभग 150 नाम संबंधों से फ़िल्टर किए जाते हैं: Lua स्टैंडर्ड लाइब्रेरी (string, table, math, io, os, coroutine, debug और utf8) के साथ Neovim का vim.* और OpenResty का ngx.* API। इन API के कॉल ग्राफ़ एज नहीं हैं; उन्हें ढूँढने के लिए text_pattern_search इस्तेमाल करें।
  • क्योंकि मॉड्यूल और क्लास सामान्य कॉल और टेबल से बनते हैं, structural_search में classes और imports प्रीसेट Lua के लिए कुछ भी नहीं चुनते। इसकी जगह find_symbol या text_pattern_search इस्तेमाल करें।
  • Lua में इंटरफ़ेस या टाइप एनोटेशन नहीं हैं, इसलिए इंटरफ़ेस-कार्यान्वयन और टाइप-रेफ़रेंस संबंध लागू नहीं के रूप में चिह्नित हैं।

अगले कदम

क्विकस्टार्ट से रिपॉज़िटरी जोड़ें, फिर सपोर्ट मैट्रिक्स कम्पैटिबिलिटी पेज पर देखें। नेटिव कोड में Lua को एम्बेड करने वाले इंजन के लिए C गाइड भी पढ़ें।

सबसे उपयुक्त

  • > गेम कोड और इंजन स्क्रिप्ट जहाँ मॉड्यूल, टेबल-आधारित क्लास और इवेंट हैंडलर एक-दूसरे को कॉल करते हैं।
  • > Neovim प्लगइन और एडिटर कॉन्फ़िगरेशन, जो require से लोड होने वाले कई मॉड्यूल में बँटे हैं।
  • > OpenResty और Lua के दूसरे एम्बेडेड उपयोग, जहाँ अनुरोध हैंडलर साझा यूटिलिटी मॉड्यूल के साथ रहते हैं।

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

  • > किसी मॉड्यूल फ़ंक्शन के आर्ग्युमेंट बदलने से पहले उसके सभी कॉलर ढूँढना।
  • > किसी साझा यूटिलिटी को दूसरी जगह ले जाने से पहले यह ट्रेस करना कि कौन-से मॉड्यूल उसे require से लोड करते हैं।
  • > यह मैप करना कि कौन-सी टेबल `setmetatable` के ज़रिए किसी बेस क्लास से इनहेरिट करती हैं।

इंजन विवरण

  • > Lua सपोर्ट `.lua` फ़ाइलों को कवर करता है। `function Account:deposit()` जैसे कोलन मेथड अपनी मालिक टेबल से जोड़े जाते हैं।
  • > `require`, `dofile` और `loadfile` इम्पोर्ट दर्ज करते हैं, मॉड्यूल स्तर पर `setmetatable` इनहेरिटेंस दर्ज करता है, और `ClassName:new()` इंस्टैंशिएशन गिना जाता है।
  • > `error()` थ्रो और `pcall` कैच दर्ज करता है, जबकि लगभग 150 स्टैंडर्ड लाइब्रेरी, `vim.*` और `ngx.*` नाम फ़िल्टर किए जाते हैं।

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

  • find_symbol

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

  • dependency_search

    किसी साझा मॉड्यूल को दूसरी जगह ले जाने से पहले यह देखने के लिए इनकमिंग ट्रैवर्सल इस्तेमाल करें कि कौन-सी फ़ाइलें उसे require से लोड करती हैं।

  • text_pattern_search

    ग्राफ़ से फ़िल्टर किए गए `vim.*`, `ngx.*` या स्टैंडर्ड लाइब्रेरी कॉल के लिए इस्तेमाल करें।

संबंधित गाइड

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

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