On 14 Mar, 22:23, Glenn Boysko <[EMAIL PROTECTED]> wrote:
> Here's what I've done (and members of the group may add more insights/
> better ways if they know of them).
>
> First, here's a method I use to parse a JavaScript file into a
> ScriptOrFn node (which represents the root of the file contents):
>
>     private ScriptOrFnNode parseJavascript(File file) throws
> IOException {
>         // Try to open a reader to the file supplied...
>         Reader reader = new FileReader(file);
>
>         // Setup the compiler environment, error reporter...
>         CompilerEnvirons compilerEnv = new CompilerEnvirons();
>         ErrorReporter errorReporter = compilerEnv.getErrorReporter();
>
>         // Create an instance of theparser...
>        Parserparser= newParser(compilerEnv, errorReporter);
>
>         String sourceURI;
>
>         try {
>             sourceURI = file.getCanonicalPath();
>         } catch (IOException e) {
>             sourceURI = file.toString();
>         }
>
>         // Try to parse the reader...
>         ScriptOrFnNode scriptOrFnNode =parser.parse(reader,
> sourceURI, 1);
>
>         return scriptOrFnNode;
>     }
>
> This top-level object represents the root "node" in this file. It
> extends the org.mozilla.javascript.Node class.
>
> From there, you have a rough syntax tree that you can use for your
> analysis of the JavaScript.
>
> To get a textual representation of this syntax tree, you would call
> the toStringTree method (and pass in the scriptOrFnNode as its
> parameter).
>
> Note that in the standard distribution, this returns null. To change
> that, I had to change a constant in Token.java:
>
>     public static final boolean printTrees = true; // was false
>
> Not sure if there are easier ways to do what I have done.
>
> Regards,
> Glenn

Hi guys,

I am rather newbie with Rhino ( as well as with Java ;) ) and trying
to use this nice piece of code above I always got the scriptOrFnNode
== null returned (I switched 'printTrees' to true).

The code I use:

File file = new File("/user/public_html/test.js");

                if (file.exists()) {
                        try {
                                script = parseJavascript(file);
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        System.out.println(script.toStringTree(script));
                }
                else
                        System.out.println("File does not exist ");


It looks as if the parser did nothing, it generates no warning/error
output on stderr as well. Shall I play with the context for
ComplierEnv? How to set the context so that it would neither compile
nor execute the script (all I need is syntax analysis for the code) ?

Thnx in advance & regards,

Szafran
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino

Reply via email to