• 解析器、词法分析器与编译流程

    构建解析树
    服务器君一共花费 36.875 ms 进行了 3 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    解析器和词法分析器

    解析的过程可以分成两个子过程:词法分析和语法分析。

    • 词法分析是将输入内容分割成大量标记的过程。标记是语言中的词汇,即构成内容的单位。在人类语言中,它相当于语言字典中的单词。
    • 语法分析是应用语言的语法规则的过程。

    解析器通常将解析工作分给以下两个组件来处理:词法分析器(有时也称为标记生成器),负责将输入内容分解成一个个有效标记;而解析器负责根据语言的语法规则分析文档的结构,从而构建解析树。词法分析器知道如何将无关的字符(比如空格和换行符)分离出来。

    从源文档到解析树

    解析是一个迭代的过程。通常,解析器会向词法分析器请求一个新标记,并尝试将其与某条语法规则进行匹配。如果发现了匹配规则,解析器会将一个对应于该标记的节点添加到解析树中,然后继续请求下一个标记。

    如果没有规则可以匹配,解析器就会将标记存储到内部,并继续请求标记,直至找到可与所有内部存储的标记匹配的规则。如果找不到任何匹配规则,解析器就会引发一个异常。这意味着文档无效,包含语法错误。

    翻译

    很多时候,解析树还不是最终产品。解析通常是在翻译过程中使用的,而翻译是指将输入文档转换成另一种格式。编译就是这样一个例子。编译器可将源代码编译成机器代码,具体过程是首先将源代码解析成解析树,然后将解析树翻译成机器代码文档。

    编译流程
更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [PHP程序设计] htaccess 设置技巧 6 个条目
  2. [智力开发与知识管理] 学习编程为什么没会这么难? 7 个条目
  3. [软件工程与项目管理] 浏览器的HTML解析器 8 个条目
  4. [Python程序设计] Django Web环境配置 2 个条目
  5. [移动开发] Android布局基本知识 3 个条目
  6. [搜索引擎优化] 与百度权重有关的信息 2 个条目
  7. [PHP程序设计] fsockopen,curl与file_get_contents 12 个条目
  8. [Python程序设计] Tornado背景知识介绍 4 个条目
  9. [数据结构] 图的定义 1 个条目
  10. [移动开发] Android属性系统Property 9 个条目
  11. [软件工程与项目管理] 呈现树的构建 13 个条目
  12. [智力开发与知识管理] 超越整体性学习 5 个条目
窗口 -- [资讯]