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

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

    解析器和词法分析器

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

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

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

    从源文档到解析树

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

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

    翻译

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

    编译流程
更多 推荐条目

Welcome to NowaMagic Academy!

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

本章最新发布
随机专题
  1. [计算机算法] TAOCP与算法 12 个条目
  2. [PHP程序设计] Nginx基本操作释疑 7 个条目
  3. [移动开发] Android Studio的使用技巧 4 个条目
  4. [Python程序设计] Django架构流程分析 7 个条目
  5. [移动开发] Activity 初步知识 2 个条目
  6. [移动开发] Layout_weight属性解析 5 个条目
  7. [移动开发] 从代码角度去认识 Thread 9 个条目
  8. [移动开发] Android根基概念Context 8 个条目
  9. [Python程序设计] Python HTTP服务器 7 个条目
  10. [PHP程序设计] PHP扩展模块安装 1 个条目
  11. [移动开发] Android抽屉导航NavigationDrawer 5 个条目
  12. [移动开发] Android布局中的一些常用控件 2 个条目
窗口 -- [八点]