如何在数据库中存储“meta”源代码

时间:2017-02-12 13:05:13

标签: database structure

我想将计算机程序存储在数据库中而不是许多文本文件中。它应该包含程序的结构和所有对象,方法,依赖项等。我不想在数据库中存储特定的语言,而是某种“元”编程语言。在第二步中,我想将数据库中的这个结构转换/导出为经典语言的源代码(C#,Java等),或者直接为CLR / JVM编译它。

我想我不是第一个有这个想法的人。我搜索了互联网,我认为我正在寻找的是“数据库中的源代码(SCID)” - 遗憾的是我无法找到这个想法的实现。

所以我的问题是:

是否有任何程序在数据库中存储“元”程序代码,让您从中生成可以编译/执行的传统文本源代码?

简短评论:
- 它也可以是一个noSQL数据库
- 我目前不关心程序如何导入/输入数据库

1 个答案:

答案 0 :(得分:0)

听起来你正在寻找某种通用的标记语言,它充分描述了每种目标语言的常见语义 - 例如对象,函数,输入,返回值等。

这不是关于存储在数据库中,更多的是关于具有单个(我想象的,类似XML)的结构,该结构随后可以被目标语言解析和评估以产生本地源/字节码。如果有这样的事情,将它存储在数据库中将是微不足道的 - 这不是困难的部分。即使是键/值数据库也可以处理它。

困难的部分是找到能够抽象出多种语言细微差别的东西,并尝试用通用格式描述它们。

Similar questions已被问到,但没有令人满意的解决方案。

可能您不需要完整的源代码,而只需要描述运行时数据 - 格式如XML和JSON就是为了这个目的,并提供了可以解析的对象的简化描述。映射到本机等价物,源代码围绕对该数据的动态解析构建。

可以进一步使用某些语言。例如,如果您选择的语言首先转换为字节码,您可能在技术上可以将二进制字节码存储在BLOB中,然后直接运行它。提供反射和动态评估的语言可能可以解决这个问题 - 然后您的数据库只是一个包装器,用于将数据存储在编译中,并在运行之前检索它。这取决于您的目标语言以及如何处理编译。

当然,如果你只使用解释语言,你可以简单地存储完整的源和eval它(以目标语言首选的任何方式)。

如果你提供有关你的预期用例的更多信息,我相信你会得到一些关于如何处理它的不错的建议,而不必发明一个源代码Babelfish。