C 创建像markdown这样的标记语言

C 创建像markdown这样的标记语言,c,yacc,lex,C,Yacc,Lex,我一直在研究创建类似Markdown的标记语言。我想知道从哪里开始这样的事情。我对创建语言做了一些研究,最后我得到了一些关于lexer和ast的教程——最后,这些语言被传递给了类似LLVM的东西 据我所知,像C这样的语言是命令式语言,像Markdown这样的语言是声明式语言。对于可能不会触及LLVM之类的东西,工具链到底是什么样子的 我见过其他的答案,比如如何在语言中标记语言。但是,在C语言中如何实现这一点?我希望有一些可以在任何地方使用的东西(例如,集成到Ruby原生扩展中,或者集成到C#项目

我一直在研究创建类似Markdown的标记语言。我想知道从哪里开始这样的事情。我对创建语言做了一些研究,最后我得到了一些关于lexer和ast的教程——最后,这些语言被传递给了类似LLVM的东西

据我所知,像C这样的语言是命令式语言,像Markdown这样的语言是声明式语言。对于可能不会触及LLVM之类的东西,工具链到底是什么样子的

我见过其他的答案,比如如何在语言中标记语言。但是,在C语言中如何实现这一点?我希望有一些可以在任何地方使用的东西(例如,集成到Ruby原生扩展中,或者集成到C#项目中)

我似乎找不到一个好的方向来处理这个问题。有人有从哪里开始的经验/建议吗?我将在什么位置构建“二进制”(从源代码创建HTML?)

Markdown是否使用lexer?从语法上看,它似乎可以很好地使用正则表达式


如果内容太宽泛,我深表歉意,但我找不到关于这个主题的太多信息(也许我只是找错了地方!)

你说得对,像Markdown这样的简单标记语言是声明性的。 存在不涉及任何lexer和ast的非常简单的实现

例如,最初的Markdown实现是一个使用正则表达式的简单Perl脚本。这本书由约翰·格鲁伯(Markdown的创始人)撰写,可在以下网址获得:

您还可以查看一个名为折扣的C实现,该实现可在以下位置获得:


这两种工具都是完全开源的,它们向您准确地展示了处理标记语言所需的内容。它们包括整个工具链,包括解析器。

任何好的解析器(不管是否标记)都不应该使用正则表达式进行解析。正则表达式用于正则表达式。编程/标记语言本质上是不规则的。主要是为了我自己的利益和实践。事实上,正则表达式对于解析标记就足够了,因为它主要依赖于格式化符号,而不是关键字。没有太多的东西需要解析/分析,但有一些可识别的符号。大多数降价解析器使用正则表达式。在这里你可以找到一个关于如何做的解释:非常感谢!我想我可能是看错了。命令式和声明式是编程语言的两种;Markdown不是一种编程语言。我很感激链接到折扣。然而,这更多的是一个最终结果。我感兴趣的是如何实现这一目标,以及涉及到哪些工具。标记语言非常简单,不涉及其他工具。通常只是正则表达式,正如您在我链接的代码中看到的。。。