Θεωρία υπολογισμού: Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
JohnMad (συζήτηση | συνεισφορές)
Χωρίς σύνοψη επεξεργασίας
JohnMad (συζήτηση | συνεισφορές)
Γραμμή 6:
{{Κύριο|Τυπική γραμματική}}
 
Στην [[επιστήμη υπολογιστών]] μια '''τυπική γραμματική''' (formal grammar) είναι μια [[αφηρημένη δομή]] που περιγράφει μια [[τυπική γλώσσα]] επακριβώς, δηλαδή είναι ένα σύνολο κανόνων που απεικονίζουν με μαθηματικάμαθηματικώς το [[σύνολο|σύνολο]], (συνήθως [[σύνολο|απειροσύνολο]]), των πεπερασμένου μήκους [[Στοιχειοσειρά|στοιχειοσειρών]] / συμβολοσειρών που σχηματίζονται με διακριτά στοιχεία / σύμβολα (π.χ. γράμματα), τα οποία ανήκουν σε ένα σύνολο, συνήθως πεπερασμένο, που το λέμε ''αλφάβητο''. Οι τυπικές γραμματικές ονομάστηκαν έτσι κατ’ αναλογία των [[γραμματική|γραμματικών]] των γλωσσών που μιλούν οι άνθρωποι, αλλά τα αλφάβητα τους δεν περιέχουν κατ’ ανάγκη γράμματα. Οι τυπικές γραμματικές διαχωρίζονται σε δυο κύριες κατηγορίες: ''γενετικές'' (generative) και ''αναλυτικές'' (analytic).
 
Μια [[γενετική γραμματική]], (το πιο γνωστό είδος, που θα μπορούσε να ονομάζεται γεννητική ή παραγωγική γραμματική), είναι ένα σύνολο κανόνων με το οποίο όλες οι συμβολοσειρές που μπορούν να υπάρξουν σε μια γλώσσα μπορούν να παραχθούν με διαδοχικά [[Στοιχειοσειρά#Συναλύσωση|επιθέματα]] ξεκινώντας από ένα προκαθορισμένο ''αρχικό σύμβολο δημιουργίας στοιχειοσειράς''. Μια γενετική γραμματική ουσιαστικά είναι η τυπική μορφή του [[Αλγόριθμοςαλγόριθμος|αλγορίθμου]] παραγωγής στοιχειοσειρών που ανήκουν στην γλώσσα.
Οι τυπικές γραμματικές ονομάστηκαν έτσι κατ’ αναλογία των [[Γραμματική|γραμματικών]] των γλωσσών που μιλούν οι άνθρωποι, αλλά τα αλφάβητα τους δεν περιέχουν κατ’ ανάγκη γράμματα. Οι τυπικές γραμματικές διαχωρίζονται σε δυο κύριες κατηγορίες : ''γενετικές'' (generative) και ''αναλυτικές'' (analytic).
 
Μια [[γενετική γραμματική]], (το πιο γνωστό είδος, που θα μπορούσε να ονομάζεται γεννητική ή παραγωγική γραμματική), είναι ένα σύνολο κανόνων με το οποίο όλες οι συμβολοσειρές που μπορούν να υπάρξουν σε μια γλώσσα μπορούν να παραχθούν με διαδοχικά [[Στοιχειοσειρά#Συναλύσωση|επιθέματα]] ξεκινώντας από ένα προκαθορισμένο ''αρχικό σύμβολο δημιουργίας στοιχειοσειράς''. Μια γενετική γραμματική ουσιαστικά είναι η τυπική μορφή του [[Αλγόριθμος|αλγορίθμου]] παραγωγής στοιχειοσειρών που ανήκουν στην γλώσσα.
 
:Συνοπτικά για την γενετική γραμματική :
Γραμμή 17 ⟶ 15 :
:* εφαρμόζεται παραγωγική (top-down) προσέγγιση, από το γενικό προς το μερικό.
 
Μια [[Αναλυτικήαναλυτική γραμματική]], αντιθέτως, είναι ένα σύνολο κανόνων που υποθέτουν ότι μιάμία αυθαίρετη στοιχειοσειρά δίνεται προς επεξεργασία και με διαδοχικά βήματα ανάλυσης προκύπτει ως αποτέλεσμα η τιμή μιας [[Μεταβλητήμεταβλητή (προγραμματισμόςυπολογιστές)#Λογικές μεταβλητές|λογικής μεταβλητής]]:
* ΑΛΗΘΗΣ, αν η στοιχειοσειρά ανήκει στην γλώσσα που περιγράφει η αναλυτική γραμματική
* ΨΕΥΔΗΣ, αν η στοιχειοσειρά δεν ανήκει στην γλώσσα που περιγράφει η αναλυτική γραμματική.
 
:Συνοπτικά για την αναλυτική γραμματική :
:* σαρώνει την στοιχειοσειρά, τεχνολογεί τα μέρη που την αποτελούν και τα αναγνωρίζει, (είναι [[Συντακτική ανάλυση (προγραμματισμόςυπολογιστές)|συντακτικός αναλυτής]] (parser)), δηλαδή ''διαβάζει την γλώσσα'',
:* η πορεία είναι από τις λέξεις της γλώσσας προς την γραμματική της,
:* εφαρμόζεται επαγωγική (bottom-up) προσέγγιση, από το μερικό προς το γενικό.
 
 
== Βασικές Αρχές ==