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

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

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

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

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

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

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

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

    解析器类型分为两种:

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

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

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

更多 推荐条目

Welcome to NowaMagic Academy!

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

本章最新发布
随机专题
  1. [运维管理] 防火墙原理与应用 5 个条目
  2. [移动开发] 使用support-v7 ActionBar前的那些坑 3 个条目
  3. [移动开发] 刷机与root相关 2 个条目
  4. [软件工程与项目管理] 浏览器的HTML解析器 8 个条目
  5. [智力开发与知识管理] 信息的类型与结构 9 个条目
  6. [移动开发] Android 开发调试工具 ADB 3 个条目
  7. [PHP程序设计] PHP中的Hash算法 3 个条目
  8. [软件工程与项目管理] 呈现树的构建 13 个条目
  9. [搜索引擎优化] 百度搜索引擎优化指南 3 个条目
  10. [智力开发与知识管理] 整体性学习策略 9 个条目
  11. [移动开发] Android布局基本知识 3 个条目
  12. [Python程序设计] Python语言概述 6 个条目
窗口 -- [博客]