gosub-browser - 一个 html5 分词器/解析器,希望能够发展成为一个浏览器

Created at: 2023-08-09 01:20:38
Language: Rust
License: MIT

GoSub:优化搜索和无限浏览的门户

编写浏览器和学习 rust 的微弱尝试。

注意:主分支中的代码目前不稳定,甚至可能无法编译。

                       _     
                      | |    
  __ _  ___  ___ _   _| |__  
 / _` |/ _ \/ __| | | | '_ \ 
| (_| | (_) \__ \ |_| | |_) |
 \__, |\___/|___/\__,_|_.__/ 
  __/ |  The Gateway to                    
 |___/   Optimized Searching and 
         Unlimited Browsing                    

大约

此存储库是 GoSub 浏览器项目的一部分。目前只有一个组件/存储库(这个),但这个想法是还有许多其他组件作为一个整体构成了一个成熟的浏览器。每个组件都可以作为独立的东西运行(即:html5解析器,css解析器等)。

将来,此组件(html5 解析器)将通过 API 接收字节流并输出事件流。这些事件将被下一个组件使用,依此类推,直到我们可以在窗口/用户代理中显示某些内容。这很可能是一个文本模式浏览器,但这个想法是有一个图形浏览器。

地位

这是一项正在进行的工作。目前的状态是解析器可以解析一些html5文档,但还远远没有准备好。主要目标是能够正确解析html5lib-tests存储库(https://github.com/html5lib/html5lib-tests)中的所有测试。一旦我们可以做到这一点,我们就可以尝试看看我们是否可以生成一个 DOM 树,然后我们可以开始考虑下一个组件(css 解析器)。

如何构建

该项目使用货物(https://doc.rust-lang.org/cargo/)。要构建项目,只需运行:

cargo build

这将创建以下二进制文件和库:

文件 类型 描述
go子引擎 自由 实际的 html5 解析器/分词器
gosub-browser .bin 虚拟浏览器(见下文)
parser_test .bin 解析器的测试套件
tokenizer_test .bin 分词器的测试套件

戈子引擎

这是实际的html5解析器/分词器。它是一个可以被其他项目使用的库。它不是一个独立的项目。它由gosub浏览器项目使用。

Gosub-browser

这是一个虚拟浏览器。它不是一个真正的浏览器,它只是一个测试项目,以查看解析器/分词器是否正常工作并尝试在命令行上解析给定的 url:

$ gosub-browser https://www.google.com

Parser_test

这是解析器的测试套件。它不是一个独立的项目。它由gosub引擎项目使用。你需要为 html5lib-test 指定目录才能运行,否则它将使用默认的目录 (./html5lib-tests)。

$ parser_test /path/to/html5lib-tests