Simple algebraic data types for C

Adt is a simple tool in the spirit of Lex and Yacc that makes monomorphic algebraic data types, polymorphic built‐in types like the list and an efficient form of pattern matching available in C programs. C programs built with ADTs typically use NULL pointers only to indicate don't care values, and not as sentinels. This reduces the scope for errors involving NULL pointers. The Adt tool generates runtime checks, which catch many of the remaining NULL pointer dereferences. The runtime checks may consume a significant amount of CPU time; hence they can be switched off once the program is suitably debugged. Copyright © 2011 John Wiley & Sons, Ltd.

[1]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[2]  Paul J. Deitel,et al.  C how to program , 1994 .

[3]  Konstantin Läufer,et al.  A Framework for Higher-Order Functions in C++ , 1995, COOTS.

[4]  William F. Clocksin,et al.  Programming in Prolog , 1987, Springer Berlin Heidelberg.

[5]  E. Christopher Lewis,et al.  SMART C: A Semantic Macro Replacement Translator for C , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[6]  J. Grosch,et al.  A Tool Box for Compiler Construction , 1990, CC.

[7]  Hans Toetenel TTT - A simple type-checked C language abstract data type generator , 1998, Systems Implementation 2000.

[8]  Frederick P. Brooks,et al.  The Mythical Man-Month: Essays on Softw , 1978 .

[9]  P. Klint,et al.  Efficient annotated terms , 2000 .

[10]  Christophe Ringeissen,et al.  A Pattern Matching Compiler for Multiple Target Languages , 2003, CC.

[11]  Michael Barr,et al.  Programming embedded systems - with C and GNU development tools: thinking inside the box: includes real-time and Linux examples (2. ed.) , 2006 .

[12]  William R. Bush,et al.  A static analyzer for finding dynamic programming errors , 2000, Softw. Pract. Exp..

[13]  Anthony Savidis The implementation of generic smart pointers for advanced defensive programming , 2004, Softw. Pract. Exp..

[14]  Richard S. Bird,et al.  Introduction to functional programming , 1988, Prentice Hall International series in computer science.

[15]  Hayco de Jong,et al.  Generation of abstract programming interfaces from syntax definitions , 2004, J. Log. Algebraic Methods Program..

[16]  Giulio Iannello Programming abstract data types, iterators and generic modules in C , 1990, Softw. Pract. Exp..

[17]  Robin Milner,et al.  Definition of standard ML , 1990 .

[18]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[19]  Andrew W. Appel,et al.  The Zephyr Abstract Syntax Description Language , 1997, DSL.

[20]  Pierre-Etienne Moreau,et al.  Generator of efficient strongly typed abstract syntax trees in Java , 2005, IEE Proc. Softw..

[21]  P. Kidwell,et al.  The mythical man-month: Essays on software engineering , 1996, IEEE Annals of the History of Computing.

[22]  Martin Odersky,et al.  Programming in Scala , 2008 .

[23]  Jr. Frederick P. Brooks,et al.  The mythical man-month (anniversary ed.) , 1995 .

[24]  Martin Odersky,et al.  Pizza into Java: translating theory into practice , 1997, POPL '97.

[25]  Baxter F. Womack,et al.  Software error classification using Purify , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[26]  Yannis Smaragdakis,et al.  Functional programming in C++ , 2000, ICFP '00.

[27]  Jeffrey Overbey,et al.  Generating Rewritable Abstract Syntax Trees , 2009, SLE.