相关疑难解决方法(0)

学习编写一个编译器

首选语言:C/C++,Java和Ruby.

我正在寻找一些有用的书籍/教程,如何编写自己的编译器只是为了教育目的.我最熟悉C/C++,Java和Ruby,所以我更喜欢涉及这三者之一的资源,但任何好的资源都是可以接受的.

language-agnostic compiler-construction

699
推荐指数
29
解决办法
29万
查看次数

我可以对代码强制执行哪些模式,以便更容易翻译成另一种编程语言?

我打算做一个侧面项目,其目标是将代码从一种编程语言转换为另一种编程语言.我开始使用的语言是PHP和Python(Python到PHP应该更容易开始),但理想情况下我可以添加其他语言(相对)轻松.计划是:

  • 这是面向Web开发的.原始代码和目标代码将位于框架之上(我也必须编写).这些框架将采用MVC设计模式并遵循严格的编码约定.这应该使翻译更容易一些.

  • 我也在研究IOC和依赖注入,因为它们可能使翻译过程更容易,更不容易出错.

  • 我将使用Python的解析器模块,它让我摆弄抽象语法树.显然,我可以用PHP获得的最接近的是token_get_all(),这是一个开始.

  • 从那时起,我可以构建AST,符号表和控制流程.

然后我相信我可以开始输出代码了.我不需要完美的翻译.我仍然需要检查生成的代码并修复问题.理想情况下,翻译人员应标记有问题的翻译.

在你问"这到底是什么意思?"之前 答案是......这将是一次有趣的学习经历.如果您对如何减少这种麻烦有任何见解,请告诉我.


编辑:

我更感兴趣的是知道我可以在代码上强制执行哪种模式,以便更容易翻译(即:IoC,SOA?)代码而不是如何进行翻译.

php python compiler-construction coding-style abstract-syntax-tree

95
推荐指数
3
解决办法
2万
查看次数

如何将源代码转换为基于xml的ast表示?

我想获得java和c代码的xml表示.3个月前,我问过这个问题,但解决方案对我来说并不舒服

  • srcml似乎是这个问题的一个很好的解决方案,但它不支持行号和列,但我需要该功能.
  • 关于elsa:引用:"目前正在努力将Elsa AST导出为XML文档;我们希望能够在下一个公开发布中对此进行宣传."
  • dms ......不明白.
  • 特别是对于java,有javaml支持行号.但是sourceforge页面没有列出任何文件.

问题:有可用的软件支持将ast转换为xml,它支持行号(和列)[特别是对于java和c/c ++]?是否有javaml和srcml的替代品?

ps:我不喜欢解析器生成器.我希望找到一个可以在控制台上输入的工具:./ my-xml-generator Test.java [或类似的东西] ......或者java实现也会很棒.

xml abstract-syntax-tree code-conversion

6
推荐指数
1
解决办法
7286
查看次数