Javascript C 输出的代码生成器?
Javascript code generator for C output?
我想在 JSON 中定义一个模式,并为符合该模式的 encode/decode 流生成 C 文件。一个简化的例子...
JSON 对象...
var schema = {
version: 1,
objectA: {
key: 0,
type: "uint32_t",
defaultValue: 42
},
objectB: {
key: 1,
type: "int16_t",
defaultValue: -128
},
objectC: {
key: 2,
type: "double"
defaultValue: "3.1415926"
}
};
...将生成 C 头文件...
#define SCHEMA_VERSION (1)
typedef enum keys
{
key_objectA = 0,
key_objectB = 1,
key_objectC = 2,
KEY_COUNT
} keys_t;
typedef uint32_t objectA_t;
typedef int16_t objectB_t;
typedef double objectC_t;
typedef union univ_value
{
objectA_t objectA;
objectB_t objectB;
objectC_t objectC;
} value_t;
result_t encode(char * ostream, keys_t key, value_t * value);
result_t decode(char * istream, keys_t key, value_t * value);
...和相应的 C 源文件(将包含作为数组的默认值,为简洁起见省略)。
是否有代码生成库(最好在 Javascript 中)我可以使用它来生成头文件和源文件内容?
需要说明的是, 我不想直接输入 JSON;相反,理想情况下,能够做某事(在 Javascript 中),例如:
var headerOutput;
headerOutput += dreamCGenerator.appendMacro("define", {
symbol: "SCHEMA_VERSION",
value: schema.version
});
headerOutput += dreamCGenerator.appendEnum(...);
// etc...
在 research/reading 之后,我倾向于使用像 handlebars 这样的模板引擎来生成 C header/source 文件。这似乎是使 C 语法远离 Javascript-land...
的最佳方法
你不想使用 protobuf:
https://developers.google.com/protocol-buffers/
您的架构将非常JSON,并且您可以为多种语言生成代码。还允许可选字段和必填字段。
我想在 JSON 中定义一个模式,并为符合该模式的 encode/decode 流生成 C 文件。一个简化的例子...
JSON 对象...
var schema = {
version: 1,
objectA: {
key: 0,
type: "uint32_t",
defaultValue: 42
},
objectB: {
key: 1,
type: "int16_t",
defaultValue: -128
},
objectC: {
key: 2,
type: "double"
defaultValue: "3.1415926"
}
};
...将生成 C 头文件...
#define SCHEMA_VERSION (1)
typedef enum keys
{
key_objectA = 0,
key_objectB = 1,
key_objectC = 2,
KEY_COUNT
} keys_t;
typedef uint32_t objectA_t;
typedef int16_t objectB_t;
typedef double objectC_t;
typedef union univ_value
{
objectA_t objectA;
objectB_t objectB;
objectC_t objectC;
} value_t;
result_t encode(char * ostream, keys_t key, value_t * value);
result_t decode(char * istream, keys_t key, value_t * value);
...和相应的 C 源文件(将包含作为数组的默认值,为简洁起见省略)。
是否有代码生成库(最好在 Javascript 中)我可以使用它来生成头文件和源文件内容?
需要说明的是, 我不想直接输入 JSON;相反,理想情况下,能够做某事(在 Javascript 中),例如:
var headerOutput;
headerOutput += dreamCGenerator.appendMacro("define", {
symbol: "SCHEMA_VERSION",
value: schema.version
});
headerOutput += dreamCGenerator.appendEnum(...);
// etc...
在 research/reading 之后,我倾向于使用像 handlebars 这样的模板引擎来生成 C header/source 文件。这似乎是使 C 语法远离 Javascript-land...
的最佳方法你不想使用 protobuf:
https://developers.google.com/protocol-buffers/
您的架构将非常JSON,并且您可以为多种语言生成代码。还允许可选字段和必填字段。