0

假设我让用户使用 Javascript 编写条件,用户可以编写条件来执行测试并返回 true 或 false。例如:

INS>5 || ASTO.valueBetween(10,210)

我想找出用户编写的脚本中使用了哪些变量。我试图找到一种在 Java 中获取标识符名称的方法。Rhino 库没有多大帮助。但是我发现通过处理异常我可以获得所有的标识符。所以这个问题就解决了。

所以一切都很好,但有一个小问题。如何用数字标识符替换这些标识符?例如INS应该是_234并且ASTO应该是_331

INSASTO是我数据库中的实体。我想替换它们,因为名称可能会改变。我可以使用替换来做到这一点,但这并不容易,因为:

  1. 它应该是可逆的。例如ASTOto_234_234toASTO再一次。
  2. 替换_23MPLAH也可能替换为_234. 这可以通过正则表达式以某种方式解决。
  3. 如果_23在评论区怎么办?很少发生,但有可能/* _23 fdsafd ktl */。它也应该被更换。
  4. 如果它是函数的名称怎么办?例如_32() {}。也很少见,但不应更换。
  5. 如果它包含在""or中''怎么办?

我相信还有更多的案例。有任何想法吗?

4

1 回答 1

0

Parhs - 你真正需要的是一个 JavaScript 解析器。基本上,您将重新实现 Rhino 的各个部分,尽管理论上 Rhino 可能已经有钩子来做您需要的事情(我不熟悉它所以不确定);或者您可以扩展 Rhino,因为它的源代码 100% 可从 Mozilla 获得。另一个可能的研究方向是 Google 的 GWT。

于 2010-04-19T01:35:47.607 回答