Compiling with C# and Java

Preface Acknowledgements 1 Translators and Languages 2 Translator Classification and Structure 3 Compiler Development and Bootstrapping 4 Stack Machines 5 Language Specification 6 Development and Classification of Grammars 7 Deterministic Top-down Parsing 8 Parser and Scanner Construction 9 Syntax-directed Translation 10 Using Coco/R: Overview 11 Using Coco/R: Case Studies 12 A Parva Compiler: the Front End 13 A Parva Compiler: the Back End 14 A Parva Compiler: Functions and Parameters 15 A C#Minor Compiler: the Front End 16 A C#Minor Compiler: the Back End Appendix A Appendix B Appendix C Appendix D Bibliography Index

[1]  Niklaus Wirth,et al.  From modula to oberon , 1988, Softw. Pract. Exp..

[2]  Colin Stirling,et al.  Follow set error recovery , 1985, Softw. Pract. Exp..

[3]  Niklaus Wirth,et al.  Algorithms + Data Structures = Programs , 1976 .

[4]  Murray Hill,et al.  Yacc: Yet Another Compiler-Compiler , 1978 .

[5]  Friedrich L. Bauer,et al.  Report on the algorithmic language ALGOL 60 , 1960, Commun. ACM.

[6]  Jay Earley,et al.  A formalism for translator interactions , 1970, CACM.

[7]  John F. Wakerly Microcomputer architecture and programming , 1981 .

[8]  Heinz Dobler Top-down parsing in Coco-2 , 1991, SIGP.

[9]  Jim Holmes Object-oriented compiler construction , 1994 .

[10]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[11]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1959, Commun. ACM.

[12]  Kevin John Gough Syntax analysis and software tools , 1988, International computer science series.

[13]  Jason Bock CIL Programming: Under the Hood™ of .NET , 2002, Apress.

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

[15]  Arthur H. J. Sale The implementation of case statements in Pascal , 1981, Softw. Pract. Exp..

[16]  Robert Cailliau,et al.  How to avoid getting schlonked by Pascal , 1982, SIGP.

[17]  Julian Ullmann Compiling in Modula-2: A First Introduction to Classical Recursive Descent Compiling , 1994 .

[18]  Noam Chomsky,et al.  On Certain Formal Properties of Grammars , 1959, Inf. Control..

[19]  Ronald Mak Writing compilers and interpreters - an applied approach , 1991, Wiley professional computing.

[20]  Olivier Lecarme,et al.  Self‐compiling compilers: An appraisal of their implementation and portability , 1978, Softw. Pract. Exp..

[21]  Brian L. Meek The static semantics file , 1990, SIGP.

[22]  Russell W. Quong,et al.  LL and LR translators need k>1 lookahead , 1996, SIGP.

[23]  Niklaus Wirth,et al.  On the Design of Programming Languages , 1974, IFIP Congress.

[24]  Richard J. Cichelli Minimal perfect hash functions made simple , 1980, CACM.

[25]  Des Watson High-level languages and their compilers , 1989, International computer science series.

[26]  Andrew D. McGettrick The definition of programming languages , 1980 .

[27]  Niklaus Wirth,et al.  Algorithms & data structures , 1985 .

[28]  Hanspeter Moessenboeck,et al.  Coco/R - A Generator for Fast Compiler Front Ends , 1990 .

[29]  Josef Grosch Efficient and Comfortable Error Recovery in Recursive Descent Parsers , 1990, Struct. Program..

[30]  Salvatore Valenti,et al.  A modulus oriented hash function for the construction of minimal perfect tables , 1992, SIGP.

[31]  Rodney W. Topor,et al.  A note on error recovery in recursive descent parsers , 1982, SIGP.

[32]  J. P. Bennett Introduction to Compiling Techniques: A First Course Using ANSI C, Lex, and Yacc , 1996 .

[33]  Thomas W. Parsons Introduction to Compiler Construction , 1992 .

[34]  Charles N. Fischer,et al.  Crafting a Compiler with C , 1991 .

[35]  Murray Hill,et al.  Why Pascal is Not My Favorite Programming Language , 1981 .

[36]  Henry G. Dietz,et al.  PCCTS reference manual: version 1.00 , 1992, SIGP.

[37]  D. J. Robson,et al.  Steady‐state compilers , 1984, Softw. Pract. Exp..

[38]  Bjarne Stroustrup,et al.  The Design and Evolution of C , 1994 .

[39]  Arthur B. Maccabe Computer Systems: Architecture, Organization, and Programming , 1993 .

[40]  Per Brinch Hansen Programming a personal computer , 1982 .

[41]  Robert L. Bernstein Producing good code for the case statement , 1985, Softw. Pract. Exp..

[42]  Henk Alblas,et al.  Practice and principles of compiler building with C , 1996 .

[43]  K. John Gough,et al.  Evaluating the Java Virtual Machine as a Target for Languages Other Than Java , 2000, JMLC.

[44]  Bill Venners,et al.  Inside the Java Virtual Machine , 1997 .

[45]  David A. Watt Programming language syntax and semantics , 1991, Prentice Hall International Series in Computer Science.

[46]  Robert W. Sebesta,et al.  Programming Language Processors in Java: Compilers and Interpreters: AND Concepts of Programming Languages , 2000 .

[47]  Ceriel J. H. Jacobs,et al.  A programmer‐friendly LL(1) parser generator , 1988, Softw. Pract. Exp..

[48]  Friedrich L. Bauer,et al.  Revised report on the algorithm language ALGOL 60 , 1963, CACM.

[49]  John Elder Compiler construction - a recursive descent model , 1994, Prentice Hall international series in computer science.

[50]  David William Barron Pascal - The Language and its Implementation , 1981, Pascal - The Language and its Implementation.

[51]  Mark A. Taylor,et al.  Minimal perfect hash functions for reserved word lists , 1985, SIGP.

[52]  David A. Watt,et al.  Programming language design concepts , 2004 .

[53]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[54]  Jim Welsh,et al.  A draft description of Pascal , 1979, Softw. Pract. Exp..

[55]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[56]  David A. Watt,et al.  Programming Language Processors , 1993 .

[57]  K. J. Gough Stacking them up: a comparison of virtual machines , 2001 .

[58]  David A. Watt,et al.  Programming language concepts and paradigms , 1990, Prentice Hall International Series in Computer Science.

[59]  Joshua Engel Programming for the Java¿ Virtual Machine , 1999 .

[60]  Kathleen Jensen,et al.  Pascal-P Implementation Notes , 1981, Pascal - The Language and its Implementation.

[61]  George M. Mohay,et al.  Modula-2 - a second course in programming , 1988, Advances in computer science series.

[62]  Henri E. Bal,et al.  Programming language essentials , 1994, International computer science series.

[63]  John A. Trono A comparison of three strategies for computing letter oriented, minimal perfect hashing functions , 1995, SIGP.

[64]  Niklaus Wirth,et al.  What can we do about the unnecessary diversity of notation for syntactic definitions? , 1977, Commun. ACM.

[65]  Dines Bjørner,et al.  Formal specification and software development , 1982 .

[66]  Hanspeter Mössenböck,et al.  A compiler generator for microcomputers , 1989 .

[67]  Paul A. Bailes,et al.  A Rational Pascal , 1984, Aust. Comput. J..

[68]  Niklaus Wirth,et al.  Pascal-S: A Subset and its Implementation , 1981, Pascal - The Language and its Implementation.

[69]  Hanspeter Mössenböck,et al.  A Generator for Production Quality Compilers , 1990, CC.

[70]  Russell W. Quong,et al.  ANTLR: A predicated‐LL(k) parser generator , 1995, Softw. Pract. Exp..

[71]  Kenneth C. Louden Compiler Construction: Principles and Practice , 1997 .

[72]  K. N. King C Programming: A Modern Approach , 1996 .

[73]  Heinz Dobler,et al.  Coco-2: a new compiler compiler , 1990, SIGP.

[74]  Jim Welsh,et al.  A pascal compiler for ICL 1900 series computers , 1972, Softw. Pract. Exp..

[75]  Sampath Kannan,et al.  Correction to ‘producing good code for the case statement’ , 1994, Softw. Pract. Exp..

[76]  Patrick D. Terry,et al.  Programming language translation , 1986 .

[77]  H. Mössenböck Alex - A simple and efficient scanner generator , 1986 .

[78]  C. A. R. Hoare,et al.  An axiomatic definition of the programming language PASCAL , 1972, Acta Informatica.

[79]  Hanspeter Mössenböck,et al.  LL(1) Conflict Resolution in a Recursive Descent Compiler Generator , 2003, JMLC.

[80]  Peter N. van den Bosch,et al.  A bibliography on syntax error handling in context free languages , 1992, SIGP.

[81]  John L. Hennessy,et al.  Compilation of the Pascal case statement , 1982, Softw. Pract. Exp..

[82]  Dietrich Birngruber,et al.  .NET Application Development: with C#, ASP.NET, ADO.NET and Web Services , 2004 .

[83]  Patrick D. Terry,et al.  Compilers and compiler generators : an introduction with C++ , 1997 .

[84]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[85]  E. Schmidt,et al.  Lex—a lexical analyzer generator , 1990 .

[86]  Paul G. Sorenson,et al.  The Theory And Practice of Compiler Writing , 1985 .

[87]  Charles N. Fischer,et al.  Crafting a Compiler , 1988 .

[88]  John A. N. Lee The formal definition of the BASIC language , 1972, Comput. J..

[89]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[90]  Serge Lidin,et al.  Inside Microsoft .Net Il Assembler , 2002 .

[91]  R. Nigel Horspool,et al.  Practical Perfect Hashing , 1985, Comput. J..

[92]  Mike Rees,et al.  Practical compiling with Pascal-S , 1988 .

[93]  P. D. Terry Umbriel—another minimal programming language , 1995, SIGP.

[94]  STEVEN PEMBERTON Comments on an error‐recovery scheme by Hartmann , 1980, Softw. Pract. Exp..