Skip to content

Instantly share code, notes, and snippets.

@mixstef
Last active May 14, 2021 13:49
Show Gist options
  • Select an option

  • Save mixstef/2d6d2998b81cbbb4a4b43e3b9df91384 to your computer and use it in GitHub Desktop.

Select an option

Save mixstef/2d6d2998b81cbbb4a4b43e3b9df91384 to your computer and use it in GitHub Desktop.
Ατζέντα εργαστηρίου Μεταγλωττιστών 14/5/2021

Ατζέντα εργαστηρίου Μεταγλωττιστών 14/5/2021

Στο gist αυτό θα αναρτηθούν λύσεις και υποδείξεις κατά τη διεξαγωγή του εργαστηρίου.

Εύρεση συνόλων FIRST (όταν υπάρχουν κενές παραγωγές)

Ξεκινάμε με άδεια σύνολα FIRST για κάθε μη τερματικό σύμβολο της γραμματικής

Για κάθε κανόνα της γραμματικής:

  • Αν το δεξιό μέρος του κανόνα ξεκινά με τερματικό a ή το ε, προσθέτουμε το a ή το ε στο σύνολο FIRST του μη τερματικού που βρίσκεται στο αριστερό μέρος του κανόνα

  • Αν το δεξιό μέρος του κανόνα ξεκινά με μη τερματικό A, προσθέτουμε τα σύμβολα του FIRST(Α) που ξέρουμε εκείνη τη στιγμή στο σύνολο FIRST του μη τερματικού που βρίσκεται στο αριστερό μέρος του κανόνα

    • Αν το FIRST(Α) περιέχει το ε, προσθέτουμε αντί για αυτό, το σύνολο FIRST του συμβόλου μετά το Α
    • Επαναλαμβάνουμε αν και το επόμενο σύμβολο παράγει ε. Αν όλα τα σύμβολα στο δεξιό μέρος του κανόνα παράγουν ε, προσθέτουμε το ε.

Επαναλαμβάνουμε τη διαδικασία από την αρχή, έως ότου να μην μπορεί να προστεθεί άλλο σύμβολο σε κάποιο σύνολο FIRST

Εύρεση συνόλων FOLLOW

Τα σύνολα FOLLOW αρχικά είναι κενά.

Για κάθε δεξί μέρος των κανόνων:

  • Για κάθε μη τερματικό Β και τυχαίες ακολουθίες συμβόλων α, β σε κανόνες της μορφής Α → α Β β, προσθέτουμε το FIRST(β) -εκτός από το ε- στο FOLLOW(B).

    • το α μπορεί να μην υπάρχει
  • Για κάθε μη τερματικό Β και τυχαία ακολουθία συμβόλων α σε κανόνες της μορφής Α → α Β, προσθέτουμε το FOLLOW(Α) στο FOLLOW(B).

  • Για κάθε μη τερματικό Β και τυχαίες ακολουθίες συμβόλων α, β σε κανόνες της μορφής Α → α Β β, όπου το ε ανήκει στο FIRST(β), προσθέτουμε το FOLLOW(Α) στο FOLLOW(B).

Επαναλαμβάνουμε ξανά τη διαδικασία για όλους τους κανόνες, έως ότου να μην υπάρχουν νέες προσθήκες στα σύνολα FOLLOW.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment