轻松记录您
灵感和创意

C++ 打造 Markdown 解析器

Markdown 已经是程序员的标配,其语法简单的特点让我们能够更加专注于内容输出与写作。 本次项目我们将针对 Markdown 的一些最常用语法,手动实现一个 Markdown 解析器,作为展示,还将为文档生成目录,如图所示:

项目涉及的知识点

词法分析技术

语法树

DFS 深度优先搜索

C++11

使用指针进行字符流处理

Markdown 常用语法

Markdown 的语法非常简单,下面是一些常用的语法:

## 标题# 一级标题## 二级标题### 三级标题## 强调- **粗体**- _斜体_## 引用> 引用内容## 列表- 列表内容7- 列表内容8- 列表内容91. 列表内容102. 列表内容113. 列表内容12## 代码代码的插入方式 printf('\n');function method(){    alert("javascript");}## 链接行内连接 [github](https://github.com/) 的链接## 图片![shiyanlou logo](https://static.shiyanlou.com/img/logo_03.png)

可以看到,Markdown 的语法之所以不复杂,是因为它的大部分词法规则都位于行首。这就为我们快速编写一个简单的 Markdown 解析器提供了方便之处。

唯一需要考虑的,就是诸如链接、图片、代码、粗体、斜体等这些特殊的标记。

二、测试驱动

为了更加专注于编写 Markdown 解析器本身,我们先部署好相关测测试文件。

首先你可以输入:

http://labfile.oss.aliyuncs.com/courses/569/test.md

来获取 Markdown 的测试文件。

其次,为了测试 Markdown 的解析结果,我们很自然的想到把解析结果直接转换到 HTML 进行展示,所以,这里已经为你准备好了好看的 CSS 文件,你可以先下载:

wget http://labfile.oss.aliyuncs.com/courses/569/github-Markdown.css

未经允许不得转载:坚果之云 Markdown » C++ 打造 Markdown 解析器
分享到: 更多 (0)

坚果云Markdown轻松记录您 灵感和创意

坚果云Markdown下载坚果云Markdown介绍