java - 用于从 C 生成数据绑定(bind)的开源解析器?

标签 java xml parsing data-binding gcc

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

  1. 在图书馆中共享程序
  2. 将数据分流到磁盘或从磁盘分流
  3. 进程间消息

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

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

一些接近的当代例子:

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

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

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

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

在某种程度上RPC一半解决了不同CPU架构之间的IPC问题。但对于其他语言来说,本地数据绑定(bind)声明不是问题。

在第一个实例中,一个仅用 C 语言生成 XML 的开源工具解析会很棒(而来自 java 的工具则是真正的奖励)。如果这个解析器已经在主要的 Linux 发行版上就更好了。

我发现解析器摘要位于:XML Data Binding Tools

最佳答案

引用:

SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages. SWIG is used with different types of target languages including common scripting languages such as Perl, PHP, Python, Tcl and Ruby. The list of supported languages also includes non-scripting languages such as C#, Common Lisp (CLISP, Allegro CL, CFFI, UFFI), D, Go language, Java, Lua, Modula-3, OCAML, Octave, Pike(?) and R. Also several interpreted and compiled Scheme implementations (Guile, MzScheme/Racket, Chicken) are supported.

SWIG is most commonly used to create high-level interpreted or compiled programming environments, user interfaces, and as a tool for testing and prototyping C/C++ software. SWIG is typically used to parse C/C++ interfaces and generate the 'glue code' required for the above target languages to call into the C/C++ code. SWIG can also export its parse tree in the form of XML and 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 方言)、compact(非人类)、parens(emacs - 友好)、wesnoth , expat , sqlite & mysql .

关于java - 用于从 C 生成数据绑定(bind)的开源解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981978/

相关文章:

java - 使用 Play2 框架进行 Spring 属性注入(inject)

java - 如何在 android 中制作 Rss 新闻阅读器应用程序......?

python - 使用匹配字符串中定义的字符串长度

java - 将字符串解析为时间并插入mysql数据库

java - 如何在输入文本中显示数据库中的值?

java - 无法使用应用程序中的 hsqldb 连接,但单元测试工作

java - 使用 RentrantLock 实现生产者消费者时出现 IllegalMonitorStateException

java - 构建文件夹中的values.xml 中发生错误

sql - 在 TSQL 中搜索不存在节点的 xml 的更好方法

php - PHP 脚本究竟是如何执行的?