Τεχνογλωσσία 8 Β' Εξάμηνο. Λογικός Προγραμματισμός Prolog. Άσκηση: Διορθωτής Εκφράσεων

Σχετικά έγγραφα
ΤΕΧΝΟΓΛΩΣΣΙΑ VIII ΛΟΓΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΔΑΣΚΟΝΤΕΣ: ΜΑΪΣΤΡΟΣ ΓΙΑΝΗΣ, ΠΑΠΑΚΙΤΣΟΣ ΕΥΑΓΓΕΛΟΣ ΑΣΚΗΣΗ: ΔΙΟΡΘΩΣΗ ΕΚΦΡΑΣΕΩΝ (Β )

Τεχνογλωσσία 8 Β' Εξάμηνο Λογικός Προγραμματισμός Prolog

Συστήματα κ Τεχνολογίες Γνώσης Εργασίες στην Επεξεργασία Φυσικής Γλώσσας

ΑΣΚΗΣΗ 11: ΕΠΕΞΕΡΓΑΣΙΑ ΦΥΣΙΚΗΣ ΓΛΩΣΣΑΣ - ΣΥΝΤΑΚΤΙΚΗ ΑΝΑΛΥΣΗ (PARSING)

ΣΥΝΤΑΚΤΙΚΟΙ ΟΡΟΙ. Η σύνταξη μιας πρότασης

Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Γλωσσική Τεχνολογία, Διδάσκων: Ι. Ανδρουτσόπουλος

"ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η

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

3ο Νηπ/γείο Κορδελιού Τμήμα Ένταξης

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΔΗΜΗΤΡΙΟΥ ΑΘ. ΚΡΟΝΤΣΟΥ ΘΕΜΑ: ΓΡΑΜΜΑΤΙΚΗ-ΣΥΝΤΑΚΤΙΚΗ ΑΝΑΛΥΣΗ ΤΗΣ ΝΕΑΣ ΕΛΛΗΝΙΚΗΣ ΓΛΩΣΣΑΣ ΕΙΣΗΓΗΤΗΣ: ΙΩΑΝΝΗΣ ΡΕΦΑΝΙΔΗΣ

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΣΥΝΤΑΞΗ: ΟΡΘΟΛΟΓΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (FORMAL SYNTAX)

Γλώσσες Προγραµµατισµού 2 Άσκηση 6

ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / Γ ΛΥΚΕΙΟΥ-ΘΕΡΙΝΑ ΣΕΙΡΑ: 1 η ΗΜΕΡΟΜΗΝΙΑ: 09/09/2012

Εντολές επιλογής Επαναλήψεις (if, switch, while)

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

Η γλώσσα προγραμματισμού C

Αποτελέσματα. ΜΟΔΙΠ Πανεπιστημίου Κρήτης Ερωτηματολόγιο 'Γλώσσα Προγραμματισμού ΙΙ' Ερωτηματολόγιο

ΑΣΚΗΣΗ 4: ΟΜΕΣ ΒΑΣΙΚΩΝ ΒΡΟΧΩΝ

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

Ασκήσεις μελέτης της ενότητας «Σημασιολογική Ανάλυση»

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 3 Εντολές Επιλογής. Γιώργος Λαμπρινίδης Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

ΠΕΚ ΠΕΙΡΑΙΑ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠ/ΚΩΝ ΠΕ19,20 ΗΜ/ΝΙΑ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

CS 150 Assignment 2. Assignment 2 Overview Opening Files Arrays ( and a little bit of pointers ) Strings and Comparison Q/A

Επικοινωνία Ανθρώπου Υπολογιστή. Β3. Κατανόηση φυσικής γλώσσας

ΦΥΛΛΑΔΙΟ ΓΛΩΣΣΑΣ ΣΥΝΤΑΚΤΙΚΟ (Υποκείμενο, Αντικείμενο, Κατηγορούμενο)

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΚΟΛΛΕΓΙΟ ΑΘΗΝΩΝ Σχολικό έτος: ΤΜΗΜΑ ΕΛΛΗΝΙΚΗΣ ΓΛΩΣΣΑΣ ΓΥΜΝΑΣΙΟ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ Α ΓΥΜΝΑΣΙΟΥ. Προτεινόμενος Προγραμματισμός κατά ενότητα

ΦΡΟΝΤΙΣΤΗΡΙΟ ΦΑΣΜΑ 21/4/2013

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Ασκήσεις μελέτης της 23 ης διάλεξης

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? )

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program)

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Ασκήσεις μελέτης της ενότητας «Συντακτική Ανάλυση»

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 12 ο Μάθημα 1

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α.

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Μοντέλα γλωσσικής επεξεργασίας: σύνταξη

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Sthn parousiash me thema ta

ΕΠΛ031 - Εισαγωγή στον Προγραμματισμό

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

ΠΕΚ ΤΡΙΠΟΛΗΣ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠ/ΚΩΝ ΠΕ19,20 ΗΜ/ΝΙΑ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΣΠΟΥΔΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΥΛΗ ΕΞΕΤΑΣΕΩΝ 2007 ΥΠΟΨΗΦΙΩΝ ΥΠΟΤΡΟΦΩΝ ΚΑΘΙΔΡΥΜΑΤΟΣ ΑΘΑΝΑΣΙΟΥ ΜΑΤΑΛΑ Α ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ

Εισαγωγή στον Προγραμματισμό Python Μάθημα 3: πίνακες και βρόγχος επανάληψης for (για) Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

λατινικά γ λυκείου, γερούνδιο - γερουνδιακό ΓΕΡΟΥΝΔΙΟ ΓΕΡΟΥΝΔΙΑΚΟ

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΣΗΜΑΣΙΟΛΟΓΙΑ - SEMANTICS

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

Έλεγχος Συστήματος. Επαλήθευση (verification) Έλεγχος και Εγκατάσταση Συστήματος. Επαλήθευση (verification)

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Α. Ερωτήσεις Ανάπτυξης

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Τι είναι υποπρόγραμμα; Τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομο υπολογιστικό έργο (γράφεται χωριστά από το υπόλοιπο πρόγραμμα)

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Κεφάλαιο 30 Προηγµένη ιασύνδεση µε το Περιβάλλον

ΗΥ-150. Προγραμματισμός

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΗΥ-150. Προγραμματισμός

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Προγραμματισμός Η/Υ (ΤΛ2007 )

2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if)

ΚΕΦΑΛΑΙΟ 10 ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ (ή εντολές Ελέγχου και Επιλογής ή εντολές Επιλογής και Απόφασης)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1. ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦ.

Πληροφορική 2. Γλώσσες Προγραμματισμού

1. Ουρά α. Απώθηση 2. Στοίβα β. Εξαγωγή γ. Ώθηση δ. Εισαγωγή

«Τεχνογλωσσία VIII» Εξαγωγή πληροφοριών από κείμενα

ΝΕΑ ΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΕΝΔΕΙΚΤΙΚΟΣ ΕΤΗΣΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Α ΤΑΞΗ ΓΥΜΝΑΣΙΟΥ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

Ασκήσεις μελέτης της ενότητας «Συντακτική Ανάλυση»

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Διάρκεια: 3 ώρες Επίπεδο Δυσκολίας: 5/5 Ενότητες (2 6)

ΠΑΛΙΑΤΣΟΥ ΟΥΡΑΝΙΑ 1 ο Γυμνάσιο Φιλιππιάδας. Nea/parathesi-epexigisi.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2018 Β ΦΑΣΗ

A. Να γράψετε τον αριθμό της κάθε μιας από τις παρακάτω προτάσεις και δίπλα. το γράμμα Σ, εάν είναι σωστή, ή το γράμμα Λ, εάν είναι λανθασμένη.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ _ ΦΥΛΛΟ2

Πρόβλημα 37 / σελίδα 207

Απάντηση: (func endfunc)-([a-za-z])+

ΔΙΑΓΩΝΙΣΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ: Β - Γ ΛΥΚΕΙΟΥ ΤΜΗΜΑΤΑ: Β(ΧΟΛΑΡΓΟΣ) HM/NIA: 15/1/2017

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά

Transcript:

Τεχνογλωσσία 8 Β' Εξάμηνο Λογικός Προγραμματισμός Prolog Άσκηση: Διορθωτής Εκφράσεων Σκοπός της άσκησης είναι ο σχεδιασμός και η υλοποίηση συστήματος διορθωτή εκφράσεων βασισμένη στο φορμαλισμό της prolog που θα είναι σε θέση να διαβάζει κείμενο από πληκτρολόγιο, να ελέγχει την ορθότητα κάθε έκφρασης, να αναγνωρίζει το συντακτικό λάθος, να το δηλώνει με ένα μήνυμα και να προτείνει τη σωστή έκφραση στη θέση του. Για το σκοπό αυτό δημιουργήθηκε αρχικά μια ενoποιητική γραμματική με κανόνες Definite Clause numbers (DCG) σε περιβάλλον της Prolog και ένα λεξικό. Για τις ανάγκες της άσκησης κατασκευάστηκαν DCG κανόνες που εμπλουτίστηκαν με arguments (ορίσματα) ή διαφορετικά με γραμματικούς και σημασιολογικούς περιορισμούς (constraints) για να περιγράψουν όχι μόνο τη συντακτική δομή των προτάσεων, αλλά και τη σημασία τους. Πιο συγκεκριμένα δημιουργήθηκαν κανόνες που αναγνωρίζουν προτάσεις που αποτελούνται από: -ονοματική φράση όπου o περιορισμός action χρησιμοποιείται για να ταιριάξει τη γάτα με το νιαουρίζω (m= μπορώ να νιαουρίζω, nm= δεν μπορώ να νιαουρίζω ) -ρηματική φράση με αμετάβατο ρήμα (intrans) ή διμεταβατικό ρήμα (ditrans) για να αναγνωρίζονται όλοι οι δυνατοί συνδυασμοί. -Οι περιορισμοί δε του γένους (gender), του αριθμού (number), της πτώσης (case), του προσώπου (person) εξασφαλίζουν τη γραμματική ορθότητα των προτάσεων. Με βάση τους παραπάνω DCG κανόνες δοκιμάζουμε την ορθότητα της πρότασης μας με την χρήση των κανόνων test και change. Έτσι δίνοντας την ερώτηση «test([i,gata,kyniga,ta,pontikia],y)». παίρνουμε από το πρόγραμμα την απάντηση ότι η πρόταση είναι σωστή και στην μεταβλητή Y μεταφέρεται και τυπώνεται στην οθόνη η σωστή πρόταση. 1

Θα πρέπει εξ αρχής να θεωρήσουμε ότι ένα λάθος συμβαίνει κάθε φορά. Αν η πρόταση μας έχει λάθη ασυμφωνίας πτώσεων σε υποκείμενο ή αντικείμενο, λάθος αριθμό ή κάτι εκτός λεξικού γενικά δεν το διορθώνει. Διορθώσεις γίνονται όταν έχουμε Αντιστροφή άρθρου ουσιαστικού στο υποκείμενο Αντιστροφή άρθρου ουσιαστικού στο αντικείμενο Αντιστροφή ρήματος ουσιαστικού του υποκειμένου Αντιστροφή ρήματος άρθρου του αντικειμένου Αντικατάσταση μιας λέξης που ανήκει σε άλλη γραμματική κατηγορία Επίσης προστίθεται το σωστό αν Λείπει το υποκείμενο Λείπει το αντικείμενο Λείπει το άρθρο του υποκειμένου Λείπει το άρθρο του αντικειμένου Λείπει το ρήμα Με τη χρήση του κανόνα change κάνουμε αλλαγές από κάτι λάθος στο σωστό. Η θέση των κανόνων change μέσα στο πρόγραμμα είναι τέτοια ώστε να δουλεύει σωστά η διόρθωση. Φυσικά υπάρχουν πολλά προβλήματα όταν μεγαλώσει το λεξικό μας και οι διάφοροι κανόνες αντικατάστασης θα πολλαπλασιαστούν. Δόθηκε ιδιαίτερη μέριμνα ώστε αυτοί οι κανόνες αντικατάστασης να είναι όσο γίνεται λιγότεροι. Μια πιθανή επέκταση του προγράμματος θα ήταν να βρίσκει περισσότερα από ένα λάθη με αλλαγή όμως των κανόνων. 2

Παρατηρήσεις 1. Για την καλύτερη συμβατότητα του προγράμματος χρησιμοποιήθηκαν λατινικοί χαρακτήρες αφού υπήρχαν προβλήματα με τους ελληνικούς 2. Έγινε προσπάθεια ώστε το πρόγραμμα να είναι όσο γίνεται πιο απλό και εύχρηστο 3. Το ρήμα κυνηγώ θεωρήσαμε ότι μπορεί να παίρνει ή να μην παίρνει αντικείμενο 4. Υπάρχουν ξεχωριστές περιπτώσεις για τα μεταβατικά και τα αμετάβατα ρήματα 5. Δεν υπάρχουν περιπτώσεις αμφισημίας αφού στον κανόνα change εκεί που θα μπορούσαμε να βάλουμε περισσότερες επιλογές για χάρη απλότητας βάλαμε μόνο μία 3

Κώδικας σε Prolog % Τεχνογλωσσία VIII - Β Εξάμηνο (2013-2014) % Λογικός Προγραμματισμός - Prolog % Άσκηση: Διορθωτής Εκφράσεων % Φοιτητές: % Στριπέλη Αιμιλία, Α.Μ.: 130232 % Χορόζογλου Γεώργιος, Α.Μ.: 130247 % Κούκης Νικόλαος, Α.Μ.:130225 n(singular,nominative,masculine,nm) --> [kostas]. n(singular,nominative,feminine,nm) --> [maria]. n(singular,nominative,masculine,nm) --> [skylos]. n(singular,nominative,feminine,m) --> [gata]. n(singular,accusative,feminine,m) --> [gata]. n(singular,accusative,neutral,nm) --> [pontiki]. n(plural,nominative,masculine,nm) --> [skyloi]. n(plural,nominative,feminine,m) --> [gates]. n(plural,accusative,feminine,m) --> [gates]. n(plural,accusative,neutral,nm) --> [pontikia]. v(singular,ditrans,_) --> [kyniga]. v(singular,intrans,m) --> [niaourizei]. v(plural,ditrans,_) --> [kynigoyn]. v(plural,intrans,m) --> [niaourizoyn]. d(singular,nominative,masculine) --> [o]. d(singular,nominative,feminine) --> [i]. d(plural,nominative,masculine) --> [oi]. d(plural,nominative,feminine) --> [oi]. d(singular,accusative,feminine) --> [tin]. d(plural,accusative,feminine) --> [tis]. 4

d(singular,accusative,neutral) --> [to]. d(plural,accusative,neutral) --> [ta]. s --> np(number,nominative,gender,action), vp(number,case,gender,action). np(number,case,gender,action) --> d(number,case,gender), n(number,case,gender,action). vp(number,case,gender,action) --> v(number,ditrans,action), np(_,accusative,_,_). vp(number,case,gender,m) --> v(number,intrans,m). vp(number,case,gender,_) --> v(number,ditrans,_). % Kanones gia tin periptosi poy exei anastrafei to rima me to ypokeimeno - amatavata rimata % Mpainei edo giati an mpei parakato syndyazetai me alloys kanones change([x,niaourizei,y],[x,y,niaourizei]). change([x,niaourizoyn,y],[x,y,niaourizoyn]). change([x,kyniga,y],[x,y,kyniga]). change([x,kynigoyn,y],[x,y,kynigoyn]). % Kanones gia tin periptosi poy leipei to ypokeimeno - mia epilogi mono % Mpainei edo giati an mpei parakato syndyazetai me alloys kanones change([i,kyniga,x,y],[i,gata,kyniga,x,y]). change([o,kyniga,x,y],[o,skylos,kyniga,x,y]). change([oi,kynigoyn,x,y],[oi,gates,kynigoyn,x,y]). % Kanones gia tin periptosi poy anti ametavatoy rimatos mpainei kati allo change([i,gata [X]],[i,gata,niaourizei]). change([oi,gates [X]],[oi,gates,niaourizoyn]). change([o,x [Y]],[o,X,kyniga]). change([i,x [Y]],[i,X,kyniga]). change([oi,x [Y]],[i,X,kynigoyn]). % Kanones gia tin periptosi poy leipei to arthro toy ypokeimenoy 5

change([gata,x,y,z],[i,gata,x,y,z]). change([gates,x,y,z],[oi,gates,x,y,z]). change([maria,x,y,z],[i,maria,x,y,z]). change([kostas,x,y,z],[o,kostas,x,y,z]). change([skylos,x,y,z],[o,skylos,x,y,z]). change([skyloi,x,y,z],[oi,skyloi,x,y,z]). change([gates,x],[oi,gates,x]). change([gata,x],[i,gata,x]). change([skylos,x],[o,skylos,x]). change([skyloi,x],[oi,skyloi,x]). % Kanones gia tin periptosi poy exei anastrafei to arthro me to oysiastiko sto ypokeimeno change([x,i,y,z,w],[i,x,y,z,w]). change([x,oi,y,z,w],[oi,x,y,z,w]). change([x,o,y,z,w],[o,x,y,z,w]). change([x,i,y],[i,x,y]). change([x,oi,y],[oi,x,y]). % Kanones gia tin periptosi poy exei anastrafei to arthro me to oysiastiko sto antikeimeno change([x,y,z,w,tin],[x,y,z,tin,w]). change([x,y,z,w,tis],[x,y,z,tis,w]). change([x,y,z,w,to],[x,y,z,to,w]). change([x,y,z,w,ta],[x,y,z,ta,w]). % Kanones gia tin periptosi poy exei anastrafei to rima me to ypokeimeno change([x,kynigoyn,y,z,w],[x,y,kynigoyn,z,w]). change([x,kyniga,y,z,w],[x,y,kyniga,z,w]). % Kanones gia tin periptosi poy exei anastrafei to rima me to arthro toy antikeimenoy 6

change([x,y,tin,z,w],[x,y,z,tin,w]). change([x,y,tis,z,w],[x,y,z,tis,w]). change([x,y,to,z,w],[x,y,z,to,w]). change([x,y,ta,z,w],[x,y,z,ta,w]). % Kanones gia tin periptosi poy leipei to metavatiko rima change([i,x,to,w],[i,x,kyniga,to,w]). change([i,x,ta,w],[i,x,kyniga,ta,w]). change([o,x,to,w],[o,x,kyniga,to,w]). change([o,x,ta,w],[o,x,kyniga,ta,w]). change([oi,x,to,w],[oi,x,kynigoyn,to,w]). change([oi,x,ta,w],[oi,x,kynigoyn,ta,w]). % Kanones gia tin periptosi poy leipei to arthro toy antikeimenoy change([x,y,z,pontiki],[x,y,z,to,pontiki]). change([x,y,z,pontikia],[x,y,z,ta,pontikia]). change([x,y,z,gata],[x,y,z,tin,gata]). change([x,y,z,gates],[x,y,z,tis,gates]). % Kanones gia tin periptosi poy leipei to antikeimeno change([x,y,z,to],[x,y,z,to,pontiki]). change([x,y,z,ta],[x,y,z,ta,pontikia]). change([x,y,z,tin],[x,y,z,tin,gata]). change([x,y,z,tis],[x,y,z,tis,gates]). change(x,x). test(x,x):-s(x,[]),write('the phrase is correct'),!. test(x,y):-change(x,y),write('the phrase is not correct. Possible correction:'),!. % test:?- test([o,skylos,kyniga,to,pontiki],y). % 7

% test:?- s(x,[]). % to find out all the possible variations 8