Inference of Program Properties with Attribute Grammars, Revisited

A programming language is an essential ingredient for writing concise, maintainable, and error-free computer programs. A compiler takes a text written in such a language and compiles into machine instructions, and is usually implemented as a number of traversals over the abstract syntax of the program. Attribute Grammars (AGs) are a powerful tool for the description of such traversals and thus the implementation of a compiler: AGs offer aspect-oriented programming, abstraction over common traversal patterns, and automatic inference of a sound and efficient traversal algorithm. Over the years, computer languages have become more complex and harder to implement. Notoriously difficult to implement is type checking or type inference, which for complex languages is not only specified in terms of the abstract syntax but also in terms of the inferred types, and requires traversals that are hard to describe in general, and in particular with AGs. The reason is that the traversals mutually depend on types, which are not known apriori, thus the traversal represents some strategy that decides during the process in which order type information is collected and processed. In this thesis, we investigated the application of attribute grammars to the description of inference algorithms, with the goal of being able to describe such algorithms while retaining the good properties of AGs. To this end, this thesis builds on higher-order attribute grammars to describe traversals over semantics instead of syntax, conditional attribute grammars to describe the decisions to be made during the inference process, and ordered attribute grammars to express inference strategies. Visits, a concept from ordered attribute grammars, play an essential role in our work. A visit to a node in the abstract syntax tree represents a unit of evaluation. We make visits explicit in our AG descriptions so that we can express the order of evaluation and conditionally iterate visits. Moreover, we show that on top of visits, we can express decision points, and present a stepwise evaluation strategy that allows us to explore alternative choices until reaching a decision. Our work is a conservative extension of attribute grammars, and preserves their good aspects. We declaratively express properties of the evaluation order, while keeping the automatic scheduling of attribute computations. Our work integrates well with various attribute grammar extensions, such as parallel evaluation. In particular, our work facilitates an integration with dependently typed programming, which paves the way to prove and enforce the correctness of compilers described with attribute grammars.

[1]  Ileana Buhan,et al.  Cryptographic keys from noisy data, theory and applications , 2008 .

[2]  EM Elena Bortnik,et al.  Formal methods in support of SMC design , 2008 .

[3]  Benjamin C. Pierce,et al.  TinkerType: a language for playing with formal systems , 2003, Journal of Functional Programming.

[4]  Marinus J. Plasmeijer,et al.  Uniqueness Typing Simplified , 2008, IFL.

[5]  R. Boumen,et al.  Integration and test plans for complex manufacturing systems , 2007 .

[6]  Mark P. Jones,et al.  Functional Programming with Overloading and Higher-Order Polymorphism , 1995, Advanced Functional Programming.

[7]  Martijn van Veelen,et al.  Considerations on modeling for early detection of abnormalities in locally autonomous distributed systems , 2007 .

[8]  Rodney Farrow Automatic generation of fixed-point-finding evaluators for circular, but well-defined, attribute grammars , 1986, SIGPLAN '86.

[9]  Ivan S. Zapreev Model checking Markov chains : techniques and tools , 2008 .

[10]  Noam Chomsky,et al.  Three models for the description of language , 1956, IRE Trans. Inf. Theory.

[11]  Young-Joo Moon,et al.  Stochastic models for quality of service of component connectors , 2011 .

[12]  S. Doaitse Swierstra,et al.  Parallel Attribute Evaluation: Structure of Evaluators and Detection of Parallelism , 1990, WAGA.

[13]  S. Doaitse Swierstra,et al.  A Leaner Specification for GADTs , 2008, Trends in Functional Programming.

[14]  Bijan Arbab Compiling Circular Attribute Grammars Into Prolog , 1986, IBM J. Res. Dev..

[15]  Yves Métivier,et al.  Partial Commutation and Traces , 1997, Handbook of Formal Languages.

[16]  Eelco Visser,et al.  Generalized type-based disambiguation of meta programs with concrete object syntax , 2005, GPCE'05.

[17]  Iris Loeb Natural Deduction, Sharing By Presentation , 2007 .

[18]  S. Doaitse Swierstra,et al.  Attribute grammars in the functional style , 1998, Systems Implementation 2000.

[19]  Ricardo Corin,et al.  Analysis Models for Security Protocols , 2006 .

[20]  A. L. de Groot,et al.  Practical Automaton proofs in PVS , 2000 .

[21]  Robert Brijder,et al.  Models of natural computation : gene assembly and membrane systems , 2008 .

[22]  Ulf Norell Dependently typed programming in Agda , 2009, TLDI '09.

[23]  Cjf Cas Cremers Scyther : semantics and verification of security protocols , 2006 .

[24]  S. Doaitse Swierstra,et al.  Abstract Interpretation of Functional Programs using an Attribute Grammar System , 2009, Electron. Notes Theor. Comput. Sci..

[25]  Laurie J. Hendren,et al.  SableCC, an object-oriented compiler framework , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[26]  Scott Kipling Warren The coroutine model of attribute grammar evaluation. , 1976 .

[27]  Bryan O'Sullivan,et al.  Real World Haskell , 2008 .

[28]  R. Bakhshi Gossiping Models : Formal Analysis of Epidemic Protocols , 2011 .

[29]  Tim K. Cocx,et al.  Metrics and visualisation for crime analysis and genomics , 2005 .

[30]  Didier Parigot,et al.  Integrating Natural Semantics and Attribute Grammars : the Minotaur System , 1993 .

[31]  Tingting Han,et al.  Diagnosis, Synthesis and Analysis of Probabilistic Models , 2009, Ausgezeichnete Informatikdissertationen.

[32]  João Saraiva,et al.  Lrc - A Generator for Incremental Language-Oriented Tools , 1998, International Conference on Compiler Construction.

[33]  Juan Visente Guillen Scholten,et al.  Mobile Channels for Exogenous Coordination of Distributed Systems: Semantics, Implementation and Composition , 2007 .

[34]  Jens R. Calamé,et al.  Testing reactive systems with data: enumerative methods and constraint solving , 2008 .

[35]  Johan Jeuring,et al.  Merging Monads and Folds for Functional Programming , 1995, Advanced Functional Programming.

[36]  Edwin Brady,et al.  IDRIS ---: systems programming meets full dependent types , 2011, PLPV '11.

[37]  Amr Sabry,et al.  Backtracking, interleaving, and terminating monad transformers: (functional pearl) , 2005, ICFP '05.

[38]  M Muhammad Atif,et al.  Formal modeling and verification of distributed failure detectors , 2011 .

[39]  S. Doaitse Swierstra,et al.  Combinator Parsing: A Short Tutorial , 2009, LerNet ALFA Summer School.

[40]  van Pja Paul Tilburg From computability to executability : a process-theoretic view on automata theory , 2011 .

[41]  T. D. Vu,et al.  Semantics and applications of process and program algebra , 2007 .

[42]  G Giovanni Russello,et al.  Separation and adaptation of concerns in a shared data space , 2006 .

[43]  James Cheney,et al.  First-Class Phantom Types , 2003 .

[44]  M. J. de Mol,et al.  Reasoning about functional programs : Sparkle, a proof assistant for Clean , 2009 .

[45]  Ken Kennedy,et al.  Automatic generation of efficient evaluators for attribute grammars , 1976, POPL.

[46]  van Mj Muck Weerdenburg,et al.  Efficient rewriting techniques , 2009 .

[47]  Bahareh Badban,et al.  Verification Techniques for Extensions of Equality Logic , 2006 .

[48]  A. Morali,et al.  IT architecture-based confidentiality risk assessment in networks of organizations , 2011 .

[49]  S. Georgievska Probability and Hiding in Concurrent Processes ( thesis abstract ) , 2011 .

[50]  Sebastiaan Gijsbert Marinus Cornelissen,et al.  Evaluating Dynamic Analysis Techniques for Program Comprehension , 2009 .

[51]  Jurriaan Hage,et al.  Scripting the type inference process , 2003, ICFP '03.

[52]  Mohammed G. Khatib MEMS-Based Storage Devices : Integration in Energy-Constrained Mobile Systems , 2009 .

[53]  Eelco Dolstra,et al.  The purely functional software deployment model , 2006 .

[54]  Annette Bieniusa,et al.  DOM Transactions for Testing JavaScript , 2010, TAIC PART.

[55]  B. J. Arnoldus,et al.  An illumination of the template enigma : software code generation with templates , 2011 .

[56]  A. Rodriguez Yakushev,et al.  Towards Getting Generic Programming Ready for Prime Time , 2009 .

[57]  Thomas Bäck,et al.  Mixed-integer evolution strategies for parameter optimization and their applications to medical image analysis , 2005 .

[58]  Sebastian Fischer,et al.  Purely functional lazy non-deterministic programming , 2009, Journal of Functional Programming.

[59]  Torbjörn Ekman,et al.  The jastadd extensible java compiler , 2007, OOPSLA.

[60]  D. Costa Formal models for component connectors , 2010 .

[61]  Hugo Jonker,et al.  Security matters : privacy in voting and fairness in digital exchange , 2009 .

[62]  Donald E. Knuth,et al.  The Genesis of Attribute Grammars , 1990, WAGA.

[63]  Jukka Paakki,et al.  PROFIT: A System Integrating Logic Programming and Attribute Grammars , 1991, PLILP.

[64]  Meng Wang,et al.  The visitor pattern as a reusable, generic, type-safe component , 2008, OOPSLA.

[65]  Peter Verbaan,et al.  The Computational Complexity of Evolving Systems , 2006 .

[66]  Rodney Farrow Sub-protocol-evaluators for attribute grammars , 1984, SIGPLAN '84.

[67]  Anton Wijs,et al.  Silent steps in transition systems and Markov chains , 2007 .

[68]  H. Hansen Coalgebraic Modelling : Applications in Automata theory and Modal logic , 2009 .

[69]  Simon Peyton Jones,et al.  FPH: first-class polymorphism for Haskell , 2008, ICFP 2008.

[70]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[71]  Jeroen Doumen,et al.  Searching in encrypted data , 2004 .

[72]  Ralph E. Johnson,et al.  Design Patterns: Abstraction and Reuse of Object-Oriented Design , 1993, ECOOP.

[73]  M. J. Walsteijn,et al.  Attribute grammars in Prolog , 1986 .

[74]  S. Doaitse Swierstra,et al.  Stepwise evaluation of attribute grammars , 2011, LDTA.

[75]  van Mf Marcel Amstel,et al.  Assessing and improving the quality of model transformations , 2012 .

[76]  Kari-Jouko Räihä,et al.  Testing attribute grammars for circularity , 1982, Acta Informatica.

[77]  Anton Wijs,et al.  What to do next? Analysing and optimising system behaviour in time , 2007 .

[78]  Thom W. Frühwirth,et al.  Theory and Practice of Constraint Handling Rules , 1998, J. Log. Program..

[79]  Jasen Markovski,et al.  Real and stochastic time in process algebras for performance evaluation , 2008 .

[80]  Raluca Marin-Perianu,et al.  Wireless Sensor Networks in Motion - Clustering Algorithms for Service Discovery and Provisioning , 2008 .

[81]  John Hughes Programming with Arrows , 2004, Advanced Functional Programming.

[82]  S. Doaitse Swierstra,et al.  Higher order attribute grammars , 1989, PLDI '89.

[83]  Marcin Czenko,et al.  TuLiP : reshaping trust management , 2009 .

[84]  Somayeh Malakuti Khah Olun Abadi Event composition model: achieving naturalness in runtime enforcement , 2011 .

[85]  Michael Hanus,et al.  The Integration of Functions into Logic Programming: From Theory to Practice , 1994, J. Log. Program..

[86]  Farhad Arbab,et al.  Model Checking of Component Connectors , 2007, 31st Annual International Computer Software and Applications Conference (COMPSAC 2007).

[87]  Eric Van Wyk,et al.  Using Verified Data-Flow Analysis-based Optimizations in Attribute Grammars , 2007, Electron. Notes Theor. Comput. Sci..

[88]  S. Doaitse Swierstra,et al.  Ruler: Programming Type Rules , 2006, FLOPS.

[89]  S. Doaitse Swierstra,et al.  Visitor-based Attribute Grammars with Side Effect , 2011, Electron. Notes Theor. Comput. Sci..

[90]  K. Tsirogiannis,et al.  Analysis of flow and visibility on triangulated terrains , 2011 .

[91]  S. Doaitse Swierstra,et al.  A lean specification for GADTs: system F with first-class equality proofs , 2010, High. Order Symb. Comput..

[92]  Karl-Filip Faxén,et al.  A static semantics for Haskell , 2002, Journal of Functional Programming.

[93]  Lennart C. L. Kats,et al.  Building Blocks for Language Workbenches , 2011 .

[94]  Ling Cheung,et al.  Reconciling nondeterministic and probabilistic choices , 2006 .

[95]  Mohammad Ali Abam New data structures and algorithms for mobile data , 2007 .

[96]  Yves Bertot,et al.  A Short Presentation of Coq , 2008, TPHOLs.

[97]  Ichiro Hasuo,et al.  Tracing Anonymity with Coalgebras , 2008 .

[98]  Maya Gokhale,et al.  Parallel Evaluation of Attribute Grammars , 1992, IEEE Trans. Parallel Distributed Syst..

[99]  Nikolay Kavaldjiev,et al.  A run-time reconfigurable Network-on-Chip for streaming DSP applications , 2006 .

[100]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[101]  Janet Walz Extending attribute grammar and type inference algorithms , 1989 .

[102]  Anthony M. Sloane,et al.  Decorated Attribute Grammars . Attribute Evaluation Meets Strategic Programming ( Extended Technical Report ) , 2008 .

[103]  S. Doaitse Swierstra,et al.  Efficient Incremental Evaluation of Higher order Attribute Grammars , 1991, PLILP.

[104]  Anthony M. Sloane,et al.  A Pure Object-Oriented Embedding of Attribute Grammars , 2010, LDTA.

[105]  Martin Bravenboer,et al.  Exercises in Free Syntax. Syntax Definition, Parsing, and Assimilation of Language Conglomerates , 2003 .

[106]  Eric Van Wyk,et al.  Integrating Attribute Grammar and Functional Programming Language Features , 2011, SLE.

[107]  Conor McBride,et al.  Epigram: Practical Programming with Dependent Types , 2004, Advanced Functional Programming.

[108]  John Tang Boyland,et al.  Conditional attribute grammars , 1996, TOPL.

[109]  Yanjing Wang,et al.  Epistemic Modelling and Protocol Dynamics , 2010 .

[110]  Flavio D. Garcia Formal and Computational Cryptography: Protocols, Hashes and Commitments , 2008 .

[111]  Karina R. Olmos Joffré Strategies for Context Sensitive Program Transformation , 2009 .

[112]  Marcel Kyas,et al.  Verifying OCL specifications of UML models: tool support and compositionakity , 2006 .

[113]  Yves Bertot Coq in a Hurry , 2006 .

[115]  Eelco Visser,et al.  Disambiguation Filters for Scannerless Generalized LR Parsers , 2002, CC.

[116]  Alfred V. Aho,et al.  Translations on a context free grammar , 1969, STOC.

[117]  Lacramioara Astefanoaei,et al.  An executable theory of multi-agent systems refinement , 2011 .

[118]  Arjen van Weelden,et al.  Putting Types To Good Use , 2007 .

[119]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[120]  Bastiaan Stephan Graaf,et al.  Model-Driven Evolution of Software Architectures , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[121]  Harmen Kastenberg Graph-based software specification and verification , 2008 .

[122]  M. T. de Berg,et al.  Multi-functional geometric data structures , 2003 .

[123]  M. G. van der Horst,et al.  Scalable block processing algorithms , 2008 .

[124]  Dmitri Jarnikov,et al.  QoS framework for video streaming in home networks , 2007 .

[125]  S. Doaitse Swierstra,et al.  Polish parsers, step by step , 2003, ICFP '03.

[126]  A. J. Markvoort Towards hybrid molecular simulations , 2006 .

[127]  Gürcan Gülesir,et al.  Evolvable Behavior Specifications Using Context-Sensitive Wildcards , 2008 .

[128]  J. van den Berg,et al.  Reasoning about Java programs in PVS using JML , 2009 .

[129]  Sebastian Fischer,et al.  Transforming Functional Logic Programs into Monadic Functional Programs , 2010, WFLP.

[130]  Tomas Krilavicius,et al.  Hybrid Techniques for Hybrid Systems , 2006 .

[131]  Andrew W. Appel,et al.  Modern Compiler Implementation in ML , 1997 .

[132]  Emmanuele Zambon,et al.  Towards optimal IT availability planning: methods and tools , 2011 .

[133]  Scw Bas Ploeger,et al.  Improved verification methods for concurrent systems , 2009 .

[134]  Marko C. J. D. van Eekelen,et al.  Graph Rewriting Semantics for Functional Programming Languages , 1996, CSL.

[135]  Z Zvezdan Protic,et al.  Configuration management for models : generic methods for model comparison and model co-evolution , 2011 .

[136]  Daan Leijen,et al.  Helium, for learning Haskell , 2003, Haskell '03.

[137]  Hasan Sözer,et al.  Architecting Fault-Tolerant Software Systems , 2009 .

[138]  Joost Engelfriet,et al.  Tree-Walking Pebble Automata , 1999, Jewels are Forever.

[139]  Joe B. Wells,et al.  Typability and Type Checking in System F are Equivalent and Undecidable , 1999, Ann. Pure Appl. Log..

[140]  M. Torabi Dashti,et al.  Keeping Fairness Alive : Design and formal verification of optimistic fair exchange protocols , 2008 .

[141]  Donald E. Knuth,et al.  Semantics of context-free languages , 1968, Mathematical systems theory.

[142]  Tom Ridge,et al.  Ott: Effective tool support for the working semanticist , 2010, J. Funct. Program..

[143]  S. Doaitse Swierstra,et al.  Iterative type inference with attribute grammars , 2010, GPCE '10.

[144]  Tobias Nipkow,et al.  The Isabelle Framework , 2008, TPHOLs.

[145]  de A. Bruin,et al.  Service-oriented discovery of knowledge : foundations, implementations and applications , 2010 .

[146]  S. D. Swierstra,et al.  Exploiting Type Annotations , 2006 .

[147]  Laura Brandán Briones,et al.  Theories for Model-based Testing: Real-time and Coverage , 2007 .

[148]  Ka Lok Man,et al.  Formal specification and analysis of hybrid systems , 2006 .

[149]  Richard S. Bird Using circular programs to eliminate multiple traversals of data , 2004, Acta Informatica.

[150]  John Launchbury,et al.  Recursive monadic bindings , 2000, ICFP '00.

[151]  C. J. Boogerd,et al.  Focusing Automatic Code Inspections , 2010 .

[152]  Atze Dijkstra Stepping through Haskell , 2000 .

[153]  Eric Van Wyk,et al.  Silver: An extensible attribute grammar system , 2008, Sci. Comput. Program..

[154]  J. Kwisthout,et al.  The Computational Complexity of Probabilistic Networks , 2009 .

[155]  de Hayco Jong Flexible heterogeneous software systems , 2007 .

[156]  Martijn Warnier,et al.  Language based security for Java and JML , 2006 .

[157]  Damiano Bolzoni,et al.  Revisiting Anomaly-based Network Intrusion Detection Systems , 2009 .

[158]  Uwe Kastens,et al.  Improvements of an incremental evaluation algorithm for ordered attribute grammars , 1988, SIGP.

[159]  Eric Van Wyk,et al.  Forwarding in Attribute Grammars for Modular Language Design , 2002, CC.

[160]  Bas Basten,et al.  Ambiguity Detection for Programming Language Grammars , 2011 .

[161]  J. K. Berendsen,et al.  Abstraction, prices and probability in model checking timed automata , 2010 .

[162]  M. D. Berg,et al.  Optimal Geometric Data Structures , 2007 .

[163]  Ralf Hinze,et al.  Deriving backtracking monad transformers , 2000, ICFP '00.

[164]  T. van der Storm Component-based configuration, integration and delivery , 2003 .

[165]  S. Doaitse Swierstra,et al.  The architecture of the Utrecht Haskell compiler , 2009, Haskell.

[166]  Ali Mesbah,et al.  Analysis and Testing of Ajax-based Single-page Web Applications , 2009 .

[167]  Donald E. Knuth Semantics of context-free languages: Correction , 2005, Mathematical systems theory.

[168]  Marius Adrian Marin,et al.  An Integrated System to Manage Crosscutting Concerns in Source Code , 2008 .

[169]  B. Gebremichael-Tesfagiorgis,et al.  Expressivity of Timed Automata Models , 2006 .

[170]  Gérard P. Huet,et al.  The Zipper , 1997, Journal of Functional Programming.

[171]  Siegfried Nijssen Mining Structured Data , 2006 .

[172]  A Adam Koprowski,et al.  Termination of rewriting and its certification , 2004 .

[173]  Christian Krause,et al.  Reconfigurable Component Connectors , 2011 .

[174]  Peter Dybjer,et al.  Dependent Types at Work , 2009, LerNet ALFA Summer School.

[175]  João Saraiva Component-Based Programming for Higher-Order Attribute Grammars , 2002, GPCE.

[176]  Trevor Jim What are principal typings and what are they good for? , 1996, POPL '96.

[177]  叶大兴,et al.  On Parallel Evaluation of Ordered Attribute Grammars , 1991 .

[178]  Joost Engelfriet,et al.  Passes, sweeps, and visits in attribute grammars , 1989, JACM.

[179]  de Ism Ivo Jong Integration and test strategies for complex manufacturing machines , 2008 .

[180]  Martijn M. Schrage,et al.  Proxima: a presentation-oriented editor for structured documents , 2000 .

[181]  E Elena Mumford,et al.  Drawing graphs for cartographic applications , 2008 .

[182]  Carsten Schürmann,et al.  The Twelf Proof Assistant , 2009, TPHOLs.

[183]  U Uzma Khadim,et al.  Process algebras for hybrid systems : comparison and development , 2008 .

[184]  Pascal Eugene Alois Dürr Resource-based verification for robust composition of aspects , 2008 .

[185]  Ross Paterson,et al.  A new notation for arrows , 2001, ICFP '01.

[186]  Miguel E. Andrés,et al.  Quantitative Analysis of Information Leakage in Probabilistic and Nondeterministic Systems , 2011, ArXiv.

[187]  Magiel Bruntink,et al.  Renovation of idiomatic crosscutting concerns in embedded systems , 2005 .

[188]  Daan Leijen,et al.  Flexible types: robust type inference for first-class polymorphism , 2009, POPL '09.

[189]  Sabine Glesner,et al.  Using many-sorted natural semantics to specify and generate semantic analysis , 1998, Systems Implementation 2000.

[190]  Chris D. Marlin Coroutines: A Programming Methodology, a Language Design and an Implementation , 1980, Lecture Notes in Computer Science.

[191]  Aad Mathssen,et al.  Logical Calculi for Reasoning with Binding , 2008 .

[192]  R.S.S. O'Connor,et al.  Incompleteness & completeness : formalizing logic and analysis in type theory , 2005 .

[193]  Marcel Verhoef,et al.  Modeling and validating distributed embedded real-time control systems , 2009 .

[194]  J. Ketema,et al.  Bohm-Like Trees for Rewriting , 2006 .

[195]  Cfj Christian Lange,et al.  Assessing and improving the quality of modeling : a series of empirical studies about the UML , 2007 .

[196]  Tom Staijen,et al.  Graph-based Specification and Verification for Aspect-Oriented Languages , 2010 .

[197]  M. T. de Berg,et al.  Algorithms for Fat Objects: Decompositions and Applications , 2004 .

[198]  AJ Arjan Mooij,et al.  Constructive formal methods and protocol standardization , 2006 .

[199]  Martijn Hendriks,et al.  Model checking timed automata : techniques and applications , 2006 .

[200]  Wolter Pieters,et al.  La volonté machinale: understanding the electronic voting controversy , 2008 .

[201]  D. Graaf,et al.  Mining semi-structured data, theoretical and experimental aspects of pattern evaluation , 2008 .

[202]  Jens Palsberg,et al.  The essence of the Visitor pattern , 1998, Proceedings. The Twenty-Second Annual International Computer Software and Applications Conference (Compsac '98) (Cat. No.98CB 36241).

[203]  Stephanie Kemper,et al.  Modelling and analysis of real-time coordination patterns , 2011 .

[204]  Larry G. Jones,et al.  Efficient evaluation of circular attribute grammars , 1990, TOPL.

[205]  Hendrik Michaël van der Bijl,et al.  On changing models in model-based testing , 2011 .

[206]  Bastiaan Heeren,et al.  Top quality type error Messages , 2005 .

[207]  S. Doaitse Swierstra,et al.  Typing Haskell with an Attribute Grammar , 2004, Advanced Functional Programming.

[208]  Mari Antonius Cornelis Dekker,et al.  Flexible Access Control for Dynamic Collaborative Environments , 2009 .

[209]  Uwe Kastens,et al.  Ordered attributed grammars , 1980, Acta Informatica.

[210]  Mohammad Mahdi Jaghoori,et al.  Time At Your Service: Schedulability Analysis of Real-Time and Distributed Services , 2010 .

[211]  Daniel M. Yellin,et al.  Composable attribute grammars: support for modularity in translator design and implementation , 1992, POPL '92.

[212]  Didier Parigot,et al.  Internals and Externals of the FNC-2 Attribute Grammar System , 1991, Attribute Grammars, Applications and Systems.

[213]  Chris Okasaki,et al.  Purely functional data structures , 1998 .

[214]  Jurriaan Hage,et al.  A generic usage analysis with subeffect qualifiers , 2007, ICFP '07.

[215]  Görel Hedin,et al.  Circular reference attributed grammars - their evaluation and applications , 2007, Sci. Comput. Program..

[216]  José Proença,et al.  Synchronous Coordination of Distributed Components , 2011 .

[217]  Peter Norvig,et al.  Artificial Intelligence: A Modern Approach , 1995 .

[218]  John C. Reynolds Definitional Interpreters for Higher-Order Programming Languages , 1998, High. Order Symb. Comput..

[219]  Gary T. Leavens,et al.  Typechecking and modules for multi-methods , 1994, OOPSLA 1994.

[220]  Marko C. J. D. van Eekelen,et al.  Theorem Proving for Functional Programmers , 2001, IFL.

[221]  S. Doaitse Swierstra,et al.  Attribute grammars fly first-class: how to do aspect oriented programming in Haskell , 2009, ICFP.

[222]  Ronald Middelkoop,et al.  Capturing and exploiting abstract views of states in OO verification , 2011 .

[223]  Robert J. Simmons,et al.  SASyLF: an educational proof assistant for language theory , 2008, FDPE '08.

[224]  RH Rudolf Mak,et al.  Design and performance analysis of data-independent stream processing systems , 2008 .