美文网首页
L1 Intro to Compilers

L1 Intro to Compilers

作者: 薛家四少 | 来源:发表于2016-03-29 09:44 被阅读0次

    Intro to Compilers

    Compilers

    Interpreters

    FORTRAN 1

    • The first Compiler
      • Huge impact o computer science.
    • Led to an enormous body of theoretical work
    • Modern compilers preserve the outline of FORTRAN 1

    Structure of FORTRAN 1

    1. Lexical Analysis(词法分析)
    2. Parsing (语法分析)
    3. Semantic Analysis (语义分析)
    4. Optimization(优化)
    5. Code Generation

    First step: recognize words.

    smallest unit above letters
    
        This is a sentence.
    
    • Lexical analysics divides program text into "words" or "tokens"

        if x == y then z = 1;
        
        else z = 2;
      
    • Parsing = Diagrmming Sentences.

      • The diagram is a tree.
    • Once sentence structure is understood, we can try to understand "meaning"
      • This is too hard
    • Compilers perform limited semantic analysis to catch inconsistencies.

    • Expmple: Jack said Jerry left his assignment at home.

    • Even worse: Jack said Jack left his assignment at home?

    • Question? Which one "his" is referring to whether it's jack or it's Jerry.

    • Programming languages define strict rules to avoid such ambiguities.

        int main {
            int jack = 3;
            {
                int jack = 4;
                cout << jack;
            }
        }
      

    Compilers perform many semantic checks besides variable bindings.

    • Example: Jack left her homework at home.
    • A "type mismatch" between her and jack; we know they are different people.

    Optimization has no strong counterpart in English.

    • But a little bit like editing.

    Automatically modify programs so that they

    • Run faster
    • Use less memory

    X = Y * 0 is the same as X = 0

    • NO!
    • valid for integers
    • invalid for floating point (NaN)
    • NaN, Standing for Not a Number, is a numeric data type value representing an undefined or unrepresentable value.
    • NaN * 0 = NaN

    Produces assembly code (usually)

    A translation into another language

    • Analogous to human translation

    • The overall structure of almost every compiler adheres to our outline

    • The proportions has changed since FORTRAN

    Compare Compiler

    相关文章

      网友评论

          本文标题:L1 Intro to Compilers

          本文链接:https://www.haomeiwen.com/subject/zgqslttx.html