Personal tools

Constructia Compilatoarelor Folosind Flex si Bison

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
m (begining a page concerning compilers in Haskell)
 
 
(6 intermediate revisions by one user not shown)
Line 1: Line 1:
  +
[[Category:Ub]]
  +
<H1> .... si nu numai </H1>
  +
 
Flex si Bison sunt uneltele traditionale, clasice, pentru constructia compilatoarelor.
 
Flex si Bison sunt uneltele traditionale, clasice, pentru constructia compilatoarelor.
 
Aceasta pagina isi propune sa devina o resursa on-line de materiale pentru cei care se ocupa de constructia compilatoarelor (in Haskell si in alte limbaje : Flex, Bison, C etc).
 
Aceasta pagina isi propune sa devina o resursa on-line de materiale pentru cei care se ocupa de constructia compilatoarelor (in Haskell si in alte limbaje : Flex, Bison, C etc).
   
In esenta va fi o pagina suport pentru cursul e compilatoare.
+
In esenta va fi o pagina suport pentru cursul de compilatoare.
   
   
 
== Parsere ==
 
== Parsere ==
Cititi despre ParseLib si Parsec si alte biblioteci de parsere.
+
Cititi despre [[ParseLib]] si [[Parsec]] si alte biblioteci de parsere.
  +
  +
== Generatoare (de parsere) ==
  +
[[Happy]]. Un fel de Bison pentru Haskell.
   
 
== Arbori ==
 
== Arbori ==
Line 16: Line 19:
 
* [http://www.haskell.org/sitewiki/images/b/bb/Tipuri_recursive.pdf Tipuri_recursive.pdf] Un capitol de manual despre declararea tipurilor utilizator recursive. Arbori. Arbori polimorfi. Astfel de arbori se pot/vor folosi la scriererea interpretoarelor si compilatoarelor pentru a implementa arborii sintaxei abstracte - eng: AST = abstract syntax tree. Am scris acest capitolul acesta in martie 2005, asa cum se vede si din imaginile aflate in capitol.[http://www.haskell.org/sitewiki/images/b/bb/Tipuri_recursive.pdf Descarcati capitolul! ]
 
* [http://www.haskell.org/sitewiki/images/b/bb/Tipuri_recursive.pdf Tipuri_recursive.pdf] Un capitol de manual despre declararea tipurilor utilizator recursive. Arbori. Arbori polimorfi. Astfel de arbori se pot/vor folosi la scriererea interpretoarelor si compilatoarelor pentru a implementa arborii sintaxei abstracte - eng: AST = abstract syntax tree. Am scris acest capitolul acesta in martie 2005, asa cum se vede si din imaginile aflate in capitol.[http://www.haskell.org/sitewiki/images/b/bb/Tipuri_recursive.pdf Descarcati capitolul! ]
   
  +
* Din 2008-2009: [[Pseudoconstructors over monadic values]]. Pseudoconstructorii peste actiuni monadice (autor Dan V Popa) sunt un mod MODULAR de a reprezenta arborii, intr-o maniera functionala. Au fost folositi impreuna cu o semantica monadica modulara la realizarea Limbajului Didactic Pseudocod [[Rodin]]
   
 
== Semantici ==
 
== Semantici ==
Line 21: Line 25:
   
 
* [http://www.haskell.org/sitewiki/images/9/9b/Transcrierea_semanticii_in_do_notatie.pdf Transcrierea_semanticii_in_do_notatie.pdf ] Explicatii despre do notatia din Haskell si necesitatea indeplinirii legilor monadei intr-un capitol despre avantajele folosirii Haskellului la realizarea implementarii limbajelor.Exista o pagina despre [[legile monadei]] si in sectiunea engleza a site-ului.
 
* [http://www.haskell.org/sitewiki/images/9/9b/Transcrierea_semanticii_in_do_notatie.pdf Transcrierea_semanticii_in_do_notatie.pdf ] Explicatii despre do notatia din Haskell si necesitatea indeplinirii legilor monadei intr-un capitol despre avantajele folosirii Haskellului la realizarea implementarii limbajelor.Exista o pagina despre [[legile monadei]] si in sectiunea engleza a site-ului.
  +
* teza de doctorat a lui Sheng Liang ... de completat
  +
* lucrarile profesorului Philip Wadler ...de completat
   
+
== Generare de cod cu Harpy==
== Generare de cod ==
+
*Cautati pe pagina http://hackage.haskell.org/packages/archive/pkg-list.html
Cautati pe pagina
 
http://hackage.haskell.org/packages/archive/pkg-list.html
 
 
Code Generation sau harpy.
 
Code Generation sau harpy.
   
  +
== Generare de cod cu HBurg==
  +
*hburg: Haskell Bottom Up Rewrite Generator
  +
HBURG is a program that generates tree parsers for cost-augmented tree grammars. It is useful for writing code generators for compilers. Given a mapping of a tree structured intermediate representation onto target machine instructions, HBURG generates a code generator that can be plugged into the instruction selection phase of a compiler. For more information see "http://www.bytelabs.org/pub/papers/hburg07.pdf".
  +
Versions 1.0, 1.1, 1.1.1, 1.1.2
  +
Dependencies base (>=1.0), filepath, haskell98 (>=1.0), mtl
  +
License BSD3
  +
Author Igor Boehm <[email protected]>
  +
Maintainer [email protected]
  +
Stability Experimental
  +
Category Code Generation
  +
Home page http://www.bytelabs.org/hburg.html
  +
Executables hburg
  +
Upload date Thu Jun 26 17:38:19 UTC 2008
  +
Uploaded by IgorBohm
  +
Built on ghc-6.10, ghc-6.8
  +
Downloads
   
== Bibliografie ==
+
* hburg-1.1.2.tar.gz (Cabal source package)
[[Image:Coperta5.jpg|center|Practica Interpretarii Monadice]]
+
* package description (included in the package)
Popa Dan[[Practica interpretarii monadice]], Matrix Rom, 2008 - pentru partea de parsing modular si ceva despre semanticile monadice. Se poate comanda la http://www.matrixrom.ro
 
   
Cautati pe pg de mai jos, Compilers and interpreters:
+
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hburg
   
http://hackage.haskell.org/packages/archive/pkg-list.html
+
GENERARE DE COD
+
http://www.bytelabs.org/pub/papers/hburg07.pdf/
Cititi sursele proiectului Tiger.Tot acolo.
 
   
   
 
== Alte tehnici ==
 
== Alte tehnici ==
 
* Gramatici cu atribute, Tree transducers ... vor urma.
 
* Gramatici cu atribute, Tree transducers ... vor urma.
  +
* Un back end monadic asemanator acestuia ar putea servi la generare de cod. dupa o mica modificare. Foloseste monada StOut. [http://www.haskell.org/sitewiki/images/b/b1/Back-End.pdf Un back-end monadic. <Download>]
  +
  +
  +
== Bibliografie ==
  +
[[Image:Coperta5.jpg|center|Practica Interpretarii Monadice]]
  +
*Popa Dan[[Practica interpretarii monadice]], Matrix Rom, 2008 - pentru partea de parsing modular si ceva despre semanticile monadice. Se poate comanda la http://www.matrixrom.ro
  +
*Cautati pe pg de mai jos, Compilers and interpreters: http://hackage.haskell.org/packages/archive/pkg-list.html
  +
*Cititi sursele proiectului Tiger.Tot acolo.
  +
* O prezentare pdf numita "Evaluare Modulara si Interpretoare folosind Monade si Clase de Tipuri" a fost acceptata pentru sectiunea Functional Grit de la Anglo Haskell 2008. Titlul tradus: [[Modular Evaluation and Interpreters Using Monads and Type Classes by Dan Popa]].
  +
* GENERARE DE COD http://www.bytelabs.org/pub/papers/hburg07.pdf/
  +
* Dan Popa - DIRECT MODULAR EVALUATION OF EXPRESSIONS USING THE MONADS AND TYPE CLASSES IN HASKELL http://www.haskell.org/sitewiki/images/7/7d/POPA_D.pdf Detalii la [[User:Ha$kell]].
  +
* Dan Popa - Introducere in H98 prin exemple [http://www.haskell.org/haskellwiki/Capitole_de_manual <Capitole Libere pt Download> ] [http://www.edusoft.ro/detalii.php?id=81 Cartea completa de la Editura Edusoft]
  +
*Constructia Compilatoarelor Folosind Flex si Bison [http://www.edusoft.ro/detalii.php?id=21 (editia veche de la Edusoft)] [http://www.matrixrom.ro/romanian/editura/domenii/informatica.php?id=953#953 (editia corectata 2008-2009) de la MatrixRom]
   
  +
== Vizitati si Laboratorul de limbaje==
  +
==>> Laboratorul de limbaje e la adresa
  +
http://www.haskell.org/haskellwiki/Laboratorul_de_Limbaje
  +
Cautati si in Wikipedia.
 
----
 
----
 
Pagina in dezvoltare
 
Pagina in dezvoltare

Latest revision as of 08:19, 7 May 2010

Contents

1 .... si nu numai

Flex si Bison sunt uneltele traditionale, clasice, pentru constructia compilatoarelor. Aceasta pagina isi propune sa devina o resursa on-line de materiale pentru cei care se ocupa de constructia compilatoarelor (in Haskell si in alte limbaje : Flex, Bison, C etc).

In esenta va fi o pagina suport pentru cursul de compilatoare.


[edit] 1.1 Parsere

Cititi despre ParseLib si Parsec si alte biblioteci de parsere.

[edit] 1.2 Generatoare (de parsere)

Happy. Un fel de Bison pentru Haskell.

[edit] 1.3 Arbori

Arborii sunt reprezentari interne ale programului (de) compilat.

De pe pagina Capitole de manual luati capitolele:

  • Tipuri_utilizator.pdf Un capitol de manual despre declararea tipurilor utilizator introduse cu declaratia "data". Exemple de constructori de tip si de constructori de date. Am scris acest capitolul acesta in martie 2005, asa cum se vede si din imaginile aflate in capitol.- Descarcati capitolul!
  • Tipuri_recursive.pdf Un capitol de manual despre declararea tipurilor utilizator recursive. Arbori. Arbori polimorfi. Astfel de arbori se pot/vor folosi la scriererea interpretoarelor si compilatoarelor pentru a implementa arborii sintaxei abstracte - eng: AST = abstract syntax tree. Am scris acest capitolul acesta in martie 2005, asa cum se vede si din imaginile aflate in capitol.Descarcati capitolul!
  • Din 2008-2009: Pseudoconstructors over monadic values. Pseudoconstructorii peste actiuni monadice (autor Dan V Popa) sunt un mod MODULAR de a reprezenta arborii, intr-o maniera functionala. Au fost folositi impreuna cu o semantica monadica modulara la realizarea Limbajului Didactic Pseudocod Rodin

[edit] 1.4 Semantici

Avem o mica introducere despre semantici in do-notatie:

  • Transcrierea_semanticii_in_do_notatie.pdf Explicatii despre do notatia din Haskell si necesitatea indeplinirii legilor monadei intr-un capitol despre avantajele folosirii Haskellului la realizarea implementarii limbajelor.Exista o pagina despre legile monadei si in sectiunea engleza a site-ului.
  • teza de doctorat a lui Sheng Liang ... de completat
  • lucrarile profesorului Philip Wadler ...de completat

[edit] 1.5 Generare de cod cu Harpy

Code Generation sau harpy.

[edit] 1.6 Generare de cod cu HBurg

  • hburg: Haskell Bottom Up Rewrite Generator

HBURG is a program that generates tree parsers for cost-augmented tree grammars. It is useful for writing code generators for compilers. Given a mapping of a tree structured intermediate representation onto target machine instructions, HBURG generates a code generator that can be plugged into the instruction selection phase of a compiler. For more information see "http://www.bytelabs.org/pub/papers/hburg07.pdf". Versions 1.0, 1.1, 1.1.1, 1.1.2 Dependencies base (>=1.0), filepath, haskell98 (>=1.0), mtl License BSD3 Author Igor Boehm <[email protected]> Maintainer [email protected] Stability Experimental Category Code Generation Home page http://www.bytelabs.org/hburg.html Executables hburg Upload date Thu Jun 26 17:38:19 UTC 2008 Uploaded by IgorBohm Built on ghc-6.10, ghc-6.8 Downloads

   * hburg-1.1.2.tar.gz (Cabal source package)
   * package description (included in the package)

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hburg

GENERARE DE COD http://www.bytelabs.org/pub/papers/hburg07.pdf/


[edit] 1.7 Alte tehnici

  • Gramatici cu atribute, Tree transducers ... vor urma.
  • Un back end monadic asemanator acestuia ar putea servi la generare de cod. dupa o mica modificare. Foloseste monada StOut. Un back-end monadic. <Download>


[edit] 1.8 Bibliografie

Practica Interpretarii Monadice

[edit] 1.9 Vizitati si Laboratorul de limbaje

==>> Laboratorul de limbaje e la adresa http://www.haskell.org/haskellwiki/Laboratorul_de_Limbaje Cautati si in Wikipedia.


Pagina in dezvoltare