# Maguyva'da Lua: oyunlar, eklentiler ve OpenResty için kod grafları

Canonical source: https://maguyva.ai/tr/languages/lua

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, Lua'yı AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları Lua kodunda modülleri, iki nokta metotlarını, metatable sınıflarını ve require zincirlerini izleyebilir.

## Destek anlık görüntüsü

- Katman: AST ve sembol desteği
- Programlama
- Uzantılar: .lua
- Sözdizimi farkında arama ve yapısal bağlam için gerçek AST ayrıştırması.
- Adlandırılmış semboller anlamsal aramayı ve çapraz referansı besler. İlişki çıkarımı etkinleştirildiğinde graf gezinmesi kullanılabilir.
- Bu dil, graf farkındalıklı aramaya semboller ve ilişkiler sağlar; desteklenen kenar türleri dilin yerel yapılarına göre değişir.
- Hem AST ayrıştırma hem de sembol çıkarma kullanılabilir.

## En uygun kullanım

- Modüllerin, tablo tabanlı sınıfların ve olay işleyicilerinin birbirini çağırdığı oyun kodu ve motor betikleri.
- require ile yüklenen birçok modüle bölünmüş Neovim eklentileri ve editör yapılandırması.
- İstek işleyicilerinin paylaşılan yardımcı modüllerin yanında durduğu OpenResty ve diğer gömülü Lua kullanımları.

## Ajan iş akışları

- Bir modül fonksiyonunun argümanlarını değiştirmeden önce tüm çağıranlarını bulmak.
- Paylaşılan bir yardımcıyı taşımadan önce onu require ile yükleyen modülleri izlemek.
- `setmetatable` üzerinden bir taban sınıftan kalıtım alan tabloları haritalamak.

## Lua yüzeysel yapay zeka araçlarını nerede şaşırtır

Lua'da sınıflar için bir anahtar sözcük yoktur. Nesneler tablolardır, metotlar onlarda saklanan fonksiyonlardır, kalıtım ise bir `setmetatable` çağrısıdır. Modül, `require` ne döndürürse odur. Yapı gerçektir, ama metin aramasının anlamadığı geleneklerde yaşar.

Maguyva bu gelenekleri yapı olarak okur; böylece ajan bir metodu kimin çağırdığını ya da hangi tabloların bir tabanı genişlettiğini sorup doğrudan yanıt alabilir.

## Maguyva Lua'dan neleri çıkarır

Maguyva `.lua` dosyalarını kapsar. Fonksiyon bildirimleri, `local function` tanımları ve fonksiyon ifadeleri çıkarılır; `function Account:deposit()` gibi iki nokta metotları sahibi olan tabloya, yani `Account`'a atanır. Metot zincirleri çağrı çağrı izlenir ve `self` üzerindeki çağrılar kapsayan nesneye bağlı kalır.

Lua gelenekleri şöyle ilişkilere dönüşür:

- `require`, `dofile` ve `loadfile` içe aktarmaları kaydeder.
- Modül düzeyindeki bir `setmetatable` çağrısı kalıtımı kaydeder.
- `ClassName:new()`, `ClassName.new()` ve `setmetatable({...}, ClassName)` örnekleme sayılır.
- `error()` bir fırlatma, `pcall` ve `xpcall` ise bir yakalama kaydeder.

Graf ayrıca okuma ve yazmaları ve kontrol akışını kaydeder.

## Örnek ajan istemleri

- "`Inventory:addItem`'i kim çağırıyor ve hangi betiklerden?" (`find_symbol`, ardından `dependency_search` incoming)
- "Hangi modüller `util.http`'yi require ile yüklüyor?" (`dependency_search`)
- "Oyuncu hasar aldığında ne olduğunu izle." (`get_task_context`)

## Bilinen sınırlar

- Yaklaşık 150 ad ilişkilerden filtrelenir: Lua standart kütüphanesi (`string`, `table`, `math`, `io`, `os`, `coroutine`, `debug` ve `utf8`) ile Neovim'in `vim.*` ve OpenResty'nin `ngx.*` API'leri. Bu API'lere yapılan çağrılar graf kenarı değildir; bulmak için `text_pattern_search` kullanın.
- Modüller ve sınıflar sıradan çağrılar ve tablolardan kurulduğu için `structural_search` içindeki `classes` ve `imports` hazır ayarları Lua için hiçbir şey seçmez. Bunun yerine `find_symbol` veya `text_pattern_search` kullanın.
- Lua'da arayüz ya da tür ek açıklaması yoktur; bu yüzden arayüz uygulama ve tür başvurusu ilişkileri uygulanamaz olarak işaretlenmiştir.

## Sonraki adımlar

[Hızlı başlangıç](/tr/docs/quickstart) ile bir repo bağlayın, ardından destek matrisi için [uyumluluk sayfasına](/tr/docs/compatibility) bakın. Lua'yı yerel koda gömen motorlar için [C rehberini](/tr/languages/c) de okuyun.

## Motor ayrıntıları

- Lua desteği `.lua` dosyalarını kapsar. `function Account:deposit()` gibi iki nokta metotları sahibi olan tabloya atanır.
- `require`, `dofile` ve `loadfile` içe aktarmaları, modül düzeyindeki `setmetatable` kalıtımı kaydeder; `ClassName:new()` örnekleme sayılır.
- `error()` bir fırlatma, `pcall` bir yakalama kaydeder; yaklaşık 150 standart kütüphane, `vim.*` ve `ngx.*` adı ise filtrelenir.

## Yararlı MCP giriş noktaları

- `find_symbol`: Tanıma ve çağıranlara ihtiyaç duyduğunuzda bir modül fonksiyonu veya iki nokta metodu için kullanın.
- `dependency_search`: Paylaşılan bir modülü taşımadan önce onu require ile yükleyen dosyaları görmek için incoming geçişi kullanın.
- `text_pattern_search`: Graftan filtrelenen `vim.*`, `ngx.*` veya standart kütüphane çağrıları için kullanın.
