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

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

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

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

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

ΤΕΧΝΟΓΛΩΣΣΙΑ VIII ΛΟΓΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΔΑΣΚΟΝΤΕΣ: ΜΑΪΣΤΡΟΣ ΓΙΑΝΗΣ, ΠΑΠΑΚΙΤΣΟΣ ΕΥΑΓΓΕΛΟΣ ΑΣΚΗΣΗ: ΔΙΟΡΘΩΣΗ ΕΚΦΡΑΣΕΩΝ (Β )

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

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

ΦΩΝΗΤΙΚΗ-ΦΩΝΟΛΟΓΙΑ (Ι)

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

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

Ανάλυση Δεδοµένων µε χρήση του Στατιστικού Πακέτου R

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 02/11/2014 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι. ΜΙΧΑΛΕΑΚΟΣ Α. ΙΛΕΡΗ

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ

Γραµµική Αλγεβρα Ι. Ενότητα: Εισαγωγικές Εννοιες. Ευάγγελος Ράπτης. Τµήµα Μαθηµατικών

Ασκήσεις για το µάθηµα «Ανάλυση Ι και Εφαρµογές» (ε) Κάθε συγκλίνουσα ακολουθία άρρητων αριθµών συγκλίνει σε άρρητο αριθµό.

ΜΑΘΗΜΑ: Μεταγλωττιστές

Προγραμματισμός Ι (ΗΥ120)

Εκπαίδευση Οµάδας Μεγάλων Οδηγών

Προγραµµατιστικές τεχνικές

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

ΛΥΣΗ ΤΗΣ ΔΕΥΤΕΡΗΣ ΑΣΚΗΣΗΣ Όλγα Γκουντούνα

Στόχοι. Αναβλητικότητα. «Πώς να την ξεπεράσετε µια και καλή» Η εκπαίδευση θα ξεκινήσει στις 21:02 ακριβώς και θα διαρκέσει περίπου 60 λεπτά

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

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

Συμμετοχή στην έκθεση για τις προσωπικότητες της " Μη βίας"

Γραµµατικές για Κανονικές Γλώσσες

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

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

Προγραµµατισµός Ι (ΗΥ120)

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

1 / 13 «ΟΙ ΓΛΩΣΣΕΣ ΚΑΙ ΕΓΩ» Ερωτηµατολόγιο για τους µαθητές της 5 ης ηµοτικού. Μάρτιος 2007

abistarakis PASS - Σωστή κατασκευή tgz και ονοµασία αρχείων

a = 10; a = k; int a,b,c; a = b = c = 10;

ΑΓΓΛΙΚΗ ΣΧΟΛΗ ΛΕΥΚΩΣΙΑΣ ΕΙΣΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ Χρόνος: 1 ώρα. Οδηγίες

Προγραμματισμός Ι (ΗΥ120)

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

4.4 Ερωτήσεις διάταξης. Στις ερωτήσεις διάταξης δίνονται:

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

Δοκίμιο Τελικής Αξιολόγησης

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex

1 / 15 «ΟΙ ΓΛΩΣΣΕΣ ΚΑΙ ΕΓΩ» Ερωτηµατολόγιο για τους µαθητές της 3 ης Γυµνασίου. Μάρτιος 2007

Όταν µπροστά από τα κύρια ονόµατα υπάρχει τίτλος, τότε το οριστικό άρθρο προηγείται του τίτλου: ο κύριος Μικέογλου ο πρίγκιπας Κάρολος


Διαδικαστικά του μαθήματος

ΣΥΝΤΑΚΤΙΚΟ ΠΡΟΤΑΣΗ. Η οργανωμένη ομάδα λέξεων που εκφράζει μόνο ένα νόημα, με σύντομη συνήθως διατύπωση, λέγεται πρόταση.

Εισαγωγή στη Γλωσσολογία Ι

Κεφάλαιο 7 Βάσεις και ιάσταση

Είναι πολύ πιθανό να παραξενευτείτε βλέποντας σύµβολα όπως { και *ptr++.

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 25/11/12, 22:00

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

ΘΕΜΑ 1ο Α. 1-5 ΣΩΣΤΟ, ΛΑΘΟΣ Για κ από 4 µέχρι 3 ΚΑΙ Β.1 ΣΩΣΤΟ ΛΑΘΟΣ, Β.2 Γ.1

Γενικές Παρατηρήσεις. Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα (1) Το Λήµµα της Αντλησης. Χρήση του Λήµµατος Αντλησης.


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

Γραπτές Απολυτήριες Εξετάσεις Ιουνίου 2008 ΘΕΜΑΤΑ. ΘΕΜΑ 1 ο Σημειώστε δίπλα σε κάθε φράση (Σ) αν είναι σωστή ή (Λ) αν είναι λάθος.

(2) (Quantifier Raising). (3)

Προγραμματισμός Ι (ΗΥ120)

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

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

ΑΝΣΩΝΤΜΙΕ Είναι κλιτές λέξεις που αντικαθιστούν ονοματικές φράσεις και κάνουν την ίδια «δουλειά» με αυτές.

οριακό PASS 402 PASS Πολύ σωστά, µπράβο οριακό PASS

Γλώσσες Χωρίς Συμφραζόμενα

ΗΥ-150. Πίνακες (Arrays)

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2): Αυτόµατα Στοίβας. Παραδείγµατα Σχεδιασµού CFG. Παράδειγµα 1.

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

Α2. Να γράψετε στο τετράδιό σας τους αριθμούς της Στήλης Α και δίπλα τα γράμματα της Στήλης Β που τους αντιστοιχούν.

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

(Γραμμικές) Αναδρομικές Σχέσεις

Chapter 6. Problem Solving and Algorithm Design. Στόχοι Ενότητας. Επίλυση προβληµάτων. Εισαγωγή. Nell Dale John Lewis

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

Αυτοµατιµός Γραφείου. Τµήµα Διοίκησης Επιχειρήσεων ΑΤΕΙ- Δυτικής Ελλάδας Μεσολόγγι Δρ. Α. Στεφανή Διάλεξη 2η

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Επιµέλεια Θοδωρής Πιερράτος

(Γραμμικές) Αναδρομικές Σχέσεις

6. ΔΙΑΝΥΣΜΑΤΙΚΟΙ ΧΩΡΟΙ ΚΑΙ ΑΝΤΙΣΤΡΟΦΑ ΠΡΟΒΛΗΜΑΤΑ

Βασίλειος Κοντογιάννης ΠΕ19

(Γραμμικές) Αναδρομικές Σχέσεις

Παιδαγωγική προσέγγιση: Πρόταση για την διδασκαλία της έννοιας αλγόριθµός στο περιβάλλον MicroWorlds Pro

Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις

BloodShed Dev C++ Οδηγίες Χρήσης (Συγγραφέας: Πάρις Πολύζος)

o AND o IF o SUMPRODUCT

Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Τηλ.: ο Νηπιαγωγείο

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

< 1 για κάθε k N, τότε η σειρά a k συγκλίνει. +, τότε η η σειρά a k αποκλίνει.

ροµολόγηση πακέτων σε δίκτυα υπολογιστών

Συγγραφή: Αλεξίου Θωμαή ΕΠΙΠΕΔΟ: A1 ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΕΛΕΥΘΕΡΟΣ ΧΡΟΝΟΣ - ΔΙΑΣΚΕΔΑΣΗ ΚΑΤΑΝΟΗΣΗ ΓΡΑΠΤΟΥ ΛΟΓΟΥ. ΑΠΟ:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Μέρος Β (Οργάνωση Υπολογιστών)

F x h F x f x h f x g x h g x h h h. lim lim lim f x

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

Εισαγωγή στην πληροφορική

Αναδροµή (Recursion) ύο παρεξηγήσεις. Σκέψου Αναδροµικά. Τρίγωνο Sierpinski Μη αναδροµικός ορισµός;

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Βασικές οδηγίες χρήσης συστήµατος ProTeAS

2.3. Ασκήσεις σχ. βιβλίου σελίδας Α ΟΜΑ ΑΣ

Transcript:

Εθνικό Μετσόβιο Πολυτεχνείο Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Ηλεκτρονικών Υπολογιστών Γλώσσες Προγραµµατισµού 2 Άσκηση 6 Μάρτιος 2004 Τζάννες Αλέξανδρος

6. η γλώσσα των νηπίων - σηµασιολογία Ακούµε συχνά τα νήπια να µιλάνε µε απλές προτάσεις όπου οι ονοµατικές και ρηµατικές φράσεις τους αποτελούνται από ονόµατα και ονοµατοποιηµένα ρήµατα, πριν µάθουν τα άρθρα (και τις συµφωνίες τους µε το όνοµα). Π.χ.: µαµά κακά µπαµπά ντα νινί άτα τσίσα µαµ {η µαµά έκανε κάνει κακά} {θέλω κακά} {ο µπαµπάς µε έδειρε} {ο µπαµπάς δέρνει} {θέλω βόλτα} {πήγα βόλτα} {θέλω (ενν. να κάνω) τσίσα} {έκανα τσίσα} {θέλω να φάω} {πεινάω} {τρώω} Και σε επόµενη φάση να προσθέτουν στο συντακτικό τους ένα αντικείµενο. Π.χ.: µπαµπά ντα νινί {ο µπαµπάς έδειρε το νινί (ενν. εµένα)} Μπορούµε να τεχνολογήσουµε τέτοιες προτάσεις και να δώσουµε τη σηµασία ή τις σηµασίες των προτάσεων των νηπίων; Υπόδειξη: ιαλέξτε εσείς φορµαλισµό (και υπολογιστικό εργαλείο). Αρχικά να σηµειώσω ότι τα πρώτα στάδια της εργασίας ήταν µια συνεργασία µου µε τον Μιχάλη Παπακυριάκου, ενώ στην συνέχεια συνεχίσαµε την ανάπτυξη ξεχωριστά καθότι ο τρόπος που σκεφτόταν ο καθένας ήταν αρκετά διαφορετικός (χωρίς κάποιος να είναι λάθος ή χειρότερος) µε αποτέλεσµα να καθυστερεί η πρόοδος της εργασίας. Αυτό ήταν ένα πολύ ενδιαφέρον µάθηµα για το πόσο ευέλικτος µπορεί να είναι ο τρόπος σκέψης σε θέµατα στα οποία η γνώση δεν έχει τυποποιηθεί πλήρως. Το υπολογιστικό εργαλείο που έχω διαλέξει είναι η prolog µε την οποία έχω µεγαλύτερη εξοικείωση και χρησιµοποιώ τον φορµαλισµό DCG. Το µη τερµατικό s είναι αυτό που κατασκευάζει στις προτάσεις (sentence) και εκτός από την πρόταση στη γλώσσα των νηπίων παίρνει και δύο ακόµα λίστες (λίστες διαφορών), Out και In, οι οποίες περιέχουν τη σηµασία της πρότασης του νηπίου και την αρχική σηµασία αντίστοιχα. Σε κανονική χρήση η s καλείται µε την In κενή και την Out µια µεταβλητή αφού αυτό είναι το ζητούµενο. Τα ρήµατα (verb_nini) που είναι γνωστά στο πρόγραµµα είναι τα µαµ, ντα, κακά, άτα, τσίσα ενώ τα ουσιαστικά (un_nini) που είναι γνωστά είναι τα µαµά, µπαµπά, νινί. %uns un_nini(mama) --> [mama]. un_nini(mpampa) --> [mpampa]. un_nini(nini) --> [nini]. %verbs verb_nini(mam) --> [mam]. verb_nini(nta) --> [nta].

verb_nini(nta,2) --> [nta]. verb_nini(kaka) --> [kaka]. verb_nini(ata) --> [ata]. verb_nini(tsisa) --> [tsisa]. Παρατηρούµε ότι το ντα περιλαµβάνεται δύο φορές, την δεύτερη µε ένα όρισµα 2. Αυτό σηµαίνει ότι είναι η εκδοχή του που λαµβάνει αντικείµενο (δέρνω κάποιον). Βλέπουµε επίσης ότι περιέχεται σαν όρισµα η ίδια η λέξη (π.χ. verb_nini(mam) --> [mam].). Αυτό γίνεται για τη µεταφορά της πληροφορίας στο παραπάνω επίπεδο του δένδρου για να γίνει εκεί η επεξεργασία. Η προσέγγιση που δώσαµε στην µηχανιστική ερµηνεία της γλώσσας των νηπίων ήταν να δίνουµε διάφορες ερµηνείες (meanings) στα τερµατικά της γλώσσας. Οι δύο κύριες κατηγορίες ερµηνειών ήταν η ερµηνεία σε ουσιαστικό (un_meaning), και η ερµηνεία σε ρήµα (verb_meaning). Τέλος οι τύποι των προτάσεων που υποστηρίζει το πρόγραµµα είναι οι εξής : s verb s un verb s un verb un s verb un s un s Παρατηρούµε ότι ο τελευταίος κανόνας περιέχει δεξιά αναδροµή. Χρησιµοποιείται ως κλητική προσφώνηση, δηλαδή un! s. Αυτό θα γίνει πιο κατανοητό µε ένα παράδειγµα :?- s(out,[],[mama,kaka],[]). Out = [mama, '!', kanw, kaka] ; Out = [mama, '!', ekana, kaka] ; Out = [mama, '!', thelo, na, kanw, kaka] ; Out = [i_mama, kanei, kaka] ; Out = [i_mama, ekane, kaka] ; Out = [i_mama, thelei_na_kanei, kaka] ; Βλέπουµε ότι παρέχονται 6 ερµηνείες, οι τρεις από τον κανόνα s un s και οι άλλες τρεις από τον κανόνα s un s. Ας δούµε ακόµα µερικά παραδείγµατα :?- s(out,[],[ata],[]). Out = [kanw, bolta] ; Out = [ekana, bolta] ; Out = [thelo, na, kanw, bolta] ;?- s(out,[],[nta],[]). Out = [kanw, kati_kako] ; Out = [ekana, kati_kako] ; Out = [thelo, na, kanw, kati_kako] ; Out = [dernw] ;

Out = [edeira] ;?- s(out,[],[nini,tsisa],[]). Out = [kanw, tsisa] ; Out = [ekana, tsisa] ; Out = [thelo, na, kanw, tsisa] ; Out = [to_mwro, kanei, tsisa] ; Out = [to_mwro, ekane, tsisa] ; Out = [to_mwro, thelei_na_kanei, tsisa] ;?- s(out,[],[mama,nta],[]). Out = [mama, '!', kanw, kati_kako] ; Out = [mama, '!', ekana, kati_kako] ; Out = [mama, '!', thelo, na, kanw, kati_kako] ; Out = [mama, '!', dernw] ; Out = [mama, '!', edeira] ; Out = [i_mama, kanei, kati_kako] ; Out = [i_mama, ekane, kati_kako] ; Out = [i_mama, thelei_na_kanei, kati_kako] ; Out = [i_mama, me, dernei] ; Out = [i_mama, me, edeire] ; Out = [i_mama, dernei] ; Out = [i_mama, edeire] ;?- s(out,[],[mama,nta,mpampa],[]). Out = [mama, '!', dernw, ton_mpampa] ; Out = [mama, '!', edeira, ton_mpampa] ; Out = [i_mama, dernei, ton_mpampa] ; Out = [i_mama, edeire, ton_mpampa] ;?- s(out,[],[nta,mpampa],[]). Out = [dernw, ton_mpampa] ; Out = [edeira, ton_mpampa] ;?- s(out,[],[mama, mpampa, ata],[]). Out = [mama, '!', mpampa, '!', kanw, bolta] ; Out = [mama, '!', mpampa, '!', ekana, bolta] ; Out = [mama, '!', mpampa, '!', thelo, na, kanw, bolta] ; Out = [mama, '!', o_mpampas, kanei, bolta] ; Out = [mama, '!', o_mpampas, ekane, bolta] ; Out = [mama, '!', o_mpampas, thelei_na_kanei, bolta] ;?- s(out,[],[mama, mpampa, mam],[]). Out = [mama, '!', mpampa, '!', trww] ;

Out = [mama, '!', mpampa, '!', peinaw] ; Out = [mama, '!', mpampa, '!', thelw_na_faw] ; Out = [mama, '!', o_mpampas, me, trwei] ; Out = [mama, '!', o_mpampas, me, peinaei] ; Out = [mama, '!', o_mpampas, me, thelei_na_faei] ; Ακολουθεί ο κώδικας του προγράµµατος: %uns un_nini(mama) --> [mama]. un_nini(mpampa) --> [mpampa]. un_nini(nini) --> [nini]. %verbs verb_nini(mam) --> [mam]. verb_nini(nta) --> [nta]. verb_nini(nta,2) --> [nta]. verb_nini(kaka) --> [kaka]. verb_nini(ata) --> [ata]. verb_nini(tsisa) --> [tsisa]. %un meanings un_meaning(ata, bolta). un_meaning(kaka, kaka). un_meaning(tsisa, tsisa). un_meaning(nta, kati_kako). un_meaning(nini, m, to_mwro). un_meaning(nini, acc, to_mwro). un_meaning(mama, m, i_mama). un_meaning(mama, acc, ti_mama). un_meaning(mpampa, m, o_mpampas). un_meaning(mpampa, acc, ton_mpampa). % verb meanings verb_meaning(mam, s1, trww). %s1 : singular, 1st person verb_meaning(mam, s1, peinaw). verb_meaning(mam, s1, thelw_na_faw). verb_meaning(mam, s3, trwei). %s3 : singular, 1st person verb_meaning(mam, s3, peinaei). verb_meaning(mam, s3, thelei_na_faei). verb_meaning(nta, s1, dernw). verb_meaning(nta, s1, edeira). verb_meaning(nta, s3, dernei). verb_meaning(nta, s3, edeire). debug(x). %debug(x):-write(x),nl.

%--- s --> verb s(out, In) --> verb_nini(x),{ debug(1-1), un_meaning(x, Y), append(in, [kanw, Y], Out)}. s(out, In) --> verb_nini(x),{ debug(1-2), un_meaning(x, Y), append(in, [ekana, Y], Out)}. s(out, In) --> verb_nini(x),{ debug(1-3), un_meaning(x, Y), append(in, [thelo, na, kanw, Y], Out)}. s(out, In) --> verb_nini(x),{ debug(1-4), verb_meaning(x, s1, Y), append(in, [Y], Out)}. %--- s --> un s (recursion) s(out, In) --> un_nini(x), {t(member(nini,[x])), append(in,[x,!],in1)}, s(out, In1). %klitiki %--- s --> un verb s(out, In) --> un_nini(nini), verb_nini(v), { s(out, In, [V], []) }. s(out, In) --> un_nini(n), verb_nini(v), { debug(2-2-1), un_meaning(n,m,nm), un_meaning(v,vm), append(in, [Nm, kanei, Vm], Out)}. s(out, In) --> un_nini(n), verb_nini(v), { debug(2-2-2), un_meaning(n,m,nm), un_meaning(v,vm), append(in, [Nm, ekane, Vm], Out)}. s(out, In) --> un_nini(n), verb_nini(v), { debug(2-2-3), un_meaning(n,m,nm), un_meaning(v,vm), append(in, [Nm, thelei_na_kanei, Vm], Out)}. s(out, In) --> un_nini(n), verb_nini(v,2), { debug(2-2-4), un_meaning(n,m,nm), verb_meaning(v, s3, Vm),append(In, [Nm, me, Vm], Out)}. s(out, In) --> un_nini(n), verb_nini(v), { debug(2-2-5), un_meaning(n,m,nm), verb_meaning(v, s3, Vm),append(In, [Nm, Vm], Out)}. %--- s --> un verb un s(out, In) --> un_nini(n1), verb_nini(v,2), un_nini(n2), { debug(3-1), un_meaning(n1, m, N1m), un_meaning(n2, acc, N2m), verb_meaning(v, s3, Vm), append(in, [N1m, Vm, N2m], Out)}. %--- s --> verb un s(out, In) --> verb_nini(v,2), un_nini(n2), { debug(4-1), un_meaning(n2, acc, N2m), verb_meaning(v, s1, Vm), append(in, [Vm, N2m], Out)}. member(h,[h T]). member(x,[h T]) :- member(x,t). append([],x,x). append([h T1],X,[H T2]) :- append(t1,x,t2).