没有合适的资源?快使用搜索试试~ 我知道了~
Markdown解析器设计与实现1
资源详情
资源评论
资源推荐
Markdown 解析器设计与实现
词法分析过程
定义标识符
因为“ ”空格表示的特殊性,这里将“ ”空格用单词 Space 代替
类型
正则表达式定义
说明
TEXT
[^]*
除换行符和回车符之外的任意
字符的闭包都是 TEXT
换行符当作切分单词的分隔符
回车符当作切分单词的分隔符
&
&
HTML 实体字符
<
<
HTML 实体字符
ESC
\[\`*_{}[]()#+-.!]
转义字符起始标志
HEAD 标题组√
H1
#
标题一
H2
##
标题二
H3
###
标题三
H4
####
标题四
H5
#####
标题五
H6
######
标题六
DIVIDELINE 分隔线组√
DIVIDELINE
-(Space-){2,}Space-
分隔线
DIVIDELINE
\*(Space\*){2,}Space*
分隔线
QUOTE 引用组 √
>>
(>Space)
引用和嵌套引用
LIST 列表组√
UL
-Space
无序列表
UL
+Space
无序列表
UL
*Space
无序列表
OL
[0-9].Space
有序列表
STYLE 强调组√
EM
*TEXT*
斜体
EM
_TEXT_
斜体
STRONG
**TEXT**
加粗
STRONG
__TEXT__
加粗
EMSTRONG
***TEXT***
斜体加粗
EMSTRONG
___TEXT___
斜体加粗
CODE 代码组√
`
`TEXT`
行级代码
LAG
javascript | java | python |
c++ | c | go | php | html | css
| shell
块级代码的语言标识
```
```LAG \n\r[TEXT\n\r]+\n\r```
块级代码
LINK 组√
URL
/^(https?:\/\/)?([\da-
定义 URL 的正则表示
z\.-]+)\.([a-z\.]{2,6})([\/\w
\.-]*)*\/?$/
LINK
<URL>
可跳转 URL
ALTLINK
[TEXT](URL)
带文字说明的可跳转 URL
IMG
![TEXT](URL)
引入图片资源
<
<
LINK 的左符号
>
>
LINK 的右符号
[
[
ALTLINK 的左符号
](
](
ALTLINK 的中符号
)
)
ALTLINK 的右符号
!
!
IMG 的开始标识
定义状态机
为了方便表述,定义 (char)[[opt]]->state[(char)] 表示识别 char 经过 opt 操作达到状态 state , opt
默认为 add “加入临时 token 序列”,这是为了后续识别的方便。除此之外,opt=emit in [type]
“提交 type 类型到 token 流”;opt=transfer to [tag]“转换为 tag 的 html 实体。其中[(char)]可
以有,也可以没有,表示回流,比如(other)->state(other)表示识别 other 字符后回流字符到 state
状态重新识别。
状态名称
状态入度
状态出度
Start
1. ()->
1. (#)->Head1
2. (>)->Quote
3. ([0-9])->Olist1
4. (+)->Ulist1
5. (_)->Em
6. (*)->EmUlistDivideline
7. (-)->UlistDivideline
8. (`)->Code1
9. (<)->LinkLeft
10. ([)->AltlinkLeft
11. (!)->ImgBegin
12. (\n)[emit]->Start
13. (\r)[emit]->Start
14. (&)[emit]->Start
15. (\)->Esc
16. (other)->Text
Head1
1. Start->(#)
1. (#)->Head2
2. (other)[emit]->Start(other)
Head2
1. Head1->(#)
1. (#)->Head3
2. (other)[emit]->Start(other)
Head3
1. Head2->(#)
1. (#)->Head4
2. (other)[emit]->Start(other)
Head4
1. Head3->(#)
1. (#)->Head5
2. (other)[emit]->Start(other)
Head5
1. Head4->(#)
1. (#)[emit to H6]->Start
剩余15页未读,继续阅读
禁忌的爱
- 粉丝: 20
- 资源: 334
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0