gpt4 book ai didi

c - 如何编写自己的Configformat

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:58 27 4
gpt4 key购买 nike

我已经为应用程序的配置文件(纯文本和基于行 -> EOL = 一个配置)开发了自己的文件格式。这种格式没什么特别的,我这样做的唯一原因就是要学习一些东西!读取器和写入器函数将在 C 中实现(使用 GLib,因为它应该是 UTF8 编码的文件)。

所以现在,我正在考虑用 C 代码实现这种格式的方式。我必须执行哪些步骤才能获得尽可能好的错误消息。我听说过有关 Lexer、Parser 的一些信息……但从来没有深入了解过。我对它们只有一个非常抽象的概念。 那么我需要执行哪些步骤才能获得一个用 C 语言编写的格式清晰的阅读器,该格式也可以为将来的更改维护?要学习/思考哪些主题?

是的,我知道:C 是痛苦的,这个提议有很多不同的“性感”格式等等。 我想学点东西!

干杯,格雷戈尔


附加信息

  • 读取器/写入器/解析器(或任何名称)应尽可能少地依赖第三方程序/组件。围绕此配置部分的应用程序已经使用了 GLib,因此 GLib 也用于 UTF8

最佳答案

创建配置格式的一种很酷的方法是嵌入脚本语言。

这为您提供了免费的解析器,并使您有可能即时生成数据或定义正在重用的变量:

考虑这些 xml 与丑陋的伪脚本语言的示例:

<InputPoints>
<Point>
<x>1.0</x>
<y>1.0</y>
</Point>
<Point>
<x>1.0</x>
<y>2.0</y>
</Point>
<Point>
<x>1.0</x>
<y>3.0</y>
</Point>
<Point>
<x>1.0</x>
<y>4.0</y>
</Point>
<InputPoint>

对比:

for(i = 1; i <= 4; ++i) {
InputPoint(1, i);
}

或许

<Username>allanballan</Username>
<Accountname>allanballan</Accountname>
<HomeDirectory>/home/allanballan</HomeDirectory>

对比

user = "allanballan";
Username = user;
Accountname = user;
HomeDirectory = "/home/"+user;

第一个示例将点列表压缩为几条语句,第二个示例显示如何使用临时变量删除大量冗余数据。

这种情况的流行语言是Lua .究竟如何将脚本语言映射到配置取决于集成商,但它确实非常强大,并且免费提供解析和类型检查。

关于c - 如何编写自己的Configformat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/974475/

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