标签: code-translation

需要源到源编译器框架

我曾经使用OpenC++(http://opencxx.sourceforge.net/opencxx/html/overview.html)执行代码生成,如:

资源:

class MyKeyword A {
  public:
    void myMethod(inarg double x, inarg const std::vector<int>& y, outarg double& z);
};
Run Code Online (Sandbox Code Playgroud)

产生:

class A {
  public:
    void myMethod(const string& x, double& y);
    // generated method below:
    void _myMehtod(const string& serializedInput, string& serializedOutput) {
      double x;
      std::vector<int> y;
      // deserialized x and y from serializedInput
      double z;
      myMethod(x, y, z);
    }
};
Run Code Online (Sandbox Code Playgroud)

这种代码生成通过编写元级别的程序来直接匹配OpenC++教程中的用例(http://www.csg.is.titech.ac.jp/~chiba/opencxx/tutorial.pdf) "MyKeyword","inarg"和"outarg"并执行代码生成.但是,OpenC++现在已经过时并且处于非活动状态,我的代码生成器只能在g ++ 3.2上运行,并且在解析g ++更高版本的头文件时会触发错误.

我查看了VivaCore,但它没有提供编译元级程序的基础结构.我也在看LLVM,但是我找不到能够帮助我完成源到源编译用法的文档.我也知道ROSE编译器框架,但我不确定它是否适合我的用法,以及它的专有C++前端二进制文件是否可用于商业产品,以及Windows版本是否可用.

任何对特定教程/论文/文档的评论和指示都非常感谢.

c++ code-generation code-translation

8
推荐指数
1
解决办法
1613
查看次数

使用LLVM进行源到源编译

我需要将x86汇编源代码转换为LLVM人类可读的.ll文件(也称为LLVM汇编语言).我怎样才能做到这一点?如果没有直接的解决方案,那么可以尽可能少地在LLVM基础架构中实现一个解决方案吗?

我想,我在寻找的解决方案应该是某种形式的有限责任公司,其将.s文件回到.ll表示的对应.

assembly llvm code-translation

8
推荐指数
1
解决办法
2104
查看次数

用于生成新编程语言语法的神经网络

最近,我有必要创建ANTLR语言语法,以实现编译器的目的(将一种脚本语言转换为另一种脚本语言)。在我看来,Google翻译在翻译自然语言方面做得很好。我们拥有各种各样的递归神经网络模型,LSTM和GPT-2,它们会生成语法正确的文本。

问题:是否有足够的模型来训练语法/代码示例组合,以便在给定任意示例源代码的情况下输出新的语法文件?

grammar machine-learning code-translation language-recognition transpiler

8
推荐指数
1
解决办法
224
查看次数

将一种语言翻译成另一种

是否可以使用口译员将一种语言翻译成另一种语言?

听说quercus可以将php翻译成java吗?起初,我认为这是一个廉价糟糕的解决方案,可能会导致代码错误,但似乎完全有可能这样做.

你能将php翻译成其他语言,比如python或ruby吗?c ++到java等等?

language-agnostic programming-languages code-translation

7
推荐指数
2
解决办法
5144
查看次数

C++到F#顺利翻译

嘿伙计们,我有以下C++代码.

for (int i=0; i < nObstacles; i++)
{
  int x,y;
  bool bAlreadyExists;
  do {          
    x = rand() % nGridWidth;
    y = rand() % nGridHeight;                   
  } while (HasObstacle(x, y));
  SetObstacle(x, y, true);      
}
Run Code Online (Sandbox Code Playgroud)

我可以直接将它翻译成F#没有问题.

let R = new System.Random()
for i=0 to nObstacles do
        let mutable bGoodToGo = false;
        let mutable x =0;
        let mutable y = 0
        while not bGoodToGo do
            x <-R.Next(nWidth)
            y <-R.Next(nHeight)
            bGoodToGo <- IsEmptyAt x y
        board.[x,y]<-Obstacle;
Run Code Online (Sandbox Code Playgroud)

当然,这可能会让你们大多数人感到畏缩,因为这不是F#的意思.这段代码为F#提供了一些"unkosher"概念,例如do-while循环和可变数据.

但我有兴趣看到的是一个带有不可变数据的"适当的"F#转换,以及某种等同的do-while.

c++ f# immutability code-translation

7
推荐指数
2
解决办法
379
查看次数

现代Ada到C/C++翻译

从Ada(95,2005)到C,是否有任何源到源转换器(转换器)?他们有多满(他们可以将Ada的每个功能转换为gnu c99 + pthreads + POSIX)吗?

是否可以在关键应用程序中使用这种ada-to-c转换器?

PS:C++的译员(最多2003年,扩展名为gnu)也受到欢迎.

PPS:当说"gnu c99"时,它仅表示支持C99 +大多数gnu扩展,但不代表GCC.

c ada code-translation

7
推荐指数
1
解决办法
4736
查看次数

有没有工具将Lisp代码翻译成Python?

因为我想使用Lisp的语法和Python的库.

也许像Parenscript这样的工具可以生成Python代码而不是Javascript.

lisp python code-translation

7
推荐指数
1
解决办法
3473
查看次数

Haskell相当于这个Python代码

我在Python之后学习Haskell,我认为创建一个函数可以找到序列中不在另一个序列中的所有项(两个序列都有可以比较的元素)将是一个有趣的练习.我在Python中轻松地为此编写了一些代码:

def inverse(seq, domain):
    ss = iter(seq)
    dd = iter(domain)
    while True:
        s = next(ss)
        while True:
            d = next(dd)
            if d != s:
                yield d
            if d >= s:
                break
Run Code Online (Sandbox Code Playgroud)

(其中两个seqdomain排序)

但是,我努力将此代码转换为Haskell.我相信我只是使用列表(可能是无限的),而不是ssdd,我想我会使用s = next(ss)相同s = head ssss = tail ss,但我无法弄清楚如何我翻译成哈斯克尔.我也无法解决我对这两个while循环所做的事情.我认为我可以使用无限递归,但由于有两个循环我不知道是否需要两个函数或什么.

python haskell code-translation

7
推荐指数
1
解决办法
429
查看次数

从Stata复制种子设置

我试图在R中复制别人在Stata写的一些代码,并试图预测他们的p-RNG的行为.

他们的代码有这个片段:

set seed 123456
Run Code Online (Sandbox Code Playgroud)

不幸的是,它完全是Stata使用的算法有点模糊.这个问题表明它是一个KISS算法,但最终没有设法复制(有些链接似乎死了/过时).而手动从塔塔对于set seed没有提及任何算法.这个问题似乎也没有完成.

尝试复制Stata的随机数是愚蠢的吗?

我不知道使用哪个版本的Stata来创建它.

random r code-translation stata

7
推荐指数
1
解决办法
723
查看次数

将Stata翻译为R:崩溃

刚刚遇到一个.do我需要翻译的文件,R因为我没有Stata许可证; 我的Stata生锈了,那么有人可以确认代码是在做我认为的吗?

为了重现性,我将把它翻译成我在网上找到的数据集,特别是奶制品数据集(p004),它是Chatterjee,Hadi和Price的教科书的一部分.

这是Stata代码:

collapse (min) min_protein = protein /// 
         (mean) avg_protein = protein /// 
         (median) median_protein = protein /// 
         (sd) sd_protein = protein /// 
         if protein > 2.8, by(lactatio)
Run Code Online (Sandbox Code Playgroud)

以下是我认为它在data.table语法中的作用:

library(data.table)
library(foreign)
DT = read.dta("p004.dta")
setDT(DT)

DT[protein > 2.8,
   .(min_protein = min(protein),
     avg_protein = mean(protein),
     median_protein = median(protein),
     sd_protein = sd(protein)),
   keyby = lactatio]

#    lactatio min_protein avg_protein median_protein sd_protein
# 1:        1         2.9    3.162632           3.10  0.2180803
# 2:        2         2.9 …
Run Code Online (Sandbox Code Playgroud)

r code-translation stata data.table

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