如何在Jint解释器中解析javascript代码?

时间:2016-09-15 21:49:50

标签: c# jint

我想确保javascript代码是有效的语法:

string test = " var i = 0; ";
Jint.Engine ScrptingEngine = new Jint.Engine();
bool result = ScrptingEngine.Parse(test);

3 个答案:

答案 0 :(得分:1)

您可以使用Execute()方法“解析”您的JavaScript和GetValue()方法来检索值,然后声明它按预期工作。

string test = " var i = 0; ";
Jint.Engine ScrptingEngine = new Jint.Engine();
var result = ScrptingEngine.Execute(test).GetValue("i");
Assert.AreEqual(0, result);

此外,如果JavaScript无效,Execute方法也会抛出JavaScriptException

try
{
    ScrptingEngine.Execute("xx = ss == esfx = fuct()"); 
}
catch(JavaScriptException ex) {}

答案 1 :(得分:1)

调用 JavaScriptParser 怎么样?

Esprima.JavaScriptParser parser = new Esprima.JavaScriptParser(script);
parser.ParseScript();

当您将 Jint 添加到您的项目时,您还会获得 Esprima 命名空间,无论如何,这就是 Jint 在内部使用的名称(如果我正确阅读了源代码)。

然后你可以捕捉到一个 Esprima.ParserException

答案 2 :(得分:0)

如果将脚本添加到对象,则不应运行任何代码。

var myscript = @"
var badFunction = function(){/* please don't run this*/ } 
badFunction ();"

new Engine().Execute("var noRun = {" + myscript + "}");

虽然脚本本身不会破坏对象封装,但无法保证。