gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:19:31 24 4
gpt4 key购买 nike

是否有 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 toolthat connects programs written in Cand C++ with a variety of high-levelprogramming languages. SWIG is usedwith different types of targetlanguages including common scriptinglanguages such as Perl, PHP, Python,Tcl and Ruby. The list of supportedlanguages also includes non-scriptinglanguages such as C#, Common Lisp(CLISP, Allegro CL, CFFI, UFFI), D,Go language, Java, Lua, Modula-3, OCAML,Octave, Pike(?) and R. Also several interpretedand compiled Scheme implementations(Guile, MzScheme/Racket, Chicken) aresupported.

SWIG is most commonly usedto create high-level interpreted orcompiled programming environments,user interfaces, and as a tool fortesting and prototyping C/C++software. SWIG is typically used toparse C/C++ interfaces and generatethe 'glue code' required for the abovetarget languages to call into theC/C++ code. SWIG can also export itsparse tree in the form of XML and Lisps-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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com