gpt4 book ai didi

python - 将 Django 的模板引擎移植到 C

转载 作者:太空狗 更新时间:2023-10-29 18:28:25 24 4
gpt4 key购买 nike

我最近为我的 C++ 应用程序 (QT) 编写了一个简单而小巧的嵌入式 HTTP 服务器,我玩了一点 Ry's http-parser并且喜欢它。这家伙疯了

所以我对自己说:“嘿!为什么不将 django 模板引擎移植到 C?”那太棒了!我知道,这不是一件容易的事(一点也不,我知道),但我真的很想实现它。所以我来这里是为了灵感、想法、意见……

我真的很想就这个主题、想法、已经完成的工作、我将遇到的主要问题(以及如何解决这些问题)提供一些指导——如何不重新发明轮子……无论如何,你明白了:)

感谢一百万次!

附言非常欢迎简单的代码片段以及指向工具和库的链接!

附言我已经知道 grantlee ,我查看了它的来源。好吧……那是 C++,它是 Qt 特有的。

最佳答案

嗯,我不明白为什么 django 模板代码中的任何东西都很难用 C 实现。模板语法看起来有点 pythonic,但实际上不是 python;他们为此实现了自己的解析器。所以首先要看的地方是 django template implementation in python .代码确实不多,而且相当容易理解。

当然,C 会更冗长。您正在编写的完全是一个编译器:它读取一些代码(django 模板)并用另一种语言(html)写出一些代码。因此,您可以找到的所有关于用 C 编写编译器(即分词器 + 解析器 + 代码生成器)的文档都是相关的。

首先,您可能想要生成一个语法树。 django 模板的语法非常规则...每个 {% whatever %} block 都有一个相应的 {% endwhatever %} block ,因此您的解析器实际上可以生成树实际上不知道所有 whatever 关键字可能是什么。

然后,您遍历树,为每个 block 执行“代码生成”阶段。例如,您可以通过检查 if 参数的值来生成 {% if %},然后打印其内容或不打印任何内容,具体取决于 if 子句是真还是假。等等,还有 while 循环、过滤器、 block 等。

请注意,所有这些工作量很大...您是否考虑过将 python 解释器嵌入到您的 C 程序中? (说真的!这并不难,因为 python 解释器是开源的。)

关于python - 将 Django 的模板引擎移植到 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2939070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com