feedback request gia neo Perl-based project
NKanellopoulos
nkan at fibonacci.profile.gr
Tue May 29 14:10:02 EEST 2001
H πιο γρήγορη λύση (από το 1975 και μετά), για να φτιάξεις έναν compiler,
είναι το lex και το yacc. Τα έχω χρησιμοποιήσει με επιτυχία. Το lex είναι
πολύ
εύκολο, σχεδόν τετριμμένο. Στην ουσία δηλώνεις μερικά απλά reg-ex. Πιο
πολύπλοκο είναι να φτιάξεις το input file για το yacc σε Backus Naur μορφή
(γλώσσα περιγραφής της σύνταξης). Το πιο μεγάλο πρόβλημα είναι ότι
αυτά τα εργαλεία παράγουν, φυσικά, C. Έχω δει στο CPAN όμως ένα
module που λέγεται Parse (ή κάπως έτσι), και υποθέτω ότι θα είναι κάτι σαν
το yacc. H λειτουργία του lex μπορεί (μάλλον εύκολα) να εξομοιωθεί με reg-ex
της Perl.
Ισως είναι χρήσιμο το βιβλίο του Ronald Mak, "Writing compilers and
interpreters".
Δουλεύει με C++, αλλά δείχνει βήμα-βήμα πως γίνονται όλα, χωρίς το lex
και το yacc, φτιάχνοντας έναν interpreter και έναν compiler για την Pascal.
To συνιστώ ανεπιφύλακτα.
Φυσικά υπάρχει και το (θεωρητικό) "Compilers, ..." των Aho, Sethi,Ullman.
Αυτό όμως διδάσκεται στα μεταπτυχιακά του MIT, Stanford κλπ και δεν θα σε
βοηθήσει πρακτικά τόσο όσο το άλλο.
Από ότι ξέρω, υπάρχει και η δυνατότητα να καλέσεις την C από Perl, οπότε
ίσως είναι και αυτό μια λύση. Στην 3η έκδοση του Programming Perl υπάρχει
εκτενής αναφορά, αν θυμάμαι καλά.
Πάντως η όλη ιδέα έχει ενδιαφέρον. Εγώ δεν έχω ασχοληθεί με Php,
όμως είναι μια ευκαιρία ...
Νίκος Κανελλόπουλος
http://nk.wzpro.net
More information about the Linux-greek-users
mailing list