作为一名开发人员,我确信我并不孤单,我总是很好奇了解“幕后”是什么。对我来说,DOM 解析器是这种好奇心的榜首之一。我们都知道famous post 。我什至还拼凑了一些"O RLY?" ,出于暂时的需要和好奇。
然而,我与幕后人物见面的需求仍未得到满足。 DOM 解析器或任何结构化文档解析器如何解析文档?就我的中级 Web 应用程序开发人员的理解而言,它是递归字符串解析和状态保持逻辑的组合,与我自己的黑客尝试不同。
魔术师永远不应该泄露他们的 secret ,但是说真的,他把兔子藏在哪里了?
最佳答案
有一个完善的解析理论,以及无数的工具来支持它。一般来说,您一次查看每个字符,然后决定您迄今为止创建的字符何时构成一个 token 。然后,您查看这一系列标记,并决定标记序列何时构成更高级别的语法结构——在本例中为 HTML 元素。当您识别构造时,您会构建一棵节点树来表示它们 - 在本例中为 DOM 树。
那么您熟悉上下文无关语法以及编译器-编译器(例如 yacc、bison 及其更现代的对应版本)吗?如果您理解这些,DOM 解析器就不应该是一个谜。
关于regex - DOM 解析、结构化文档底层遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5532140/