0

ユーザーにJavascriptを使用して条件を記述させたとすると、ユーザーは条件を記述してテストを実行し、trueまたはfalseを返すことができます。例えば:

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

ユーザーが作成したスクリプトで使用されている変数を見つけたい。Javaで識別子名を取得する方法を見つけようとしました。Rhinoライブラリはあまり役に立ちませんでした。ただし、例外を処理することで、すべての識別子を取得できることがわかりました。したがって、この問題は解決されます。

ですから、すべてが素晴らしいのですが、小さな問題が1つあります。これらの識別子を数値識別子に置き換えるにはどうすればよいですか?たとえば、INSあるべきであり_234ASTOあるべきです_331

INSなどASTOは私のデータベースのエンティティです。名前が変わる可能性があるので交換したいです。置換を使用してそれを行うことはできますが、これは簡単ではありません。

  1. It should be reversible. E.g. ASTO to _234 and _234 to ASTO again.
  2. Replacing _23 with MPLAH may also replace _234. This could be fixed with regexp somehow.
  3. What if _23 is in a comment section? Rare to happen, but possible /* _23 fdsafd ktl */. It should also be replaced.
  4. What if it is a name of a function? E.g. _32() {}. Also rare, but it shouldn't be replaced.
  5. What if it is enclosed in "" or ''?

I am sure that there are a lot more cases. Any ideas?

4

1 に答える 1

0

パー-本当に必要なのはJavaScriptパーサーです。基本的に、Rhinoの一部を再実装しますが、理論的には、Rhinoに必要なことを実行するためのフックがすでにある可能性があります(私はそれに精通していないのでわかりません)。または、ソースがMozillaから100%利用可能であるため、Rhinoを拡張できます。見るべきもう一つの可能​​な方向はグーグルのGWTです。

于 2010-04-19T01:35:47.607 に答える