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

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

Δημοσ.

Γεια σας παιδιά έχω ένα θέμα με μια άσκηση δεν μπορώ να της απαντήσεις έχω διαβάσει τις σημειώσεις που έχω και δεν μπορώ να βγάλω άκρη..Αν μπορείτε μια βοήθεια..Ευχαριστώ.!

 

Θεωρείστε την ακόλουθη γραμματική:

Ν = {expr, term, factor}, T = {+, -, *, /, NUM, ID}

Goal = expr

expr = expr “+“ term

| expr “–“ term

| term

term = term “*“ factor

| term “/“ factor

| factor

factor = NUM

| ID

Γιατί η παραπάνω γραμματική θεωρείται αναδρομική; Αναφέρετε τους κανόνες στους οποίους παρουσιάζεται αναδρομικότητα.

Η αναδρομικότητα των κανόνων του προηγούμενου ερωτήματος είναι αριστερή ή δεξιά;

Μετατρέψτε την γραμματική έτσι ώστε να απαλοίψετε την αναδρομικότητα που παρουσιαζει.

Δημοσ.

Αναδρομη ξερεις τι ειναι ;

 

Η γραμματικη σου στον κανονα exr -> .... | ..... | παρουσιαζει αναδρομη,γιατι ενα expr μπορει να σου δωσει ακομα ενα expr οταν αναλυεις το αριστερο μελος.Υπαρχει και αλλος τετοιος κανονας....

 

 

Αριστερη αναδρομη ( τα κεφαλαια συμβολα ειναι μη τερματικα και τα μικρα τερματικα ):

S-> A

A -> Ax | b

 

Λυνεται με παραγοντοποιηση

 

Δεξια αναδρομη:

 

S-> A

A-> xA

 

Σε ποιο σημειο δυσκολευεσαι ;

Δημοσ.

Το μάθημα είναι δύσκολο και, αν δεν έχεις ιδέα, καλύτερα να διαβάσεις.

ατά λάθος" δεν μπορείς να τα φέρεις βόλτα με το εν λόγω μάθημα.

 

φιλικά,

  • Like 1
Δημοσ.

 

Καραμάνου ?

 

 

Αναδρομική γραμματική

>
//Αυτή η γραμαμτική είναι αναδρομική γιατί είναι και αριστερά και δεξιά!
Χ = Χ "+" Χ

//Αυτή η γραμαμτική είναι αριστερά αναδρομική
Χ = Χ "+"

//Αυτή η γραμαμτική είναι δεξιά αναδρομική
Χ = "+" Χ

 

Απαλοιφή γραμματικής

 

έστω ότι έχεις

>
Χ = Χ "+" Χ
// This gonna be
X = X' "+" X
X' = X
//επειδή μπερεύει το X' ας το βαφτίσουμε Υπ_Ορος και το Χ όρος
//έχεις αυτό
όρος = όρος "+" όρος
//θα γίνει
όρος = Υπ_όρος "+" όρος
Υπ_Όρος = όρος

 

 

Αν έχεις και εσύ καραμάνου τότε απάντα όπως πιο πάνω που σου έγραψα, αυτή είναι η όλη απάντηση, δεν θέλει 10 γραμμές,

με την απαλοιφή θα δυσκολευτείς γιατί δεν δίνει 2 γραμμές... απλά σου έδειξα πως γίνεται.

 

 

 

 

Καραμάνου ?

 

 

τι ρωτάω, αφού το θέμα πάνω είναι ολόιδιο με αυτό που έγραψα :P (Ατσα!!! συμφοιτά :P)

Δημοσ.

Καλα δυσκολο το μαθημα δεν ειναι.Μονο προσοχη θελει για να καταλαβεις τους ορισμους και ποια προβληματα λυνεις.Προφανως αμα δεν ξερεις προγραμματισμο,θα σου φανουν παλουκια...

 

 

Η ασκηση ειναι πολυ απλη( στα πλαισια των μεταγλωττιστων ),αλλα αν πας ξυπολυτος στα αγκαθια λογικο ειναι να σου φαινεται δυσκολο.Δεν σου ζηταει να κανεις δημιουργια αφηρημενου ενδιαμεσου κωδικα ή παραγωγη τελικου κωδικα...

 

Με μια μικρη αναζητηση στο google "compilers left recursion" λυνεις το προβλημα σου.Γενικα μη περιμενεις να τα βρεις ΟΛΑ μεσα στις σημειωσεις και στις διαλεξεις του καθηγητη σου.Ψαξε πρωτα μονος/μονη σου σε βιβλια,στο internet( ειδικα για τους compilers υπαρχει ΑΠΕΙΡΟ υλικο ) και αν δεν τα καταφερεις,ρωτας τον καθηγητη ή σε κανενα forum...

 

BTW, ihatelove το εχεις λαθος. Δεν εχεις κανει απαλοιφη αριστερης αναδρομης :P

Δημοσ.

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

 

@Chriss

Με μια μικρη αναζητηση στο google "compilers left recursion" λυνεις το προβλημα σου.

 

εξαρτάται, εγώ όλο βλακείες άλλα νταλα βρίσκω...

  • 2 χρόνια αργότερα...
  • Moderators
Δημοσ.

Πιστεύω μετά από 2 χρόνια είτε θα έχει λύσει την άσκηση είτε θα τα έχει παρατήσει και θα έχει γίνει αγρότης.

  • Like 1

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

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

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

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

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

Σύνδεση

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

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