Προς το περιεχόμενο

Μεταγλωτιστες-λεκτικη αναλυση


GlobeXgr

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλησπερα...θελω βοήθεια σε ενα προβλημα που εχω....οσον αφορα τις ομαδες(tokens) τις λεκτικες μοναδες(lexemes) τα προτυπα (patterns) και τις κανονικες εκφρασεις..

συγκεκριμενα μου δινουνε τρεις προτασεις και πρεπει να ορισω τα παραπανω..

οι προτασεις ειναι της μορφης

 

Δινεται τριγωνο ΑΒΓ

Δινεται τετραγωνο ΑΒΓΔ

Δινεται γωνια Α

 

τα ονοματα του τριγωνου τετραγωνου και γωνιας μπορει να εινα οιποιοδηποτε απο τα 5 πρωτα γραμματα της αλφαβητας....πχ (ΒΓΔ, ΕΔΑΒ, Δ)

Επισης θα ηθελα να μου πειτε ποια ειναι η σχεση token και lexeme με παραδειγματα..

 

Τελος πρεπει να κατασκευασω ενα ΝΠΑ(Ντετερμινιστικο πεπερασμενο αυτοματο)

που να περιγραφει τα ονοματα των παραπανω γεωμετρικων οντοτητων δηλαδη πχ αβγ

Εδω θελω βοηθεια με την κανονικη εκφραση..

 

παρακαλω απαντηστε σε οτι μπορειτε...

Επεξ/σία από GlobeXgr
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

μπορώ αρχικά να σε βοηθήσω όσον αφορά τις λεκτικές μονάδες κ τα λεξήματα ..

για παράδειγμα , έχουμε τη λεκτική μονάδα if ,το αντοίστιχο λέξημα είναι το if ,

αν όμως έχω token id το λέξημα μπορέι να είναι οποιοδήποτε όνομα μεταβλητής (πχ x , rate , route κοκ) .Ή ακόμη αν έχω τη λεκτική μονάδα comparison , τα λεξήματα μπορεί να είναι το = , < ,=< κοκ...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστω που απάντησες θελω να μου πεις και κατι αλλο τωρα...ενα token μπορει να εχει παραπάνω απο ενα lexeme....

Και αν ισχυει αυτο μπορώ να δηλώσω ενα token γεομετρικες οντότητες και να συμπεριλάβω σε αυτό τα lexemes τριγωνο τετραγωνο και γωνια????

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όταν γράφουμε κώδικα σε μια γλώσσα προγραμματισμού, δακτυλογραφούμε ένα κείμενο στον υπολογιστή, οπότε στην ουσία παράγουμε μια ακολουθία από σύμβολα.

 

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

 

Στη λεκτική ανάλυση ουσιαστικά προσπαθεί να εντάξει σε "κατηγορίες" κομμάτι-κομμάτι όλα τα σύμβολα της ακολουθίας. Οι κατηγορίες αυτές είναι τα tokens, ένα κομμάτι της μεγάλης ακολουθίας συμβόλων που ταιριάζει με ένα token είναι το lexeme (λεκτική μονάδα) και ο κανόνας για το ταίριασμα είναι το pattern.

 

Το pattern καθορίζει όχι μόνο το ταίριασμα αλλά και το πόσο μεγάλο κομμάτι θα πάρει ο υπολογιστής από την ακολουθια συμβόλων.

 

Οι κανονικές εκφράσεις είναι ένας τυποποιημένος τρόπος να περιγράφεις ένα pattern.

 

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

 

Για να φτιάξεις ένα λεκτικό αναλυτή χρειάζεσαι:

(α) να αποφασίσεις πώς θα βαπτίσεις τα tokens σου (π.χ. keywords, identifier, constants, operators είναι "επιστημονικά" ονόματα, αλλά εξίσου καλά λειτουργούν και τα Κυριάκος, Δημήτρης, Κώστας, Πέτρος).

(β) να καθορίσεις τα patterns δηλαδή κανόνες για το ποια κομμάτια της εισαγόμενης ακολουθίας συμβόλων θα αποκτήσουν ένα από τα παραπάνω βαπτιστικά ονόματα.

(γ) να καθαρογράψεις τα παραπάνω όπως θέλει το πρόγραμμα flex και μετά να τρέξεις το flex.

Αυτό που θα βγάλει το flex είναι ένας λεκτικός αναλυτής.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστω για την απαντηση....και θελω να ρωτησω και κατι αλλο...Μπορώ δηλαδη να δηλώσω ενα token γεομετρικες οντότητες και να συμπεριλάβω σε αυτό τα lexemes τριγωνο τετραγωνο και γωνια????

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

συγκεκριμενα μου δινουνε τρεις προτασεις και πρεπει να ορισω τα παραπανω..

οι προτασεις ειναι της μορφης

 

Δινεται τριγωνο ΑΒΓ

Δινεται τετραγωνο ΑΒΓΔ

Δινεται γωνια Α

 

τα ονοματα του τριγωνου τετραγωνου και γωνιας μπορει να εινα οιποιοδηποτε απο τα 5 πρωτα γραμματα της αλφαβητας....πχ (ΒΓΔ, ΕΔΑΒ, Δ)

Επισης θα ηθελα να μου πειτε ποια ειναι η σχεση token και lexeme με παραδειγματα..

 

Μπορείς να βαφτίσεις τρία tokens: ΡΗΜΑ, ΣΧΗΜΑ, ΟΝΟΜΑ

 

Τα patterns θα είναι τα εξής:

1/ Η λεκτική μονάδα "Δίνεται" θα ανήκει στην ΡΗΜΑ. (λεκτική μονάδα δεν είναι τίποτ' άλλο από ένα κατάλληλο κομμάτι από την όλη ακολουθία συμβόλων που έχει η πρόταση).

2/ Οι λεκτικές μονάδες "γωνία", "τρίγωνο", "τετράγωνο" θα ανήκουν στη ΣΧΗΜΑ.

3/ Μια λεκτική μονάδα που επαναλαμβάνει ένα περισσότερα γράμματα της αλφαβήτου από τα 5 πρώτα ("Α", "Β", "Γ", "Δ", "Ε") θα ανήκει στο ΟΝΟΜΑ.

 

Φυσικά τα patterns αυτά μπορούν να βελτιωθούν προκειμένου να βοηθούν καλύτερα έναν μεταγλωττιστή στη συνέχεια που θα κάνει τη συντακτική ανάλυση.

 

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

 

Έτσι π.χ. το "Δίνεται τρίγωνο ΑΒΓ" γίνεται ακολουθία από tokens ΡΗΜΑ ΣΧΗΜΑ ΟΝΟΜΑ.

 

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 χρόνια αργότερα...

Στο παραπάνω υποσύνολο φυσικής γλώσσας, τα ονόματα τριγώνων ορίζονται ως η

παράθεση τριών οποιωνδήποτε γραμμάτων μεταξύ των 5 πρώτων κεφαλαίων

γραμμάτων της Ελληνικής αλφαβήτου: Α, Β, Γ, , Ε. Τα ονόματα τετραγώνων

ορίζονται ως η παράθεση τεσσάρων γραμμάτων μεταξύ των 5 πρώτων κεφαλαίων

γραμμάτων της Ελληνικής αλφαβήτου. Τέλος τα ονόματα των γωνιών ορίζονται από

ένα μόνο κεφαλαίο γράμμα μεταξύ των 5 πρώτων κεφαλαίων γραμμάτων της

Ελληνικής αλφαβήτου.

 

Ποιες ειναι λοιπον οι κανονικες εκφρασεις που αντιστοιχουν στις τρεις προτασεις,ευχαριστω εκ των προτερων...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...