ข้ามไปที่เนื้อหา
cd /languages
  • เดสก์ท็อปอายุยืน
  • การเขียนโปรแกรม
  • รองรับ AST และสัญลักษณ์

Pascal และ Delphi บน Maguyva: กราฟยูนิตและคลาส

Maguyva รองรับยูนิต Pascal และ Delphi ด้วย AST สัญลักษณ์ และกราฟ เพื่อให้เอเจนต์ AI ทำแผนที่อนุประโยค uses คลาส และโพรซีเยอร์ได้ก่อนแก้ไข

ทำไมโค้ดเบส Pascal ต้องมีแผนที่ก่อน

แอปพลิเคชัน Delphi และ Free Pascal มักเติบโตรอบยูนิตใหญ่ไม่กี่ยูนิตที่ทุกส่วนใช้งาน ฟอร์มสืบทอดจากฟอร์มฐาน คอมโพเนนต์สืบทอดจากคอมโพเนนต์ฐาน และกฎทางธุรกิจอยู่ในโพรซีเยอร์ที่หน้าจอหลายสิบหน้าเรียกใช้ โค้ดอ่านง่ายเมื่ออ่านทีละไฟล์ แต่การเปลี่ยนแปลงมักผิดพลาดที่การพึ่งพา

Maguyva ให้โครงสร้างยูนิตและคลาสกับเอเจนต์ก่อน เพื่อให้บอกได้ว่าการเปลี่ยนแปลงแตะอะไรบ้างก่อนจะเขียนอะไรลงไป

Maguyva ดึงอะไรจาก Pascal ได้บ้าง

Maguyva ครอบคลุมยูนิตซอร์ส .pas และ .pp นิยามโพรซีเยอร์และฟังก์ชันถูกดึงออกมาเป็นสัญลักษณ์ที่เรียกใช้ได้ และคีย์เวิร์ด procedure, function, var และ const จะถูกตัดออกจากชื่อนิยาม คลาสและอินเทอร์เฟซเลือกเป็นนิยามชนิดข้อมูลในการค้นหาเชิงโครงสร้างได้

การนำเข้ามาจากอนุประโยค uses โดยตัดคีย์เวิร์ดออกเพื่อให้กราฟเก็บชื่อยูนิต การเรียกถูกทำให้เป็นมาตรฐานโดยตัดพรีฟิกซ์ของสมาชิก อาร์กิวเมนต์ และวงเล็บด้านนอกออก การเรียกที่เขียนว่า Self.Save(x) จึงถูกเก็บเป็น Save

กราฟบันทึกการเรียก การสืบทอด การอิมพลีเมนต์อินเทอร์เฟซ การ override การสร้างอินสแตนซ์ การอ้างอิงชนิดข้อมูล การอ่านและการเขียน และเส้นเชื่อมการโยนและการจัดการเอกซ์เซปชัน รูทีนไลบรารีรันไทม์ราว 107 รายการ (WriteLn, ReadLn, Inc, Dec, Ord และอื่น ๆ ทำนองเดียวกัน) ถูกกรองออกจากความสัมพันธ์

ตัวอย่างพรอมต์สำหรับเอเจนต์

  • “ยูนิตใดใช้ DataModuleMain และเรียกอะไรจากยูนิตนั้น” (dependency_search ทิศทางขาเข้า)
  • “ฟอร์มใดสืบทอดจาก TBaseEditForm และ override เมธอดใดบ้าง” (find_symbol แล้วตามด้วย dependency_search)
  • “อธิบายว่าใบแจ้งหนี้ถูกบันทึกอย่างไร ตั้งแต่ตัวจัดการปุ่มไปจนถึงยูนิตฐานข้อมูล” (get_task_context)

ข้อจำกัดที่ทราบ

  • มีเพียง .pas และ .pp ที่ถูกจับคู่กับ Pascal ไฟล์โปรเจกต์และฟอร์มของ Delphi เช่น .dpr และ .dfm ไม่อยู่ในรายการนามสกุลไฟล์ เลย์เอาต์ฟอร์มและการเชื่อมโยงโปรเจกต์จึงอยู่นอกกราฟ
  • เมธอดใช้ไวยากรณ์เดียวกับโพรซีเยอร์อิสระ พรีเซ็ต methods ใน structural_search จึงไม่เลือกอะไรเลย ให้ใช้พรีเซ็ต functions
  • การเรียกรูทีนไลบรารีรันไทม์ที่ถูกกรองจะไม่ปรากฏเป็นเส้นเชื่อมในกราฟ ใช้ text_pattern_search สำหรับกรณีเหล่านี้

ขั้นตอนถัดไป

เชื่อมต่อรีโพซิทอรีด้วยคู่มือเริ่มต้นใช้งาน แล้วดูตารางการรองรับได้ที่หน้าความเข้ากันได้ หากแอปพลิเคชันลิงก์กับไลบรารีภาษา C ให้อ่านคู่มือภาษา C ด้วย

เหมาะที่สุดสำหรับ

  • > ทีมที่ดูแลแอปพลิเคชัน Delphi หรือ Lazarus/Free Pascal ซึ่งผู้เขียนดั้งเดิมจากไปนานแล้ว
  • > โค้ดเบส Object Pascal ที่มีลำดับชั้นคลาสลึก อินเทอร์เฟซ และยูนิตที่ใช้ร่วมกันขนาดใหญ่
  • > โปรเจกต์ปรับปรุงให้ทันสมัยหรือย้ายแพลตฟอร์ม ซึ่งผลงานชิ้นแรกคือแผนที่ของยูนิตและการพึ่งพา

เวิร์กโฟลว์ของเอเจนต์

  • > แสดงรายการทุกยูนิตที่ระบุยูนิตที่ใช้ร่วมกันไว้ในอนุประโยค `uses` ก่อนแก้ไขยูนิตนั้น
  • > หาคลาสที่สืบทอดจากฟอร์มฐานหรือคอมโพเนนต์ฐาน และเมธอดที่คลาสเหล่านั้น override
  • > ติดตามโพรซีเยอร์ที่เรียกรูทีนหนึ่ง ก่อนเปลี่ยนพารามิเตอร์ของรูทีนนั้น

รายละเอียดเอนจิน

  • > การรองรับ Pascal ครอบคลุมยูนิต `.pas` และ `.pp` ไฟล์โปรเจกต์และฟอร์มของ Delphi เช่น `.dpr` และ `.dfm` ไม่อยู่ในรายการนามสกุลไฟล์
  • > อนุประโยค `uses` กลายเป็นความสัมพันธ์การนำเข้า และการเรียกถูกทำให้เป็นมาตรฐานโดยตัดพรีฟิกซ์ของสมาชิก อาร์กิวเมนต์ และวงเล็บด้านนอกออก
  • > รูทีนไลบรารีรันไทม์ราว 107 รายการ เช่น `WriteLn`, `Inc` และ `Ord` ถูกกรองออกจากความสัมพันธ์ เพื่อให้โค้ดแอปโดดเด่นขึ้นมา

จุดเริ่มต้น MCP ที่มีประโยชน์

  • find_symbol

    ใช้กับชื่อคลาส ฟอร์ม หรือโพรซีเยอร์ เมื่อต้องการนิยามและการอ้างอิง

  • dependency_search

    ใช้การท่องกราฟทิศทางขาเข้าบนยูนิตที่ใช้ร่วมกันหรือคลาสฐาน เพื่อดูว่ายูนิตและคลาสลูกใดพึ่งพาอยู่

  • get_task_context

    ใช้กับพรอมต์อย่าง “อธิบายว่าใบแจ้งหนี้ถูกบันทึกอย่างไร ตั้งแต่ตัวจัดการปุ่มไปจนถึงยูนิตฐานข้อมูล”

คู่มือที่เกี่ยวข้อง

ส่วนอื่นของรีโพที่เกี่ยวข้อง

ดูคู่มือทั้งหมด
แกนกลางของระบบ การเขียนโปรแกรม

C บน Maguyva: กราฟการเรียกสำหรับโค้ดระบบและโค้ดฝังตัว

ในภาษา C กราฟการเรียกคือสถาปัตยกรรม เอเจนต์ควรอ่านมันก่อนแก้ไข

รองรับ AST และสัญลักษณ์ การแยกวิเคราะห์ AST การสกัดสัญลักษณ์ ความสัมพันธ์ในกราฟ

นามสกุลไฟล์

.c, .h

เปิดคู่มือ
ต่อยอดของเก่า การเขียนโปรแกรม

การรองรับ COBOL ใน Maguyva: วิเคราะห์ dependency เพื่อการปรับปรุงระบบเก่าให้ทันสมัย

นี่คือจุดที่การรองรับภาษาอย่างกว้างขวางเลิกเป็นแค่ตัวเลขสถิติ และกลายเป็นเครื่องมือปรับปรุงระบบเก่าให้ทันสมัยอย่างแท้จริง

รองรับ AST และสัญลักษณ์ การแยกวิเคราะห์ AST การสกัดสัญลักษณ์ ความสัมพันธ์ในกราฟ

นามสกุลไฟล์

.cbl, .cob, .cpy

เปิดคู่มือ