编辑:我最近了解了一个名为 CommonMark 的项目,该项目
正确识别并处理原文中的歧义
降价规范。http://commonmark.org/它有很棒的 C# 库
支持。
你可以找到语法here.
下载后的源代码写在Perl,我无意尊重这一点。它充满了正则表达式,并且依赖于MD5散列来转义某些字符。这件事有些不对劲!
我要硬编码一个解析器Markdown。这方面有什么经验?
如果你对 Markdown 的实际解析没有任何有意义的话可说,请饶过我。 (这可能听起来很刺耳,但是是的,我正在寻找洞察力,而不是解决方案,即第三方库)。
为了帮助找到答案,正则表达式的目的是识别模式!不要解析整个语法。人们认为这样做是foobar。
- 如果您考虑一下 Markdown,它基本上是基于段落的概念。
- 因此,合理的方法可能是将输入分成段落。
- 段落有很多种,例如标题、文本、列表、块引用和代码。
- 因此,挑战在于识别这些段落以及它们出现的背景。
一旦我发现它值得分享,我会带着解决方案回来。
我所知道的唯一使用实际解析器的 Markdown 实现是乔恩·麦克法兰’s 挂钩降价. 它的解析器是基于一个解析表达式语法解析器生成器称为peg.
EDIT: 毛里西奥·费尔南德斯最近发布了他的简单标记 Markdown 解析器,这是他写的,作为他的一部分OcsiBlog博客引擎。因为解析器是写在OCaml, it is 极其简单而简短(268 个 SLOCparser, 43 SLOC 为HTML 发射器), yet 炽热地 fast(比以下快 20%discount(用手工优化的 C 语言编写)和六百比蓝布 (Ruby)),尽管事实上它甚至还没有针对性能进行优化。由于它仅供 Mauricio 本人在其博客内部使用,因此与实际内容存在一些偏差官方 Markdown 规范,但毛里西奥创造了恢复大部分更改的分支.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)