用PHP实现/编写的编译器? [或javascript:见编辑]

时间:2014-02-14 11:08:51

标签: compiler-construction

我有一台生成6到11维数字数据的服务器。到目前为止,我有一个文本框,用户可以在其中输入命令,例如OVERLAYDATA SRC =“some / source / uri”COLS = columen,name,等COLOR =(color_min_red ...)(... color_max_blue)这将在openlayer地图上显示带有颜色编码的数据点。到目前为止这么好,一切都很好。在后端,当然颜色编码是通过php生成的,它在网页源中回显一行,这是对openlayer的调用,当浏览器看到该行时,openlayer点对象显示正常。

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

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

显然会有一些其他关键字,例如__datasource,它们将指向编译器本身不需要知道的特定源。

所以我正在寻找所说的编译器,到目前为止只发现了这个:

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

据我了解,如果您在coffeescript中编写脚本并提供正确的数据,后台的php将接受数据,并执行您在coffeescript中编写的内容,并将结果发回给您。

我希望我能够澄清我在寻找什么。

现在的问题是:还有其他类似的软件吗?

编辑1:

因为有人指出这可能导致安全漏洞,我想知道如果首先只访问允许的数据,然后在客户端进行编译(即javascript?)会改变场景并使事情变得不那么脆弱?

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

1 个答案:

答案 0 :(得分:0)

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

如果您为此目的定义了自己的语言,则可以防止这种情况发生。如果需要一组有限的功能,这不是太多的工作。要处理(这里:编译)这种自定义语言,选择"编译器编译器"派上用场吧。我们曾经基于该方法实现过一次复杂的搜索语言。为此,请查看yacc或其GNU对应bison