【问题标题】:Opens Source Parser for Generating Data Bindings from C?用于从 C 生成数据绑定的开源解析器?
【发布时间】:2011-02-13 02:05:39
【问题描述】:

是否有 C 头文件(和/或 Java jar)的数据绑定 Parser/Generator 来生成 [也许] XML 数据绑定以供使用/导入(或生成包装器)到“其他”语言? (例如pythonHaskellGo! others)这个解析器将用于减少:

  1. 图书馆中的共享程序
  2. 与磁盘之间的数据分流
  3. 进程间消息

在最简单的情况下:已经glibc 维护了“XML 数据绑定”吗? (也许GCC 中有一个magic 选项可以生成 XML 数据绑定?)

背景示例:在Tandem Guardian上有一个DDL Compiler(“数据定义语言”),基本上DDL语言包含很多record definitions,可以被DDL编译器“编译”生成C/@987654330 @、TAL/struct、Pascal/RecordFortran/named-commonsCOBOL/Record 声明可以在编译 C(或 TAL/Pascal/Fortran/COBOL)程序时“包含”然后 . DDL 语言使得库的创建和跨语言共享变得非常容易。 DDL 输出也可以用于在磁盘和inter-process messages 中分流数据,因此可以轻松地在用不同语言编写的程序之间共享数据。

一些接近的当代例子:

C++允许直接导入C头文件,例如:

extern "C" {
    #include "header.h"
}

Python 特别允许解析 GTK C 库,并通过“Defs”文件生成带有PyGTK-Codegen 的python 包装模块:

(define-object name
  (in-module "module")
  (docstring "doc")
  (parent "parent")
  (c-name "name")
  (gtype-id "id")
  (fields
    ("type" "name")
    ...
  )
  (implements "interface")
)

在某种程度上RPCs 解决了不同 CPU 架构之间的 IPC 问题。但不是本地数据绑定声明问题到其他语言。

在第一个例子中,一个仅用于解析 C 生成 XML 的开源工具会很棒(并且来自 java 的一个真正的好处)。如果这个解析器已经在一个主要的 Linux 发行版上就更好了。

我发现 Parser 摘要位于:XML Data Binding Tools

【问题讨论】:

    标签: java xml parsing data-binding gcc


    【解决方案1】:

    引用:

    SWIG是一个软件开发工具 连接用C编写的程序 和C++有各种高层 编程语言。使用 SWIG 具有不同类型的目标 包括通用脚本在内的语言 语言如PerlPHPPythonTclRuby。支持的列表 语言还包括非脚本 C#、Common Lisp 等语言 (CLISP, Allegro CL, CFFI, UFFI), D, Go language, Java, Lua, Modula-3, OCAML, OctavePike(?) 和R。也有几个解释 和编译的方案实现 (GuileMzScheme/RacketChicken)是 支持。

    SWIG 是最常用的 创建高级解释或 编译的编程环境, 用户界面,并作为一种工具 测试和原型 C/C++ 软件。 SWIG 通常用于 解析 C/C++ 接口并生成 以上所需的“胶水代码” 要调用的目标语言 C/C++ 代码。 SWIG 还可以导出其 XML 和 Lisp 形式的解析树 s-expressions.

    支持:

    • FreeBSD/OpenBSD/NetBSD
    • HP-UX
    • Linux
    • Mac OS X
    • 索拉里斯
    • Windows 95/98/NT/2000/XP/Vista

    另外:对于Serialisation of C,可以使用包"Cerialization" (s11n/c11n)。这包括 funtxt(文本)、funxml(基本 XML 方言)、simplexml(更精简的 XML 方言)、紧凑(非人类)、parens(emacs-友好)、wesnothexpatsqlite & @ 987654355@.

    【讨论】:

    • @Stephen_C 57.4k:我喜欢你原来的答案。我要“接受”我自己的答案了?!?这感觉有点奇怪,尤其是涉及到赏金。您能否提出更详细的答案,以免浪费我的赏金。顺便说一句:SWIG 看起来很完美,其他一些值得考虑的实用程序:JNA、GlueGen、kross、F2PY、OSID、XPCOM 等
    【解决方案2】:

    我的朋友通过 python 脚本手动解析 C 文件并通过 cog 生成必要的输出。

    ragel 已经有 C-parser,但是生成功能必须自己添加。

    【讨论】:

      【解决方案3】:

      我不确定你想要什么,但可能Antlr可以用于此目的并且已经有grammar written for C,所以你可以直接使用这个。

      【讨论】:

        猜你喜欢
        • 2012-07-18
        • 1970-01-01
        • 2021-12-30
        • 1970-01-01
        • 1970-01-01
        • 2014-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多