• 词法语法分析在浏览器中的作用

    生成解析树的关键
    服务器君一共花费 16.464 ms 进行了 2 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    也许前面一小节谈到的什么 BNF,词法语法什么的可能理解得不是很透彻,接下来的几个小节里,我们再补充一些词法,语法相关的知识。

    首先我们需要了解词法分析语法分析的作用与位置,他们在浏览器里的作用是什么。

    我们知道,浏览器的作用就是将源码变成解析树,再渲染出来。而将将源码变成解析树这个过程,就是词法语法分析的重要位置了。

    解析可以分为两个子过程:

    • 词法分析:将输入分解为符号,符号是语言的词汇表——基本有效单元的集合。
    • 语法分析:对语言应用语法规则。

    我们前面谈到了 HTML 无法用常规的自上而下或自下而上的解析器进行解析,具体可以参看 浏览器的HTML解析算法。但是 CSS 的解析不同,CSS 是上下文无关文法,如果一个语言的文法是上下文无关的,则它可以用正则解析器来解析。对上下文无关文法的一个直观的定义是,该文法可以用BNF来完整的表达。

    解析器类型分为两种:

    • 自顶向下解析:查看语法的最高层结构并试着匹配其中一个;
    • 自底向上解析:从输入开始,逐步将其转换为语法规则,从底层规则开始直到匹配高层规则。

    比如Webkit就是使用自底向上的解析器,而Gecko使用自顶向下的解析器。

    接下来我们再慢慢深入探讨一些关于解析的事情。

更多 推荐条目

Welcome to NowaMagic Academy!

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

本章最新发布
随机专题
  1. [计算机算法] 从双端队列引出的卡特兰数 3 个条目
  2. [Python程序设计] Django模板系统 11 个条目
  3. [移动开发] Android加载器Loaders 5 个条目
  4. [Python程序设计] 从PHP到Python 3 个条目
  5. [PHP程序设计] PHP里的引用 5 个条目
  6. [Python程序设计] Django Web环境配置 2 个条目
  7. [PHP程序设计] PHP扩展模块安装 1 个条目
  8. [移动开发] Android属性系统Property 9 个条目
  9. [PHP程序设计] PHP数组的遍历 7 个条目
  10. [PHP程序设计] 声明式编程范式 12 个条目
  11. [数据库技术] 数据库范式篇 5 个条目
  12. [Linux操作系统] CentOS上使用EPEL Repository 2 个条目
窗口 -- [八点]