AS

AST σε Elixir

2 ασκήσεις

Σχετικά με την έννοια AST

Το Αφηρημένο Συντακτικό Δέντρο (AST), που ονομάζεται και quoted expression, είναι ένας τρόπος να αναπαραστήσεις τον κώδικα ως δεδομένα.

Κάθε κόμβος στο AST είναι μια πλειάδα τριών στοιχείων.

# AST representation of:
# 2 + 3
{:+, [], [2, 3]}

Το πρώτο στοιχείο, ένα άτομο, είναι η πράξη. Το δεύτερο στοιχείο, μια λίστα λέξεων-κλειδιών, είναι τα μεταδεδομένα. Το τρίτο στοιχείο είναι μια λίστα με ορίσματα, η οποία περιέχει άλλους κόμβους. Οι κυριολεκτικές τιμές, όπως οι ακέραιοι, τα άτομα και οι συμβολοσειρές, αναπαρίστανται στο AST ως έχουν, αντί ως πλειάδες τριών στοιχείων.

Μετατροπή κώδικα σε AST

Η μετατροπή κώδικα Elixir σε AST, και AST πίσω σε κώδικα, αποτελεί μέρος της πρότυπης βιβλιοθήκης. Μπορείς να βρεις συναρτήσεις για να δουλέψεις με AST στα modules Code (π.χ. για να μετατρέψεις μια συμβολοσειρά με κώδικα σε AST) και Macro (π.χ. για να διατρέξεις το AST ή να το μετατρέψεις σε συμβολοσειρά).

Σημείωσε ότι όλες οι συναρτήσεις στην πρότυπη βιβλιοθήκη χρησιμοποιούν το όνομα "quoted" για να δηλώσουν το AST (συντομογραφία του quoted expression).

Η ειδική μορφή για τη μετατροπή κώδικα σε AST ονομάζεται quote. Δέχεται ένα μπλοκ κώδικα και επιστρέφει το AST του.

quote do
  2 + 3 - 1
end

# => {:-, [], [
#      {:+, [], [2, 3]},
#      1
#    ]}

Περιπτώσεις χρήσης

Η δυνατότητα να αναπαραστήσεις τον κώδικα ως AST βρίσκεται στην καρδιά του μεταπρογραμματισμού στην Elixir. Τα macros, δηλαδή ένας τρόπος να γράφεις κώδικα Elixir που παράγει κώδικα Elixir, λειτουργούν επιστρέφοντας AST ως έξοδο.

Μια άλλη περίπτωση χρήσης των AST είναι η στατική ανάλυση κώδικα, όπως ο Analyzer, το εργαλείο του ίδιου του Exercism, που ίσως τον ξέρεις ήδη ως το μικρό bot που αφήνει σχόλια στις λύσεις σου.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια AST

Η εξάσκηση είναι κλειδωμένη

Ξεκλείδωσε 1 ακόμη άσκηση για να εξασκηθείς στην έννοια AST