Coco/R adalah generator kompiler, yang mengambil tata bahasa yang dikaitkan dari bahasa sumber dan menghasilkan pemindai dan parser untuk bahasa ini. Pemindai berfungsi sebagai otomat terbatas deterministik. Parser menggunakan keturunan rekursif. Konflik LL (1) dapat diselesaikan dengan lookahead multi-simbol atau dengan cek semantik. Dengan demikian kelas tata bahasa yang diterima adalah LL (k) untuk k.
Saya telah menggunakan versi Turbo Pascal dari Coco / R untuk waktu yang lama. Terkadang perlu mengubah kode. Jika sumber berubah, saya mengkompilasinya. Tetapi setelah beberapa pembaruan Windows, saya menemukan bahwa Turbo Pascal pergi ke tempat yang lebih baik dan berhenti berjalan. Secara umum, saya pikir banyak bahasa orang dari Niklaus Emil Wirth menyebabkan ketidaksukaan.
Secara umum, saya percaya bahwa ada beberapa orang yang telah memberikan kontribusi yang sebanding dengan pengembangan pemrograman dan bahasa ilmu komputer.
Sangat mudah untuk menemukan solusi yang kompleks dan seringkali tidak dapat dipahami untuk suatu masalah. Sulit untuk membuat solusi sederhana, bersih dan dapat dimengerti.
Ketika Anda melihat keputusan seperti itu, menjadi jelas bahwa ini adalah karya Grand Master dengan huruf kapital. Pertama, saya porting kode dari Turbo Pascal. Tetapi saya menemukan bahwa dalam hampir 20 tahun banyak air telah mengalir di bawah jembatan dan kode Coco/R juga telah ditingkatkan dengan baik.
Versi terakhir yang saya temukan adalah C ++, C #, Java. Kemudian saya memutuskan untuk port kode dan memilih C #. Dalam semangat, ini adalah bahasa yang paling dekat dengan Delphi, mungkin karena fakta bahwa mereka memiliki satu arsitek kepala.
Anda dapat melihat contoh penggunaan dalam proyek Protobuf-Delphi.
Seharusnya menggunakan set bingkai yang sama untuk pemindai dan parser untuk berbagai bahasa. Kompiler bergantung pada struktur bingkai yang cukup tetap untuk pemindai dan parser. Tidak diinginkan untuk mengubah urutan bagian, karena ini dapat menyebabkan kesalahan kompilasi dalam kode yang dihasilkan.
Cocor.exe -namespace Taste -checkEOF -trace AG taste.atg.
Namespace digunakan saat menghasilkan nama modul. Ini sekarang digunakan dalam bingkai pemindai & parser.
MACROS
prefix = "cr" .