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