Compiler Generator Coco / R


Hanspeter Mössenböck , Universitas Linz


Coco / R mengambil keterangan compiler dalam bentuk tata bahasa dikaitkan (sintaks EBNF dengan atribut dan tindakan semantik) dan menerjemahkannya ke dalam scanner dan parser keturunan rekursif. Pengguna harus menambahkan modul untuk penanganan tabel simbol, optimasi, dan generasi kode untuk mendapatkan compiler berjalan. LL (1) konflik dapat diselesaikan dengan mekanisme lookahead khusus. Coco / R telah berhasil digunakan dalam dunia akademis dan industri. . Ini menggabungkan fungsionalitas dari Unix alat terkenal Lex dan Yacc 
Coco / R tersedia di bawah GNU GPL dari situs berikut: 
Java versi
C # versi
versi Oberon
C, Pascal, Modula-2 versi

Berikut adalah contoh deskripsi compiler kecil dengan Coco / R:

COMPILER Demo

CHARACTERS
  letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrtsuvwxyz".
  digit = "0123456789".
  EOL = '\t'.

TOKENS
  ident = letter {letter | digit}.
  number = digit {digit}.

COMMENTS FROM "/*" TO "*/" NESTED
IGNORE  EOL

PRODUCTIONS
  Demo = Statement {";" Statement}.
(*------------------------------------------------------------------------------------*)
  Statement                         (. string x; int y; .)
  = Ident "=" Number  (. CodeGen.Assign(x, y); .)
  .
(*------------------------------------------------------------------------------------*)
  Ident 
  = ident                           (. x = t.val; .)
  .
(*------------------------------------------------------------------------------------*)
  Number 
  = number                          (. n = Convert.ToInt32(t.val); .)
  .
END Demo.

 

Source: http://www.ssw.uni-linz.ac.at/Research/Projects/Compiler.html