是否有任何配置文件读/写C代码生成器?

时间:2013-05-21 03:03:39

标签: c linux bison flex-lexer

我知道如何使用flex或bison生成C扫描程序代码,但不幸的是,我需要一个C代码来读取&& -write-配置文件,但是我无法用flex或bison生成这样的代码,可能我可以使用配置文件读/写库,但我认为当我想自定义配置文件的格式时它不灵活,所以任何提示?

1 个答案:

答案 0 :(得分:1)

我知道没有这样的专用工具,仅仅因为它并不是那么难的工作。

您对输入进行词汇和语义分析的原因是因为您必须将某些复杂(具有错误可能性的自由格式文本)转换为简单的内容(没有错误的内存中表示)

另一种方式通常要简单得多,因为您只需单步执行内存中的结构并输出其字符串表示形式即可。一个简化的例子,假设您的配置文件包含以下行:

define xyzzy integer size 5 is 1 3 5 7 9 ;

创建一个名为xyzzy的数组,其中包含五个元素。

在输入时,您必须将字符流标记(词法分析)为:

keyword:define
name:xyzzy
keyword:integer
keyword:size
constant:5
keyword:is
constant:1
constant:3
constant:5
constant:7
constant:9
keyword:semicolon

然后使用语义分析将其转换为您可以在程序中使用的表单,例如结构:

type = array
name = xyzzy
underlyingtype = integer
size = 5
element[1..5] = {1,3,5,7,9}

现在,将 out 返回到配置文件相对容易。您只需浏览所有内存结构,例如:

for each in-memory-thing imt:
    if imt.type is array:
        output "define ", imt.name, " ", imt.underlyingtype
        output " size ", imt.size, " is "
        for i = 1 to imt.size inclusive:
            output imt.element[i], " "
        output " ;" with newline
    fi
    // Handle other types of imt here
rof

所以你可以看到写入配置文件的行为比从它重新编写容易得多。