C++ 打造 Markdown 解析器
本项目由欧龙崎发布在实验楼,完整教程及在线练习地址:C++ 打造 Markdown 解析器一、概述项目介绍Markdown 已经是程序员的标配,其语法简单的特点让我们能够更加专注于内容输出与写作。 本次项目我们将针对 Markdown 的一些最常用语法,手动实现一个 Markdown 解析器,作为展示,还将为文档生成目录,如图所示:项目涉及的知识点词法分析技术语法树DFS 深度优先搜索C++11使用指针进行字符流处理Markdown 常用语法Markdown 的语法非常简单,下面是一些常用的语法:## 标题
# 一级标题
## 二级标题
### 三级标题
## 强调
- **粗体**
- _斜体_
## 引用
> 引用内容
## 列表
- 列表内容7
- 列表内容8
- 列表内容9
1. 列表内容10
2. 列表内容11
3. 列表内容12
## 代码
代码的插入方式 `printf('\n');`
```
function method()
{
alert("javascript");
}
```
## 链接
行内连接 [github](/) 的链接
## 图片
![shiyanlou logo]()
可以看到,Markdown 的语法之所以不复杂,是因为它的大部分词法规则都位于行首。这就为我们快速编写一个简单的 Markdown 解析器提供了方便之处。唯一需要考虑的,就是诸如链接、图片、代码、粗体、斜体等这些特殊的标记。二、测试驱动为了更加专注于编写 Markdown 解析器本身,我们先部署好相关测测试文件。首先你可以输入:
来获取 Markdown 的测试文件。其次,为了测试 Markdown 的解析结果,我们很自然的想到把解析结果直接转换到 HTML 进行展示,所以,这里已经为你准备好了好看的 CSS 文件,你可以先下载:wget -
为了让我们的代码便于测试,我们先编写好主函数://
//
// MarkdownParser
//
#include // std::ofstream
#include "" // 需要实现的 Markdown 解析类
int main() {
// 装载构造 Markdown 文件
MarkdownTransform transformer("");
// 编写一个 `getTableOfContents()` 方法来获取 Markdown 文件 HTML 格式的目录
std::string table =
C++ 打造 Markdown 解析器 来自淘豆网m.daumloan.com转载请标明出处.