我决定为我最后一年的项目学习 XML。我想做的是获取一些 Java 源代码,将 Java 源代码转换为 XML,然后使用 XML 转换为另一种语言。我已经阅读了很多关于 XML、ebnf 和 bnf 以及其他各种技术的内容,但我很难理解它。我想知道是否有了解这个领域的人可以给我一些入门提示,例如我应该使用哪个软件来完成这个项目,我应该看什么来开始将 Java 转换为 XML 等等。谢谢。
3 回答
您的项目实际上与 XML 几乎没有关系,更多的是与编写 Java 编译器有关,因为您的主要任务是将 Java 代码转换为中间、中性格式,然后从该格式转换为“另一种语言”。您的中间格式应该碰巧以 XML 结构表示,这无关紧要。
就像思想实验一样,从您的项目中删除中间格式并再次考虑它:
将 Java 源代码转换为另一种语言
一点都不琐碎。即使我们忽略诸如内存模型、类型转换/强制等问题——即使将基本的“hello world”Java 类转换为语法相似的语言(比如 C++),仅使用原始类型,仍然非常复杂。
如果您的唯一目标是学习 XML,那么我认为您的项目实在是太麻烦了。
正如爸爸已经提到的......这是一件相当复杂的事情,当它只是学习 XML 时,如果你想继续,你应该得到/创建一些东西来完成这件事。 ..
您应该获取/创建的第一件事是 java 解析器,它可以将 java 代码“分解”为运算符、参数等,您可以使用它们来构建您的 xml 表示
要实现的第二件事是创建一个完全描述基于 xml 的语言的模式( xsd )(或多或少像 BNF,但后来是 XML )
例如,一段转换后的“Hello World”代码可能看起来像这样(尽管我更喜欢 ac# 的人)
<invokeMethod fullname="Console.WriteLine, mscorlib">
<param type="System.String">Hello World!</param>
</invokeMethod>
所以需要有一个“invokeMember”的模式定义,它需要一个全名属性和 0 个或更多参数元素......等等。
如果您了解了这一点,则需要创建一种“代码生成器”(如果我没记错的话,称为词法分析器),它将解析的 java 代码转换为符合模式的 XML。
然后你只做了一半...
您可以使用 xml 样式表最终将 XML 转换为另一种语言类型(这也是一项相当困难的任务)
仍然......这些只是让你开始的指针......如果你选择承担这个项目......我祝你好运:-)
我认为您应该从解析 java 代码开始,并开始检测其中的结构(如代码块、控制语句等)。您使用的语言非常免费,我会选择以良好方式支持 XML 并且擅长字符串处理的语言。(我当然建议使用 Java :D)
在您没有这样做之前,我什至不会开始考虑 XML 本身。
顺便说一句:如果您将其作为一个有趣的项目来做,那没关系。否则:为什么管道 spacenoodle 需要这样的转换器?;)