编译原理--引论

语言处理器

  • 编译器(Compiler):可阅读某一语言编写的程序,并将此语言程序翻译成目标语言编写的程序。
  • 解释器(Interpreter):不通过翻译的方式生成目标程序。解释器直接利用用户提供的输入执行源程序中指定的操作。
  • 对比:编译器产生的机器语言目标程序通常比一个解释器快。解释器错误诊断效果比编译器更好。

编译器结构

  • 词法分析(Lexical Analysis):读入组成源程序的字符流,并将它们组织成词素(lexme)的序列。对于每个词素,词法分析器产生形式如下的词法单元(token)作为输出:

    < token-name , attribute-value >

  • 语法分析(Syntax Analysis):使用由词法分析器生成的各个词法单元的第一个分量来创建树形的中间表示。常用表示方法是语法树(syntax tree)。

  • 语义分析(Semantic Analysis):使用语法树和符号表中的信息检查是否和语言定义的语义一致。语义分析中重要的一部分是类型检查。
  • 中间代码生成:生成一个明确的低级或类机器语言的。便于翻译为目标机器的语言。·
  • 代码优化:优化中间代码,以便生成更好的目标代码。
  • 代码生成:将源代码的中间表示形式映射到目标语言。代码生成的重要方面是合理分配寄存器以存放变量的值。

END ~

你可能感兴趣的:(编译原理)