Προγραμματισμός

Γνώση Υπολογιστών >> Προγραμματισμός >  >> Γλώσσες Προγραμματισμού Υπολογιστών

Ποια είναι η γραμματική χωρίς περιβάλλον για τη γλώσσα ANBN;

Η γραμματική χωρίς περιβάλλον (CFG) για τη γλώσσα `aⁿbⁿ`, όπου` n ≥ 0` είναι:

`` `

S -> ASB | ε

`` `

Επεξήγηση:

* s: Αυτό είναι το σύμβολο εκκίνησης της γραμματικής. Αντιπροσωπεύει μια συμβολοσειρά που ανήκει στη γλώσσα `aⁿbⁿ`.

* a: Αντιπροσωπεύει τον κυριολεκτικό χαρακτήρα «Α».

* b: Αντιπροσωπεύει τον κυριολεκτικό χαρακτήρα «Β».

* |: Αντιπροσωπεύει "ή". Υποδεικνύει ότι υπάρχουν πολλοί κανόνες παραγωγής για το σύμβολο στα αριστερά.

* ε: Αντιπροσωπεύει την κενή συμβολοσειρά.

Πώς λειτουργεί:

1. `s -> asb`: Αυτός ο κανόνας δημιουργεί ένα «Α», ακολουθούμενο από ένα «S» (το οποίο τελικά θα δημιουργήσει περισσότερα «Α και« Β), ακολουθούμενη από Α «Β». Κάθε φορά που εφαρμόζεται αυτός ο κανόνας, προσθέτει αποτελεσματικά ένα «Α» προς τα αριστερά και ένα «Β» στα δεξιά, διατηρώντας την ισορροπία που απαιτείται από τη γλώσσα.

2. `s -> ε ': Αυτός ο κανόνας παρέχει τη βασική περίπτωση για την επανάληψη. Επιτρέπει την τερματισμό της παραγωγής, παράγοντας την κενή συμβολοσειρά (όπου n =0).

Παραδείγματα παραγωγής:

* n =0:κενή συμβολοσειρά (ε)

`S -> ε '

* n =1:"ab"

`S -> asb '

`S -> aεμπ '

`S -> ab '

* n =2:"aabb"

`S -> asb '

`S -> aasbb '

`S -> aaebb`

`S -> aabb '

* n =3:"aaabbb"

`S -> asb '

`S -> aasbb '

`S -> aaasbbb '

`S -> aaaebbb`

`S -> aaabbb`

Γιατί αυτό το CFG παράγει μόνο aⁿbⁿ:

Ο μόνος τρόπος για να εξαχθεί μια συμβολοσειρά από το 's' είναι με την επανειλημμένη εφαρμογή του κανόνα `s -> asb` μηδέν ή περισσότερες φορές, ακολουθούμενη από την εφαρμογή του κανόνα` s -> ε` μία φορά. Κάθε εφαρμογή του «S -> ASB» προσθέτει ένα «Α» στα αριστερά και ένα «Β» προς τα δεξιά. Επομένως, η προκύπτουσα συμβολοσειρά θα έχει πάντα ίσο αριθμό «Α και« Β, με όλα τα «Α που προηγούνται όλων των« Β. Αυτό περιγράφει με ακρίβεια τη γλώσσα `aⁿbⁿ`.

Βασικές έννοιες:

* Γραμματική χωρίς περιβάλλον (CFG): Μια επίσημη γραμματική όπου οι κανόνες παραγωγής έχουν ένα ενιαίο μη τερματικό σύμβολο στην αριστερή πλευρά και οποιοδήποτε συνδυασμό τερματικών και μη τερματικών συμβόλων στη δεξιά πλευρά. Η εφαρμογή ενός κανόνα παραγωγής δεν εξαρτάται από το πλαίσιο στο οποίο εμφανίζεται το μη τερματικό σύμβολο.

* Τερματικά σύμβολα: Σύμβολα που εμφανίζονται στην τελική συμβολοσειρά (π.χ., 'a', 'b').

* Μη τερματικά σύμβολα: Σύμβολα που αντιπροσωπεύουν γραμματικές κατηγορίες ή ενδιάμεσα βήματα στην παραγωγή (π.χ. 's').

* Σύμβολο εκκίνησης: Το μη τερματικό σύμβολο από το οποίο προέρχονται όλες οι χορδές στη γλώσσα (π.χ. 's').

* Κανόνες παραγωγής: Κανόνες που καθορίζουν τον τρόπο με τον οποίο τα μη τερματικά σύμβολα μπορούν να αντικατασταθούν από άλλα σύμβολα (π.χ., S -> ASB`).

Αυτό το CFG είναι ένα κλασικό παράδειγμα που χρησιμοποιείται συχνά για να απεικονίσει τη δύναμη των CFG και την ικανότητά τους να εκφράζουν γλώσσες που δεν είναι τακτικές. Η γλώσσα `aⁿbⁿ` είναι ένα τυπικό παράδειγμα μιας γλώσσας χωρίς περιβάλλον που δεν είναι κανονική γλώσσα.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα