1.

Record Nr.

UNINA9911006499903321

Autore

Scott Michael Lee <1959->

Titolo

Programming language pragmatics / / Michael L. Scott

Pubbl/distr/stampa

Amsterdam ; ; Boston, : Elsevier/Morgan Kaufmann Pub., c2009

ISBN

9786612120930

9781282120938

128212093X

9780080922997

0080922996

Edizione

[3rd ed.]

Descrizione fisica

1 online resource (941 p.)

Disciplina

005.13

Soggetti

Programming languages (Electronic computers)

Lingua di pubblicazione

Inglese

Formato

Materiale a stampa

Livello bibliografico

Monografia

Note generali

Description based upon print version of record.

Nota di bibliografia

Includes bibliographical references (p. 849-865) and index.

Nota di contenuto

Front Cover; Programming Language Pragmatics; Copyright; Table of Contents; Foreword; Preface; Part I: Foundations; Chapter 1. Introduction; 1.1 The Art of Language Design; 1.2 The Programming Language Spectrum; 1.3 Why Study Programming Languages?; 1.4 Compilation and Interpretation; 1.5 Programming Environments; 1.6 An Overview of Compilation; 1.6.1 Lexical and Syntax Analysis; 1.6.2 Semantic Analysis and Intermediate Code Generation; 1.6.3 Target Code Generation; 1.6.4 Code Improvement; 1.7 Summary and Concluding Remarks; 1.8 Exercises; 1.9 Explorations; 1.10 Bibliographic Notes

Chapter 2. Programming Language Syntax2.1 Specifying Syntax: Regular Expressions and Context-Free Grammars; 2.1.1 Tokens and Regular Expressions; 2.1.2 Context-Free Grammars; 2.1.3 Derivations and ParseTrees; 2.2 Scanning; 2.2.1 Generating a Finite Automaton; 2.2.2 Scanner Code; 2.2.3 Table-Driven Scanning; 2.2.4 Lexical Errors; 2.2.5 Pragmas; 2.3 Parsing; 2.3.1 Recursive Descent; 2.3.2 Table-DrivenTop-Down Parsing; 2.3.3 Bottom-Up Parsing; 2.3.4 Syntax Errors; 2.4 Theoretical Foundations; 2.5 Summary and Concluding Remarks; 2.6 Exercises; 2.7 Explorations; 2.8 Bibliographic Notes

Chapter 3. Names, Scopes, and Bindings3.1 The Notion of Binding



Time; 3.2 Object Lifetime and Storage Management; 3.2.1 Static Allocation; 3.2.2 Stack-Based Allocation; 3.2.3 Heap-Based Allocation; 3.2.4 Garbage Collection; 3.3 Scope Rules; 3.3.1 Static Scoping; 3.3.2 Nested Subroutines; 3.3.3 Declaration Order; 3.3.4 Modules; 3.3.5 ModuleTypes and Classes; 3.3.6 Dynamic Scoping; 3.4 Implementing Scope; 3.5 The Meaning of Names within a Scope; 3.5.1 Aliases; 3.5.2 Overloading; 3.5.3 Polymorphism and Related Concepts; 3.6 The Binding of Referencing Environments; 3.6.1 Subroutine Closures

3.6.2 First-ClassValues and Unlimited Extent3.6.3 Object Closures; 3.7 Macro Expansion; 3.8 Separate Compilation; 3.9 Summary and Concluding Remarks; 3.10 Exercises; 3.11 Explorations; 3.12 Bibliographic Notes; Chapter 4. Semantic Analysis; 4.1 The Role of the Semantic Analyzer; 4.2 Attribute Grammars; 4.3 Evaluating Attributes; 4.4 Action Routines; 4.5 Space Management for Attributes; 4.6 Decorating a SyntaxTree; 4.7 Summary and Concluding Remarks; 4.8 Exercises; 4.9 Explorations; 4.10 Bibliographic Notes; Chapter 5. Target Machine Architecture; Part II: Core Issues in Language Design

Chapter 6. Control Flow6.1 Expression Evaluation; 6.1.1 Precedence and Associativity; 6.1.2 Assignments; 6.1.3 Initialization; 6.1.4 Ordering within Expressions; 6.1.5 Short-Circuit Evaluation; 6.2 Structured and Unstructured Flow; 6.2.1 Structured Alternatives to goto; 6.2.2 Continuations; 6.3 Sequencing; 6.4 Selection; 6.4.1 Short-Circuited Conditions; 6.4.2 Case/Switch Statements; 6.5 Iteration; 6.5.1 Enumeration-Controlled Loops; 6.5.2 Combination Loops; 6.5.3 Iterators; 6.5.4 Generators in Icon; 6.5.5 Logically Controlled Loops; 6.6 Recursion; 6.6.1 Iteration and Recursion

6.6.2 Applicative- and Normal-Order Evaluation

Sommario/riassunto

As software rapidly becomes more complex and segmented, it is increasingly important for programmers to have references that can point out common underlying principles, provide guidance making about which of dozens of popular languages to learn, and explain the potentially dizzying jargon.For almost a decade, Michael Scott's classic book has been doing all of the above. His brilliant method of illuminating theoretical topics with practical implementation examples provides two-in-one coverage not found in any other text. After all, what good is knowing all the formalisms of a programmin