简体   繁体   中英

How to perform JS syntax check with v8 or rhino?

I want to use a JS engine such as v8 or rhino to perform a syntax check without actually executing the code. Is it possible with the command line versions, or with the corresponding libraries? Any helpful docs?

I had some limited success with v8:

/*
 * main.cpp
 *
 *  Created on: Aug 22, 2013
 *      Author: kallikanzarid
 */

#include <v8.h>
#include <iostream>

int main() {
    using namespace std;
    using namespace v8;

    //
    // See https://developers.google.com/v8/get_started
    //

    // Create a stack-allocated handle scope.
    HandleScope handle_scope;

    // Create a new context.
    Handle<Context> context = Context::New();

    // Here's how you could create a Persistent handle to the context, if needed.
    Persistent<Context> persistent_context(context);

    // Enter the created context for compiling and
    // running the hello world script.
    Context::Scope context_scope(context);

    Local<String> source = String::New("function foo(x { console.log(x); }; foo('bar')");
    Local<Script> script = Script::New(source);

    persistent_context.Dispose();

    return 0;
}

I hope you guys can beat this essentially binary syntax checker. I may try to improve upon it myself by catching exceptions and trying to make the output machine-readable if nothing better comes up.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM