2010-04-12 6 views
0

J'utilise rhino et Scripting pour la plate-forme Java afin de permettre à l'utilisateur d'étendre mon application.Obtenir toutes les variables de javascript dans JAVA

Toutefois, l'utilisateur peut écrire certains cas, par exemple (ASTO.value>440) || (ASTO.bellowNormal) etc ... Le problème est que, avant d'exécuter le script de mon application Java à l'aide ScriptEngine je veux obtenir les noms de toutes les variables! Parce que je devrais savoir quelles variables sont nécessaires pour que le script s'exécute ... Je sais qu'une expression régulière ferait l'affaire mais je ne suis pas sûr ... S'il vous plaît, je pourrais m'aider à comprendre l'expression rationnelle Java pour obtenir les variables je voudrais vraiment appriciate .. il

+0

On dirait que vous voulez mettre en œuvre l'Alien Autopsy antimodèle: http://forums.sun.com/thread.jspa?messageID=10337966#10337966 –

+0

Pourquoi pensez-vous que regex est la seule solution? D'autres solutions sont-elles autorisées? – BalusC

+0

ofcourse..toutes les solutions sont acceptées – GorillaApe

Répondre

0

J'ai trouvé une solution cx.getDebuggableView (résultat) .getParamAndVarCount() Mais il ne marche pas renvoyer les variables non déclarées :(

0

Nous faisons quelque chose de très similaire, mais il est écrit dans Scala et je peux seulement vous donner quelques conseils ...

  1. Les tests sont très importants
  2. C'est l'un de nos tests plus complexes: listArg[Math.floor(4/listArg[zeroArg]['f3'])]
  3. Les variables qui décrivent la conception ...

    // chars after which there may be an environment variable used 
    private val NewScopeChars = List('[', '(', '/', '*', '+', '-', ',') 
    // chars that signal the end of a variable name 
    private val SepChars = '.' :: ' ' :: ';' :: ']' :: ')' :: NewScopeChars 
    private val ExcludeStrings = List("new", "Math") 
    private val LiteralPrefixes = "'" :: "\"" :: (0 to 9).map(_.toString).toList 
    

Je vais avoir a problem with performance de sorte que toute aide serait apprécié.

Questions connexes