Μετάβαση στο περιεχόμενο
cd /languages
  • Επιστημονική κληρονομιά
  • Προγραμματισμός
  • Υποστήριξη AST και συμβόλων

Fortran στο Maguyva: γράφοι κώδικα για επιστημονικές βάσεις κώδικα

Το 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, μετά dependency_search incoming)
  • «Εντόπισε πώς εφαρμόζονται οι οριακές συνθήκες στον βρόχο του επιλυτή.» (get_task_context)
  • «Βρες κάθε μονάδα προγράμματος που χρησιμοποιεί το άρθρωμα constants.» (text_pattern_search για use constants, μετά find_symbol)

Γνωστοί περιορισμοί

  • Η Fortran δεν έχει διακοσμητές ούτε χειρισμό εξαιρέσεων, γι’ αυτό αυτοί οι τύποι σχέσεων σημειώνονται ως μη εφαρμόσιμοι.
  • Οι διαδικασίες που δένονται σε τύπους μοιράζονται τους ίδιους κόμβους με τις κοινές συναρτήσεις και υπορουτίνες. Χρησιμοποιήστε την προεπιλογή functions στο structural_search· η προεπιλογή methods δεν επιλέγει κόμβους Fortran.
  • Οι κλήσεις σε φιλτραρισμένες ενσωματωμένες διαδικασίες δεν εμφανίζονται ως ακμές του γράφου. Χρησιμοποιήστε το text_pattern_search όταν χρειάζεστε κάθε WRITE ή OPEN.

Επόμενα βήματα

Συνδέστε ένα αποθετήριο με τον γρήγορο οδηγό εκκίνησης και έπειτα δείτε τον πλήρη πίνακα υποστήριξης στη σελίδα συμβατότητας. Αν η 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

    Χρησιμοποιήστε το για προτροπές όπως «εντόπισε πώς εφαρμόζονται οι οριακές συνθήκες στον βρόχο του επιλυτή».