Lecture 1 - 480/580 (compiler construction) Introductory Information (who I am, textbook, dates and times) Computer Science and Western Civilization talk; where translators fit in. bridge gap between people and machines. Spair - Whorf hypothesis, Turing tarpit arguments Why everybody should study compiler construction, even if they never build a compiler afterwards. ties lots of things you have learned about previously together: theory (finite automata, CFL) data structures modularization utilization of software tools Introduction to what a translator is the translators involved in the conventional (batch style) programming steps preprocessor - compiler - assembler - link/loader - machine code | parser - code generation In this class we will study only one type of translator, compilers for conventional ALGOL-like languages (Pascal, ADA, etc etc). As those of you who have taken 381 know, there are many other types of langauges. Translators for these are radically different from translators for ALGOL languages. There are also many other types of translators. other types of translators text formatters silicon compilers interfaces (database interface, operating system) visual programming languages? Steps in any translator 1. Recognize when input is available 2. Break input into individual components (lexical analysis) 3. merge individual pieces into meaningful structures (parsing) 4. process structures (semantic analysis) 5. produce output (code generation)