• Produktbild: Writing Compilers and Interpreters
  • Produktbild: Writing Compilers and Interpreters

Writing Compilers and Interpreters A Software Engineering Approach

94,99 €

inkl. gesetzl. MwSt., Versandkostenfrei

Lieferung nach Hause

Beschreibung

Produktdetails

Einband

Taschenbuch

Erscheinungsdatum

01.09.2009

Verlag

John Wiley & Sons Inc

Seitenzahl

672

Maße (L/B/H)

23,5/19,1/4,7 cm

Gewicht

1582 g

Auflage

3rd edition

Sprache

Englisch

ISBN

978-0-470-17707-5

Beschreibung

Produktdetails

Einband

Taschenbuch

Erscheinungsdatum

01.09.2009

Verlag

John Wiley & Sons Inc

Seitenzahl

672

Maße (L/B/H)

23,5/19,1/4,7 cm

Gewicht

1582 g

Auflage

3rd edition

Sprache

Englisch

ISBN

978-0-470-17707-5

Herstelleradresse

Libri GmbH
Europaallee 1
36244 Bad Hersfeld
DE

Email: gpsr@libri.de

Kundinnen und Kunden meinen

0 Bewertungen

Informationen zu Bewertungen

Zur Abgabe einer Bewertung ist eine Anmeldung im Konto notwendig. Die Authentizität der Bewertungen wird von uns nicht überprüft. Wir behalten uns vor, Bewertungstexte, die unseren Richtlinien widersprechen, entsprechend zu kürzen oder zu löschen.

Die Bewertungen sind nach Format, Anzahl Sterne und Datum sortiert.

Verfassen Sie die erste Bewertung zu diesem Artikel

Helfen Sie anderen Kund*innen durch Ihre Meinung

Kundinnen und Kunden meinen

0 Bewertungen filtern

Die Leseprobe wird geladen.
  • Produktbild: Writing Compilers and Interpreters
  • Produktbild: Writing Compilers and Interpreters
  • Introduction xxi

    Chapter 1 Introduction 1

    Goals and Approach 1

    What Are Compilers and Interpreters? 2

    Comparing Compilers and Interpreters 4

    The Picture Gets a Bit Fuzzy 5

    Why Study Compiler Writing? 6

    Conceptual Design 6

    Syntax and Semantics 8

    Lexical, Syntax, and Semantic Analyses 10

    Chapter 2 Framework I: Compiler and Interpreter 11

    Goals and Approach 11

    Language-Independent Framework Components 12

    Front End 13

    Parser 16

    Intermediate Tier 34

    Back End 36

    Pascal-Specific Front End Components 37

    Pascal Parser 37

    Pascal Scanner 39

    A Front End Factory 41

    Initial Back End Implementations 43

    Interpreter 44

    A Back End Factory 45

    Program 2: Program Listings 46

    Chapter 3 Scanning 55

    Goals and Approach 55

    Program 3: Pascal Tokenizer 57

    Syntax Error Handling 65

    How to Scan for Tokens 72

    A Pascal Scanner 75

    Pascal Tokens 77

    Syntax Diagrams 80

    Word Tokens 81

    String Tokens 82

    Special Symbol Tokens 85

    Number Tokens 88

    Chapter 4 The Symbol Table 97

    Goals and Approach 97

    Symbol Table Conceptual Design 98

    The Symbol Table Stack 98

    Symbol Table Interfaces 100

    A Symbol Table Factory 105

    Symbol Table Implementation 107

    Program 4: Pascal Cross-Referencer I 113

    Chapter 5 Parsing Expressions and Assignment Statements 121

    Goals and Approach 121

    Syntax Diagrams 122

    Intermediate Code Conceptual Design 125

    Intermediate Code Interfaces 126

    An Intermediate Code Factory 129

    Intermediate Code Implementation 130

    Printing Parse Trees 135

    Parsing Pascal Statements and Expressions 141

    Parsing Statements 145

    Parsing the Compound Statement 148

    Parsing the Assignment Statement 149

    Parsing Expressions 151

    Program 5: Pascal Syntax Checker I 161

    Chapter 6 Interpreting Expressions and Assignment Statements 167

    Goals and Approach 167

    Runtime Error Handling 168

    Executing Assignment Statements and Expressions 170

    The Statement Executor Subclasses 170

    Executing Statements 173

    Executing the Compound Statement 175

    Executing the Assignment Statement 175

    Executing Expressions 177

    Program 6: Simple Interpreter I 184

    Chapter 7 Parsing Control Statements 189

    Goals and Approach 189

    Syntax Diagrams 190

    Error Recovery 191

    Program 7: Syntax Checker Ii 192

    Control Statement Parsers 193

    Parsing Pascal Control Statements 198

    Parsing the REPEAT Statement 198

    Parsing the WHILE Statement 202

    Parsing the FOR Statement 207

    Parsing the IF Statement 214

    Parsing the CASE Statement 219

    Chapter 8 Interpreting Control Statements 233

    Goals and Approach 233

    Program 8: Simple Interpreter Ii 233

    Interpreting Control Statements 234

    Executing a Looping Statement 236

    Executing the IF Statement 240

    Executing the SELECT Statement 241

    An Optimized SELECT Executor 245

    Chapter 9 Parsing Declarations 249

    Goals and Approach 249

    Pascal Declarations 250

    Types and the Symbol Table 253

    Type Specification Interfaces 253

    Pascal Type Specification Implementation 255

    A Type Factory 260

    Scope and the Symbol Table Stack 261

    How Identifiers Are Defined 266

    Predefined Types and Constants 268

    Parsing Pascal Declarations 271

    Parsing Constant Definitions 277

    Parsing Type Definitions and Type Specifications 283

    Parsing Variable Declarations 301

    Program 9: Pascal Cross-referencer II 306

    Chapter 10 Type Checking 331

    Goals and Approach 331

    Type Checking 331

    Type Checking Expressions 335

    Type Checking Control Statements 350

    Program 10: Pascal Syntax Checker III 358

    Chapter 11 Parsing Programs, Procedures, and Functions 371

    Goals and Approach 371

    Program, Procedure, and Function Declarations 372

    Nested Scopes and the Symbol Table Stack 375

    New Declarations Parser Subclasses 378

    Parsing a Program Declaration 382

    Parsing Procedure and Function Declarations 382

    Formal Parameter Lists 388

    Parsing Procedure and Function Calls 394

    Calls to Declared Procedures and Functions 398

    Calls to the Standard Procedures and Functions 400

    Actual Parameter Lists 408

    Program 11: Pascal Syntax Checker IV 418

    Chapter 12 Interpreting Pascal Programs 431

    Goals and Approach 431

    Runtime Memory Management 432

    The Runtime Stack and Activation Records 432

    The Runtime Display 436

    Recursive Calls 439

    Memory Management Interfaces and Implementation 440

    The Memory Factory 459

    Executing Statements and Expressions 460

    The Executor Superclass 461

    The Statement Executor 462

    The Assignment and Expression Executors 469

    Executing Procedure and Function Calls 478

    Parameter Passing 478

    Calling Procedures and Functions 478

    Program 12-1: Pascal Interpreter 493

    Chapter 13 An Interactive Source-Level Debugger 501

    Goals and Approach 501

    Machine-Level vs. Source-Level Debugging 502

    Debugger Architecture 503

    Runtime Data Input vs. Debugger Command Input 514

    Creating a Command-Line Debugger 516

    A Simple Command Language 517

    Displaying Values 522

    Parsing Variable Names 525

    Executing Commands 529

    Program 13-1: Command-Line Source-Level Debugger 540

    Chapter 14 Framework II: An Integrated Development Environment (IDE) 543

    Goals and Approach 544

    The IDE Window 544

    The Edit Window 545

    The Debug Window 545

    The Call Stack Window 547

    The Console Window 548

    Program 14: Pascal IDE 548

    The IDE Process and the Debugger Process 549

    The IDE Framework 549

    Interprocess Communication 550

    The Control Interface 560

    The Debugger Process 566

    Chapter 15 Jasmin Assembly Language and Code Generation for the Java Virtual Machine 577

    Goals and Approach 577

    Organization of the Java Virtual Machine 578

    The Class Area 578

    The Heap Area 579

    The Java Runtime Stack 579

    JVM Limitations 580

    The Jasmin Assembly Language 581

    Assembly Statements 581

    Program Structure 593

    Emitting Instructions 604

    Load and Store Instructions 607

    Data Manipulation Instructions 617

    Control Instructions 620

    Remaining Code Generation Methods 623

    Chapter 16 Compiling Programs, Assignment Statements, and Expressions 625

    Goals and Approach 625

    Compiling Programs 626

    Program Header 627

    Class Constructor 627

    Fields 627

    Main Method 628

    Code Generator Subclasses 629

    Compiling Procedures and Functions 635

    Parser and Symbol Table Changes 637

    Generating Code for Procedures and Functions 639

    Compiling Assignment Statements and Expressions 643

    The Statement Code Generator 643

    The Compound Statement Code Generator 645

    The Assignment Statement Code Generator 646

    The Expression Code Generator 648

    The Pascal Runtime Library 655

    Range Checking 655

    Pascal Text Input 656

    Building the Library 657

    Program 16-1: Pascal Compiler I 657

    Chapter 17 Compiling Procedure and Function Calls and String Operations 661

    Goals and Approach 661

    Compiling Procedure and Function Calls 662

    Value Parameters and VAR Parameters 664

    Calls to Declared Procedures and Functions 666

    Calls to the Standard Procedures and Functions 678

    The Pascal Runtime Library 691

    Pascal Input Text 692

    Building the Library 697

    Compiling Strings and String Assignments 698

    Allocating String Variables 698

    String Assignments 701

    String Comparisons 705

    Program 17-1: Pascal Compiler II 711

    Chapter 18 Compiling Control Statements, Arrays, and Records 719

    Goals and Approach 719

    Compiling Control Statements 719

    Looping Statements 720

    The IF Statement 730

    The SELECT Statement 735

    Compiling Arrays and Subscripted Variables 744

    Allocating Memory for Arrays 744

    Subscripted Variables in Expressions and Assignments 757

    Compiling Records and Record Fields 767

    Allocating Records 768

    Record Fields in Expressions and Assignments 772

    Program 18-1: Pascal Compiler III 777

    Chapter 19 Additional Topics 791

    Scanning 791

    Deterministic Finite Automata (DFA) 791

    Table-Driven Scanners 793

    Syntax Notation 796

    Backus-Naur Form (BNF) 796

    Extended BNF (EBNF) 797

    Grammars and Languages 797

    Parsing 798

    Top-Down Parsers 798

    Bottom-Up Parsers 798

    Context-Free and Context-Sensitive Grammars 800

    Code Generation 800

    Instruction Selection 800

    Instruction Scheduling 801

    Register Allocation 803

    Code Optimization 803

    Debugging Compilers and Optimizing Compilers 804

    Speed Optimizations 804

    Runtime Memory Management 807

    Heap and Stack 807

    Garbage Collection 808

    Compiling Object-Oriented Languages 809

    Method Overloading and Name Mangling 809

    Inheritance 810

    Virtual Methods 810

    Compiler-Compilers 811

    JavaCC 811

    Lex and Yacc 813

    Index 817