Ανάλυση σύνταξης: Compiler Top Down & Τύποι ανάλυσης από κάτω προς τα πάνω

Πίνακας περιεχομένων:

Anonim

Τι είναι η ανάλυση σύνταξης;

Το Syntax Analysis είναι μια δεύτερη φάση της διαδικασίας σχεδιασμού του μεταγλωττιστή κατά την οποία η δεδομένη συμβολοσειρά εισόδου ελέγχεται για επιβεβαίωση των κανόνων και της δομής της τυπικής γραμματικής. Αναλύει τη συντακτική δομή και ελέγχει εάν η δεδομένη είσοδος είναι στη σωστή σύνταξη της γλώσσας προγραμματισμού ή όχι.

Η ανάλυση σύνταξης στη διαδικασία σχεδιασμού του μεταγλωττιστή έρχεται μετά τη φάση ανάλυσης της λεξικής. Είναι επίσης γνωστό ως Parse Tree ή Syntax Tree. Το Parse Tree αναπτύχθηκε με τη βοήθεια προκαθορισμένης γραμματικής της γλώσσας. Ο αναλυτής σύνταξης ελέγχει επίσης εάν ένα δεδομένο πρόγραμμα πληροί τους κανόνες που συνεπάγεται μια γραμματική χωρίς περιβάλλον. Εάν ικανοποιεί, ο αναλυτής δημιουργεί το δέντρο ανάλυσης αυτού του προγράμματος προέλευσης. Διαφορετικά, θα εμφανίζει μηνύματα σφάλματος.

Διαδικασία αναλυτή σύνταξης

Σε αυτό το σεμινάριο, θα μάθετε

  • Γιατί χρειάζεστε το Syntax Analyzer;
  • Σημαντική ορολογία αναλυτή σύνταξης
  • Γιατί χρειαζόμαστε την ανάλυση;
  • Τεχνικές ανάλυσης
  • Σφάλμα - Μέθοδοι ανάκτησης
  • Γραμματική:
  • Συμβολαιογραφικές συμβάσεις
  • Δωρεάν γραμματική περιβάλλοντος
  • Παράγωγο γραμματικής
  • Syntax vs. Lexical Analyzer
  • Μειονεκτήματα της χρήσης Syntax Analyzers

Γιατί χρειάζεστε το Syntax Analyzer;

  • Ελέγξτε εάν ο κωδικός είναι έγκυρος γραμματικά
  • Ο συντακτικός αναλυτής σάς βοηθά να εφαρμόσετε κανόνες στον κώδικα
  • Σας βοηθά να βεβαιωθείτε ότι κάθε στήριγμα ανοίγματος έχει το αντίστοιχο υπόλοιπο κλεισίματος
  • Κάθε δήλωση έχει έναν τύπο και ότι ο τύπος πρέπει να υπάρχει

Σημαντική ορολογία αναλυτή σύνταξης

Σημαντικές ορολογίες που χρησιμοποιούνται στη διαδικασία ανάλυσης σύνταξης:

  • Πρόταση: Μια πρόταση είναι μια ομάδα χαρακτήρων πάνω από κάποιο αλφάβητο.
  • Lexeme: Το lexeme είναι η συντακτική μονάδα χαμηλότερου επιπέδου μιας γλώσσας (π.χ., σύνολο, έναρξη).
  • Token: Το διακριτικό είναι απλώς μια κατηγορία λεξικών.
  • Λέξεις-κλειδιά και δεσμευμένες λέξεις - Είναι ένα αναγνωριστικό που χρησιμοποιείται ως σταθερό μέρος της σύνταξης μιας δήλωσης. Είναι μια δεσμευμένη λέξη που δεν μπορείτε να χρησιμοποιήσετε ως μεταβλητό όνομα ή αναγνωριστικό.
  • Λέξεις θορύβου - Οι λέξεις θορύβου είναι προαιρετικές που εισάγονται σε μια δήλωση για να βελτιώσουν την αναγνωσιμότητα της πρότασης.
  • Σχόλια - Είναι ένα πολύ σημαντικό μέρος της τεκμηρίωσης. Εμφανίζεται ως επί το πλείστον από, / * * /, ή // Κενό (κενά)
  • Delimiters - Πρόκειται για ένα συντακτικό στοιχείο που σηματοδοτεί την αρχή ή το τέλος ορισμένης συντακτικής μονάδας. Όπως μια δήλωση ή μια έκφραση, "ξεκινήστε" ... "τέλος" ή {}.
  • Σύνολο χαρακτήρων - ASCII, Unicode
  • Αναγνωριστικά - Πρόκειται για περιορισμούς στο μήκος που σας βοηθούν να μειώσετε την αναγνωσιμότητα της πρότασης.
  • Τα σύμβολα χειριστή - + και - εκτελούν δύο βασικές αριθμητικές πράξεις.
  • Συντακτικά στοιχεία της γλώσσας

Γιατί χρειαζόμαστε την ανάλυση;

Μια ανάλυση ελέγχει επίσης ότι η συμβολοσειρά εισόδου είναι καλά σχηματισμένη και, εάν όχι, απορρίψτε την.

Ακολουθούν σημαντικές εργασίες που εκτελούνται από τον αναλυτή στο σχεδιασμό μεταγλωττιστή:

  • Σας βοηθά να εντοπίσετε όλους τους τύπους λαθών σύνταξης
  • Βρείτε τη θέση στην οποία παρουσιάστηκε το σφάλμα
  • Σαφής και ακριβής περιγραφή του σφάλματος.
  • Ανάκτηση από σφάλμα για συνέχιση και εύρεση περαιτέρω σφαλμάτων στον κώδικα.
  • Δεν πρέπει να επηρεάζει τη συλλογή "σωστών" προγραμμάτων.
  • Η ανάλυση πρέπει να απορρίψει μη έγκυρα κείμενα αναφέροντας σφάλματα σύνταξης

Τεχνικές ανάλυσης

Οι τεχνικές ανάλυσης χωρίζονται σε δύο διαφορετικές ομάδες:

  • Ανάλυση από πάνω προς τα κάτω,
  • Ανάλυση από κάτω προς τα πάνω

Ανάλυση από πάνω προς τα κάτω:

Στην κατασκευή ανάλυσης από πάνω προς τα κάτω, το δέντρο ανάλυσης ξεκινά από τη ρίζα και στη συνέχεια προχωρά προς τα φύλλα.

Δύο τύποι ανάλυσης από πάνω προς τα κάτω είναι:

  1. Προγνωστική ανάλυση:

Το Predictive parse μπορεί να προβλέψει ποια παραγωγή πρέπει να χρησιμοποιηθεί για να αντικαταστήσει τη συγκεκριμένη συμβολοσειρά εισόδου. Ο προγνωστικός αναλυτής χρησιμοποιεί το βλέμμα μπροστά, το οποίο δείχνει τα επόμενα σύμβολα εισόδου. Το Backtracking δεν αποτελεί πρόβλημα με αυτήν την τεχνική ανάλυσης. Είναι γνωστό ως LL (1) Parser

  1. Αναδρομική ανάλυση κατάβασης:

Αυτή η τεχνική ανάλυσης αναλύει αναδρομικά την είσοδο για να δημιουργήσει ένα δέντρο prase. Αποτελείται από πολλές μικρές λειτουργίες, μία για κάθε μη τερματικό στη γραμματική.

Ανάλυση από κάτω προς τα πάνω:

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

Σφάλμα - Μέθοδοι ανάκτησης

Συνηθισμένα σφάλματα που παρουσιάζονται στην ανάλυση του λογισμικού συστήματος

  • Λεξικά : Όνομα λανθασμένου πληκτρολογίου
  • Συντακτικό : μη ισορροπημένη παρένθεση ή ερωτηματικό που λείπει
  • Σημασιολογία : ασυμβίβαστη εκχώρηση τιμής
  • Λογική : Απεριόριστος βρόχος και μη προσβάσιμος κωδικός

Ένας αναλυτής θα πρέπει να μπορεί να εντοπίζει και να αναφέρει τυχόν σφάλματα που εντοπίστηκαν στο πρόγραμμα. Έτσι, κάθε φορά που προέκυψε ένα σφάλμα, το πρόγραμμα ανάλυσης. Θα πρέπει να είναι σε θέση να το χειριστεί και να συνεχίσει την ανάλυση της υπόλοιπης εισόδου. Ένα πρόγραμμα μπορεί να έχει ακόλουθους τύπους σφαλμάτων σε διάφορα στάδια της διαδικασίας σύνταξης. Υπάρχουν πέντε κοινές μέθοδοι αποκατάστασης σφαλμάτων που μπορούν να εφαρμοστούν στο πρόγραμμα ανάλυσης

Ανάκτηση τρόπου δήλωσης

  • Σε περίπτωση που ο αναλυτής αντιμετωπίσει σφάλμα, σας βοηθά να λάβετε διορθωτικά μέτρα. Αυτό επιτρέπει την ανάλυση των υπόλοιπων εισόδων και καταστάσεων.
  • Για παράδειγμα, η προσθήκη ενός ερωτηματικού που λείπει έρχεται στη μέθοδο ανάκτησης κατάστασης. Ωστόσο, ο αναλυτής σχεδιαστής πρέπει να είναι προσεκτικός κατά την πραγματοποίηση αυτών των αλλαγών, καθώς μια λανθασμένη διόρθωση μπορεί να οδηγήσει σε άπειρο βρόχο.

Ανάκτηση λειτουργίας πανικού

  • Στην περίπτωση που ο αναλυτής αντιμετωπίζει ένα σφάλμα, αυτή η λειτουργία αγνοεί το υπόλοιπο της δήλωσης και δεν επεξεργάζεται την είσοδο από εσφαλμένη είσοδο στον οριοθέτη, όπως ένα τελείωμα. Αυτή είναι μια απλή μέθοδος ανάκτησης σφαλμάτων.
  • Σε αυτόν τον τύπο μεθόδου ανάκτησης, ο αναλυτής απορρίπτει τα σύμβολα εισόδου ένα προς ένα έως ότου βρεθεί μία καθορισμένη ομάδα διακριτικών συγχρονισμού. Τα διακριτικά συγχρονισμού χρησιμοποιούν συνήθως οριοθέτες όπως ή.

Ανάκτηση φράσης-επιπέδου:

  • Ο μεταγλωττιστής διορθώνει το πρόγραμμα εισάγοντας ή διαγράφοντας μάρκες. Αυτό του επιτρέπει να προχωρήσει στην ανάλυση από το σημείο που βρισκόταν. Εκτελεί διόρθωση στην υπόλοιπη είσοδο. Μπορεί να αντικαταστήσει ένα πρόθεμα της υπόλοιπης εισόδου με κάποια συμβολοσειρά που βοηθά τον αναλυτή να συνεχίσει τη διαδικασία.

Παραγωγές σφαλμάτων

  • Η ανάκτηση παραγωγής σφάλματος επεκτείνει τη γραμματική για τη γλώσσα που δημιουργεί τις εσφαλμένες κατασκευές. Στη συνέχεια, ο αναλυτής εκτελεί διαγνωστικό σφάλμα για αυτήν την κατασκευή.

Παγκόσμια διόρθωση:

  • Ο μεταγλωττιστής πρέπει να κάνει λιγότερο δυνατό αριθμό αλλαγών κατά την επεξεργασία μιας εσφαλμένης συμβολοσειράς εισόδου. Δεδομένης της εσφαλμένης συμβολοσειράς εισόδου α και γραμματικής c, οι αλγόριθμοι θα αναζητήσουν ένα δέντρο ανάλυσης για μια σχετική συμβολοσειρά β. Όπως μερικές εισαγωγές, οι διαγραφές και η τροποποίηση των tokens που απαιτούνται για τη μετατροπή ενός b είναι όσο το δυνατόν λιγότερο.

Γραμματική:

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

Κανόνες γραμματικής φόρμας

  • Το μη τερματικό σύμβολο πρέπει να εμφανίζεται στα αριστερά της τουλάχιστον μιας παραγωγής
  • Το σύμβολο στόχου δεν πρέπει ποτέ να εμφανίζεται στα δεξιά του :: = οποιασδήποτε παραγωγής
  • Ένας κανόνας είναι αναδρομικός εάν το LHS εμφανίζεται στο RHS του

Συμβολαιογραφικές συμβάσεις

Το σύμβολο των συμβολαιογραφικών συμβάσεων μπορεί να υποδεικνύεται περικλείοντας το στοιχείο σε αγκύλες. Πρόκειται για μια αυθαίρετη ακολουθία παρουσιών του στοιχείου που μπορεί να υποδειχθεί περικλείοντας το στοιχείο σε τιράντες ακολουθούμενο από ένα σύμβολο αστερίσκου, {…} *.

Είναι μια επιλογή της εναλλακτικής που μπορεί να χρησιμοποιεί το σύμβολο μέσα στον ενιαίο κανόνα. Μπορεί να περικλείεται με παρένθεση ([,]) όταν χρειάζεται.

Δύο τύποι συμβολαιογραφικών συμβάσεων περιοχή Τερματικό και μη τερματικό

1. Τερματικά:

  • Πεζά γράμματα στο αλφάβητο, όπως a, b, c,
  • Σύμβολα χειριστή όπως +, -, * κ.λπ.
  • Σύμβολα στίξης όπως παρενθέσεις, κατακερματισμός, κόμμα
  • 0, 1,…, 9 ψηφία
  • Χορδές Boldface όπως id ή if, οτιδήποτε αντιπροσωπεύει ένα σύμβολο τερματικού

2. Μη τερματικά:

  • Με κεφαλαία γράμματα όπως Α, Β, Γ
  • Πεζά πλάγια ονόματα: η έκφραση ή μερικά

Δωρεάν γραμματική περιβάλλοντος

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

expression -> expression -+ termexpression -> expression - termexpression-> termterm -> term * factorterm -> expression/ factorterm -> factor factorfactor -> ( expression )factor -> id

Παράγωγο γραμματικής

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

Αριστερά παράγωγα

Όταν η συναισθηματική μορφή εισαγωγής σαρώνεται και αντικαθίσταται με αριστερή προς δεξιά ακολουθία, είναι γνωστή ως παραγόμενη αριστερά Η συναισθηματική φόρμα που προέρχεται από την παραγόμενη αριστερή πλειοψηφία ονομάζεται αριστερή-συναισθηματική φόρμα.

Δεξιά-περισσότερο παράγωγο

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

Syntax vs. Lexical Analyzer

Αναλυτής σύνταξης

Λεξικός αναλυτής

Ο αναλυτής σύνταξης ασχολείται κυρίως με αναδρομικές δομές της γλώσσας.

Ο λεξικός αναλυτής διευκολύνει το έργο του αναλυτή σύνταξης.

Ο αναλυτής σύνταξης λειτουργεί σε διακριτικά σε ένα πρόγραμμα προέλευσης για την αναγνώριση σημαντικών δομών στη γλώσσα προγραμματισμού.

Ο λεξικός αναλυτής αναγνωρίζει το διακριτικό σε ένα πρόγραμμα προέλευσης.

Λαμβάνει εισόδους, με τη μορφή διακριτικών, από λεξικούς αναλυτές.

Είναι υπεύθυνη για την εγκυρότητα ενός διακριτικού που παρέχεται από

ο αναλυτής σύνταξης

Μειονεκτήματα της χρήσης Syntax Analyzers

  • Δεν θα καθορίσει ποτέ εάν ένα διακριτικό είναι έγκυρο ή όχι
  • Δεν σας βοηθά να προσδιορίσετε εάν μια λειτουργία που εκτελείται σε έναν τύπο διακριτικού είναι έγκυρη ή όχι
  • Δεν μπορείτε να αποφασίσετε ότι το διακριτικό δηλώνεται και αρχικοποιείται προτού χρησιμοποιηθεί

Περίληψη

  • Η ανάλυση σύνταξης είναι μια δεύτερη φάση της διαδικασίας σχεδιασμού του μεταγλωττιστή που ακολουθεί τη λεξική ανάλυση
  • Ο συντακτικός αναλυτής σάς βοηθά να εφαρμόσετε κανόνες στον κώδικα
  • Στίχοι, Lexeme, Token, Λέξεις-κλειδιά και δεσμευμένες λέξεις, λέξεις θορύβου, σχόλια, οριοθέτες, σύνολο χαρακτήρων, αναγνωριστικά είναι μερικοί σημαντικοί όροι που χρησιμοποιούνται στην ανάλυση σύνταξης στην κατασκευή του μεταγλωττιστή
  • Αναλύστε εάν η συμβολοσειρά εισόδου είναι καλά σχηματισμένη και, εάν όχι, απορρίψτε την
  • Οι τεχνικές ανάλυσης χωρίζονται σε δύο διαφορετικές ομάδες: Ανάλυση από πάνω προς τα κάτω, ανάλυση από κάτω προς τα πάνω
  • Λεξικά, Συντακτικά, Σημασιολογικά και λογικά είναι μερικά κοινά σφάλματα που εμφανίζονται κατά τη μέθοδο ανάλυσης
  • Η γραμματική είναι ένα σύνολο δομικών κανόνων που περιγράφουν μια γλώσσα
  • Το σύμβολο των συμβολαιογραφικών συμβάσεων μπορεί να υποδεικνύεται περικλείοντας το στοιχείο σε αγκύλες
  • Το CFG είναι μια αριστερή αναδρομική γραμματική που έχει τουλάχιστον μία παραγωγή του τύπου
  • Η παραγωγή γραμματικής είναι μια ακολουθία κανόνα γραμματικής που μετατρέπει το σύμβολο έναρξης στη συμβολοσειρά
  • Ο αναλυτής σύνταξης ασχολείται κυρίως με αναδρομικές δομές της γλώσσας, ενώ ο λεξικός αναλυτής διευκολύνει το έργο του αναλυτή σύνταξης στο DBMS
  • Το μειονέκτημα της μεθόδου Syntax analyzer είναι ότι δεν θα καθορίσει ποτέ εάν ένα διακριτικό είναι έγκυρο ή όχι