跳转到内容

Compiler 2013: Introduction by example

来自ACM Class Wiki

Source code

 a = b + 42

Character stream

 'a'   ' '   '='   ' '   'b'   ' '   '+'   ' '   '4'   '2'

Token stream

 (ID "a")
 (ASSIGN "=")
 (ID "b")
 (PLUS)
 (NUM 42)

Parse tree

   =
  / \
 a   +
    / \
   b  42

Annotated parse tree

     =
    / \
   a   +
 Int  / \
     b  42
   Int  Int

Continuation-passing style

 (+ b 42
   (λ (t1)
      (= a t1)))

Quadruples

 temp := b + 42
    a := temp

MIPS assembly

 lw   $t1, -8($fp)
 addi $t2, $t1, 42
 sw   $t2, -4($fp)