是否存在C头文件(和/或Java jar)的数据绑定解析器/生成器以生成[可能] XML数据绑定以使用/导入(或生成包装器)到“其他”语言? (例如python,Haskell,Go! 和 others)此解析器将用于减少:
在最简单的情况下:是否为glibc维护了“XML数据绑定”? (也许GCC中有一个生成XML数据绑定的 magic 选项?)
后台示例:在Tandem Guardian上有一个DDL编译器(“数据定义语言”),基本上DDL语言包含许多record definitions,它们可以由DDL编译器“编译”以生成{{ 3}} / C,struct / struct,TAL,Pascal/Record或Fortran/named-commons声明可以然后被“包含”编译C(或TAL / Pascal / Fortran / COBOL)程序时。 DDL语言使得库的创建和语言间共享变得非常容易。 DDL输出可以也用于向/从磁盘和COBOL/Record分流数据,因此可以轻松地在用不同语言编写的程序之间共享数据。
一些近似的当代例子:
C ++允许直接导入C头文件,例如:
extern "C" {
#include "header.h"
}
Python特别允许解析GTK C库,并通过“Defs”文件生成带有inter-process messages的python包装器模块:
(define-object name
(in-module "module")
(docstring "doc")
(parent "parent")
(c-name "name")
(gtype-id "id")
(fields
("type" "name")
...
)
(implements "interface")
)
在某种程度上PyGTK-Codegen解决了不同CPU架构之间的IPC问题。但不是本地数据绑定声明问题到其他语言。
在第一个实例中,一个开源工具解析只是C生成XML会很棒(而且java中的一个是真正的奖励)。如果它的解析器已经在主要的Linux发行版上更好了。
我在RPC
发现了Parser摘要答案 0 :(得分:4)
引用:
SWIG是一个软件开发工具 连接用C编写的程序 和C++各种各样的高级别 编程语言。使用SWIG 具有不同类型的目标 语言包括常见脚本 Perl,PHP,Python等语言, Tcl和Ruby。支持列表 语言还包括非脚本 语言如C#,Common Lisp (CLISP,Allegro CL,CFFI,UFFI),D, Go language,Java,Lua,Modula-3,OCAML, Octave,Pike(?)和R。还有几个解释 和编译的Scheme实现 (Guile,MzScheme/Racket,Chicken)是 支持的。
SWIG是最常用的 创建高级解释或 编译的编程环境, 用户界面,以及作为工具 测试和原型化C / C ++ 软件。 SWIG通常用于 解析C / C ++接口并生成 以上所需的“胶水代码” 要调用的目标语言 C / C ++代码。 SWIG也可以出口它 以XML和Lisp的形式解析树 s-expressions
支持:
另外:对于Serialisation of C,可以使用包"Cerialization" (s11n/c11n)。这包括 funtxt(文本),funxml(基本XML方言),simplexml(更精简的XML方言),紧凑(非人类),parens(emacs - 友好),wesnoth,{{3 },expat& sqlite
答案 1 :(得分:0)
我的朋友通过python脚本手动解析C文件,并通过cog生成必要的输出。
ragel已经拥有C-parser,但必须亲自添加生成功能。
答案 2 :(得分:0)
我不确定你想要什么但可能Antlr可以用于此目的,而且已经有grammar written for C,所以你可以直接使用这个。