2014-02-14 62 views
0

我有一个服务器,生成数值数据6至11维。到目前为止,我有一个用户可以在命令中给出的文本框,例如OVERLAYDATA SRC =“some/source/uri”COLS = columen,name,以及这样的COLOR =(color_min_red ...)(... color_max_blue),并且这将在透明图贴图上显示颜色编码的数据点。到目前为止很好,一切都很好。在后端,当然,颜色编码是通过php生成的,它在网页源代码中呼应一条线,这是一个调用外层程序的地方,当浏览器看到这条线时,外层的点对象就显示出来了。用PHP实现/编写的编译器? [或javascript:见编辑]

现在我想添加一些进一步的交互性。我想支持用户定义的数据转换。为此,我想象一下,如果有一种语言,它具有编写(即,不编译,但编写了编译器)PHP编译器的编译器。用户可以使用这个(希望简单)的语言来定义像他希望改造

function res = some_transformation(data) 
{ //do some voodoo here 
} 
some_transformation(__datasource); 

显然会有一些另外的关键词,如__datasource,这将指向该编译器本身并不需要一个speciific源了解。

,所以我一直在寻找的说,编译器,发现只有这个至今:

https://github.com/alxlit/coffeescript-php

按我的理解,如果你的程序中的CoffeeScript脚本,和饲料正确的数据时,PHP在背景将接受数据,并执行您在coffeescript中编程的内容,并将结果发回给您。

我希望我设法澄清我在找什么。

现在的问题:是否有其他如此好的软件可用?

编辑1:

,因为它已经指出,这可能会导致安全漏洞,我想知道如果第一只访问允许的数据,然后做在客户端编译会改变(即JavaScript的?)该情景并使事情变得更弱?

如果是这样,那么哪些?我发现用JavaScript编写的C编译器,但这有点矫枉过正。

回答

0

使用现有语言的方法存在的问题是,您必须在后端控制哪些功能是您授予的功能,哪些不是。否则,您会遇到巨大的安全问题,因为您可能无意提供访问您不希望访问的内容的权限。

如果您为了手头的目的而定义自己的语言,可以防止出现这种情况。如果需要的功能有限,这不是太多工作。为了处理(这里:编译)这样的自定义语言,“编译器编译器”的选择派上用场。我们曾经基于这种方法实施了一种复杂的搜索语言。请看看yacc或其GNU对应文件bison

+0

我不知道bison/yacc与php一起工作 - 但是这个:http://sourceforge.net/projects/lime-php/ - 考虑到这一点,是的,我认为我自己的语言,但不知何故 - 原谅这请 - 我觉得它会太俗气。话虽如此,goto和if语句就足够了,还有一个广泛的数学支持,在提交发送操作之前,我可能会使用http://www.phpmath.com/home或math.js注意事项,但我仍然想看看还有哪些其他选项可用。 – Sean

+1

您可以像使用其他命令一样在php中使用bison或yacc:您只需将其称为cli命令并返回结果即可。这工作正常。 – arkascha