by Neng-Fa Zhou Compiler Construction CIS 707 Prof. Neng-Fa Zhou
by Neng-Fa Zhou What is a Compiler? Gcc gcc –S myprog.c Javap javap –c MyClass compiler source program target program error messages
by Neng-Fa Zhou Why Do We Learn Compilers? 4 Design and implement languages 4 Use languages more effectively 4 Many other application areas –Data (text, image, audio, video) processing –Information retrieval –Bio-informatics The principles and techniques of compiler writing are so pervasive that the ideas found in this book will be used many times in the career of a computer scientist.
by Neng-Fa Zhou The Context of a Compiler analysis synthesis
by Neng-Fa Zhou Analysis of Source Programs lexical analyzer syntax analyzer semantic analyzer source program tokens parse trees
by Neng-Fa Zhou Lexical Analysis tokens
by Neng-Fa Zhou Syntax Analysis parse tree
by Neng-Fa Zhou Semantic Analysis type checking type conversion
by Neng-Fa Zhou Symbol Table 4 There is a record for each identifier 4 The attributes include name, type, location, etc.
by Neng-Fa Zhou Synthesis of Object Code intermediate code generator code optimizer code generator parse tree & symbol table intermediate code optimized intermediate code target program
by Neng-Fa Zhou Intermediate Code Generation
by Neng-Fa Zhou Code Optimization
by Neng-Fa Zhou Code Generation
by Neng-Fa Zhou Interpreters and Compilers 4 The boundary between interpreters and compilers is becoming vague –Interpreters interpret intermediate forms of programs Parse trees (Basic, Tcl, and Pearl) Virtual machine code (Java, Lisp, and Prolog) 4 Native code compiler