Difference between revisions of "Attribute grammar"

From HaskellWiki
Jump to navigation Jump to search
(FNC-2 System)
 
(12 intermediate revisions by 6 users not shown)
Line 4: Line 4:
   
 
Especially for functional programmers (with Haskell examples) -- see
 
Especially for functional programmers (with Haskell examples) -- see
Wouter Swierstra: [http://www.haskell.org/tmrwiki/WhyAttributeGrammarsMatter Why Attribute Grammars Matter] (published in [http://www.haskell.org/tmrwiki/IssueFour The Monad.Reader, Issue Four]).
+
Wouter Swierstra: [http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue4/Why_Attribute_Grammars_Matter Why Attribute Grammars Matter] (published in [http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue4 The Monad.Reader, Issue Four]).
 
And also very deep connections with
 
And also very deep connections with
* catamorhisms, category theory
+
* catamorphisms, category theory
 
* attribute grammars
 
* attribute grammars
 
are described there.
 
are described there.
Line 17: Line 17:
   
 
* [http://en.wikipedia.org/wiki/Attribute_grammar Wikipedia article]
 
* [http://en.wikipedia.org/wiki/Attribute_grammar Wikipedia article]
  +
* An Attribute Grammar tutorial by Swiestra [http://foswiki.cs.uu.nl/foswiki/pub/Swierstra/ResearchTalks/AgTutorial-org.pdf Attribute grammars – A short tutorial]
* [http://www-rocq.inria.fr/oscar/www/fnc2/manual/node32.html A Tutorial Introduction to Attribute Grammars], contained in [http://www-rocq.inria.fr/oscar/www/fnc2/manual/manual.html The FNC-2 System
 
User's Guide and Reference Manual], written by Martin JOURDAN and Didier PARIGOT
 
 
* Also [http://www.haskell.org/happy/ Happy] contains AG-related capabilities, see [http://www.haskell.org/happy/doc/html/sec-AttributeGrammar.html Chapter 4. Attribute Grammars]
 
* Also [http://www.haskell.org/happy/ Happy] contains AG-related capabilities, see [http://www.haskell.org/happy/doc/html/sec-AttributeGrammar.html Chapter 4. Attribute Grammars]
  +
* Attribute Grammars were originally proposed be Donald E. Knuth in [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.455.1434&rep=rep1&type=pdf Semantics of Context-Free Languages].
  +
* Knuth describes the origin of the ideas behind Attribute Grammars in [http://www.dcs.warwick.ac.uk/~sk/cs325/gag.pdf The Genesis of Attribute Grammars]. Furthermore he gives a rich bibliography and some error corrections for some of his papers there.
   
 
== Separation of concerns ==
 
== Separation of concerns ==
Line 30: Line 31:
 
== Portals or other rich resources ==
 
== Portals or other rich resources ==
   
[http://www-rocq.inria.fr/oscar/www/fnc2/attribute-grammar-people.html Attribute Grammars Home Page]
+
* [http://foswiki.cs.uu.nl/foswiki/HUT/AttributeGrammarSystem Attribute Grammar page of Utrecht Univesity]
  +
* [https://www.haskell.org/happy/doc/html/sec-AtrributeGrammarsInHappy.html Description of Attibute Grammar aspects in the Happy parser generator system for Haskell]
  +
* [http://www-sop.inria.fr/members/Didier.Parigot/www/fnc2/index.html The FNC-2 Attribute Grammar System]
  +
* [http://www-sop.inria.fr/members/Didier.Parigot/www/fnc2/AGtexte.html Resources for Attribute Grammar research by Didier Parigot (INRIA)]
  +
* Team OSCAR at INRIA is stopped since 1999 but the following page contains some older publications: [https://www.inria.fr/en/teams/oscar Former Team OSCAR Home Page]
   
 
== Tools ==
 
== Tools ==

Latest revision as of 07:06, 26 January 2018

Introduction

Especially for functional programmers (with Haskell examples) -- see Wouter Swierstra: Why Attribute Grammars Matter (published in The Monad.Reader, Issue Four). And also very deep connections with

  • catamorphisms, category theory
  • attribute grammars

are described there. And there are links from that article to other materials providing deep insights in these powerful theories: attribute grammar tools and articles of the Essential Haskell Compiler project.

It is no wonder that it is exactly a compiler project homepage that provides good circular programming and attribute grammar tutorials

the reason may be that a compiler project is complex enough to require good separation of concerns, modularity, reuse (goals of Aspect Oriented Programming, too), and attribute grammars are powerful tools to achieve these goals.

Separation of concerns

Both Swiestra's article (mentioned above) and the Essential Haskell Compiler Project tool (mentioned below) remarks the connection of attribute grammars to the topic of separation of concerns, a goal of aspect orinted programming. This goal can be achieved by multiple ways in functional programming, see the concepts monad and arrow). Swiestra'a article mentions analogies between

  • attribute grammars,
  • (Reader, Writer, State) monads,
  • (fan-out operation of) arrows.

Portals or other rich resources

Tools

Utrecht University's Attribute Grammar System tools include also an attribute grammar compiler, UUAGC. The concept of attribute grammar was used in their Essential Haskell Compiler project, which gives us not only a working programming language, but also a good didactical material about using attribute grammars, e.g. in writing compilers.

Albeits these materials are self-contained, they reveal that the theory of attribute grammars is related to other concepts (circular programming, catamorphism).

Robert Dockins has reported Attribute Grammar Support for Happy in the Haskell Communities and Activities Report (10th edititon, June 2006)

Related concepts