Javascript 如何使用v8或rhino执行JS语法检查?

Javascript 如何使用v8或rhino执行JS语法检查?,javascript,syntax,Javascript,Syntax,我想使用诸如v8或rhino之类的JS引擎来执行语法检查,而不实际执行代码。使用命令行版本或相应的库可以吗?有什么有用的文档吗?我在v8上取得了一些有限的成功: /* * main.cpp * * Created on: Aug 22, 2013 * Author: kallikanzarid */ #include <v8.h> #include <iostream> int main() { using namespace std;

我想使用诸如v8或rhino之类的JS引擎来执行语法检查,而不实际执行代码。使用命令行版本或相应的库可以吗?有什么有用的文档吗?

我在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;
}
/*
*main.cpp
*
*创建日期:2013年8月22日
*作者:Kallikanzard
*/
#包括
#包括
int main(){
使用名称空间std;
使用名称空间v8;
//
//看https://developers.google.com/v8/get_started
//
//创建堆栈分配的句柄范围。
手柄镜手柄镜;
//创建一个新的上下文。
Handle context=context::New();
//如果需要的话,下面是如何创建上下文的持久句柄。
持久上下文(context);
//输入所创建的编译上下文,然后
//运行helloworld脚本。
上下文::范围上下文\范围(上下文);
localsource=String::New(“函数foo(x{console.log(x);};foo('bar')”);
本地脚本=脚本::新建(源);
持久化上下文.Dispose();
返回0;
}

我希望你们能打败这个基本上是二进制的语法检查器。如果没有更好的方法,我可能会尝试通过捕获异常并尝试使输出机器可读来改进它。

你排除了像或这样的工具的可能性吗?@JonathanLonowski不,他们捕获所有语法错误还是一些语法错误?我不需要styl检查:@jcubic我不需要用JS编写的JS编译器,特别是如果它没有v8或rhino那么好测试的话。@AlexeiAverchenko不是JS编译器,而是JS解析器。但是如果你想使用v8,那么你需要阅读代码并在那里找到解析器。我认为使用解析器编写更简单javascript。