【发布时间】:2012-05-15 19:22:48
【问题描述】:
解析 HTML 或 XML 文件后,我们可以得到 DOM 树。
解析 C、C++ 或 JavaScript 后,我们可以得到语法树。
请注意,语法树是基于指定有效 C/C++/JS 程序的上下文无关语法构建的。
但似乎 DOM 树只是由 HTML/XML 文件指定的纯层次结构。真的吗?这就是解析后进行Schema Validation的原因吗?这两种解析树的根本区别是什么?
【问题讨论】:
-
我的理解是 DOM 树(至少是 MS 为 C# 提供的)是一棵树,但具有相当大的块,例如“语句”作为叶子。有了这么大的块,人们就可以马虎地处理叶子,但仍然可以做一些有用的工作(例如,“显示类图”,它的模型已经足够好了)。但由于缺少细节,你无法对代码进行深入推理。
-
您的意思是语法树的抽象语法树(AST)吗?解析这个词是否意味着解析的严格定义,就像解析上下文无关语法一样,或者解析对于解析 HTML 和解析语法有两种不同的含义?
-
这里的语法树可以是抽象的(AST)或具体的。是的,HTML/XML 的“解析”与 C/C++、Java 等一般编程语言中的“解析”有不同的含义。
标签: parsing dom schema context-free-grammar concrete-syntax-tree